Death of the Single Developer?

Posted June 16, 2009 by developnorth
Categories: Single Developer, Software Development

I was reading the following article in InformationWeek and I was struck by the following quote:

 “The cliché of the solitary coder is dead.”

The article goes on to talk about a number of Corporate IT application development groups that have done some pretty phenomenal things for their companies. 

This is a subject near and dear to my heart as I am the IT department at my day job and I am the only developer for my business.  I can categorically say that in my day job, it is certainly not by my choice. 

Is It Possible to Deliver Great Results By Yourself?

I don’t know – I think it depends on the developer.  I can say that in my twenty plus years of IT, the amount of stufff you need to know has grown tremendously.  For the applications that I typically develop (your based Create Report Update Delete – CRUD applications – and yes some of them are just that), here’s a short list of what you need to know:

  1. Database/Table Design
  2. Object Oriented Design
  3. User Interface Design
  4. Requirements Gathering
  5. Application Development tool
  6. Testing
  7. Implementation/Installation Packaging

Notice I didn’t even get into the application development tool of choice or platform – Web vs. Windows.  This is a pretty steep learning curve for anyone.  A person can become a master in any single topic I listed and still not know everything.  I find it ironic that while a development tool like Visual Studio .NET can make you more productive because many of the things you might want to do are part of the .NET framework, it is so huge that it seems like an endless task to figure out how to do what you want.

Is It Desirable?

I don’t know;  I have mixed feelings about that.  As a developer, I love owning the application and being able to point at it and say “I built that.”  That’s on the good days when everything is running as it should.  On the days that there seem to be more new bugs than lines of code in the system, you want to hide in a cave, lest the users arrive with pitchforks and torches…

But the practical reasons that it is not a good idea are:

  • All the knowledge of the application is embedded in one person’s head.  I don’t care how well it’s documented, there’s stuff that someone will want to know quickly that is very difficult to extract from a source code listing.
  • There is no second eye for design choices.  It is that person’s design, warts and all.  While I don’t recommend design by committee, having other resources to assist in the design phase will certainly create a better product.
  • The pressure to get it done can override a developer’s natural (or unnatural) tendencies to follow good development practices.  Sara Chipp wrote an excellent description of this phenomena here

Is It Really The Death of the Single Developer?

In a word, no.  For one very simple reason: COST.  Many small and medium size companies (even if they are part of a bigger corporate parent) can’t justify having a team of programmers.  These companies always need someone to develop something that works exactly the way the business works.  As much as the big software vendors like to throw everyone in the same functionality pool for their applications, truth be told, each business is unique.  It has a unique structure, culture, and institutional history.  All that stuff becomes the DNA of their business processes.  And as a developer it’s your responsibility to turn that DNA into something – hopefully not a genetic mutant hell-bent on world domination…

Can a single developer do that?  The answer is…it depends.  If the company realizes all of the things that a developer can bring to the table and is willing to invest in that developer in terms of training and decent tools to do his/her work, it might just work.  The developer does have to be linked into the business and know what’s happening.  He/she has to be sensitive to the business climate, really understand what it is the business wants from the developer, and have his/her pulse on the work going on out on the floor.  Likewise, the business needs to listen to the developer when it comes to what’s needed to accomplish a project in terms of time, money, resources (not necessarily other developers – users too!), and respect the developer’s technical decisions and expertise.  If the developer says “If we don’t start to rewrite this critical business from Visual Basic 6 to a .Net platform now so that it will run when we migrate to Vista/Windows 7, we are going to be dead in the water”, you might want to listen to him/her, instead of (figuratively) patting him/her on the head and saying “That’s nice. When’s the next release?”.  If you find a company like that, please let me know…

However, in many small shops, the developer is also the Server Admin, Network Admin, PC Hardware and Software Support, and Printer Repair person.  Now take that list from above and then add everything you need to know to support THIS list of duties and I fear that the majority of people’s heads would explode at the amount of knowledge needed.  And end result?  I think it’s safe to say that the company gets exactly what they paid for – a jack of all trades, master of none.


 I still think it’s possible for a single developer to succeed.  While the single developer has many hurdles to clear that aren’t found in a development team, there are two things that the single developer and the development team both need to succeed – a clear commitment from the business to support the development team and excellent communication between the team/single developer and the business.  If I ever can find a company like that, I’ll let you know!

I Fought The Law…

Posted May 4, 2009 by developnorth
Categories: Morale, Uncategorized

Well, I did it. I talked to my manager today about how unhappy I am in my job, particularly about the lack of training. Before I tell you how it went, a boring digression: 

One thing I neglected to mention in my previous post is the gradual erosion of IT resources since I joined almost five years ago.  Towards the end of my first year, my manager (who also did IT project work ) left the company…and they didn’t rehire anyone to fill the role in IT.  I’m sure the headcount where somewhere, but I don’t know for sure.  Then, three years ago, my co-worker was outsourced to another company.  He’s now responsible for the PC’s, servers, and network (for which he was already the primary support person) and I inherited about 40 % of his job (and got rid of precious little).  So I now have the work of two people.    Then, to top it off, I have now been asked to answer any PC related questions if someone calls/pages me instead of calling the Help Desk (that we pay for with each PC).

Not getting my training and hearing that someone else was approved for elective training made me blow my stack last Friday.  Fortunately, I didn’t talk to my boss because I was VERY angry.  So after committing myself to do it in the blog last night, I had the discussion with my manager today.  I let him know I was very upset about what I found out on Friday and said that as a result, I felt like what I do must not be valued and that I felt set up for failure (I had said this to him over a year and a half ago).  He dismissed how I felt, but miraculously, the money has been approved.  I don’t have the actual training yet because I’m having problems getting hold of the vendor (curse you companies that refuse to put phone numbers on your websites!  People still need to TALK sometimes!), but it’s going to happen.

I feel a little better because it’s off my chest and I’m finally getting the training.  But a part of me knows that nothing else is going to happen and I’m still going to feel unvalued and set up for failure.  I was thinking today that if I was a manager and one of my reports came to my office and said what I said, I would be floored and try to move heaven and earth to get to the bottom of what’s happening.  I’m making a vow that if I ever am successful enough to have my own company (because I’m sure not getting  a promotion here), that I would listen to my employees and at least consider how they feel.  If someone is that unhappy, something is seriously dysfunctional…which is a good description for how things are.  I’m sure this will come back to haunt me in my performance review, but I had a very small win today.

Sometimes, that’s all you can expect…

When The Going Gets Tough…

Posted May 4, 2009 by developnorth
Categories: Uncategorized

As I have mentioned before, I have a full time day job. I’m the IT person for a manufacturing plant. I’m not responsible for the PC’s, servers, and network, but everything else is my responsibility. Part of that includes our ERP system…not SAP. It’s a smallish ERP system made for our industry type and it’s built on the Progress database engine. I know SQL and Progress is most definitely NOT SQL in it’s native setup.

Since I got assigned responsibility for this application two years ago, I have been asking for training in Progress. There are no books you can read (at least I can’t find any), your only choice is a training class or a web class. Either way, you have to pay.

Last year, I wasn’t allowed to go because I was working on a critical critical, it was cancelled a month later. When the next Progress courses were offered, I couldn’t go because of a travel freeze – although others continued to go. I asked about getting the web classes since that wouldn’t require travel and…nothing happened.

So I ask AGAIN, this time for web only. I get the OK, but there doesn’t seem to be any money now. However, someone else in my group (non IT) talked to the Plant Manager and will be going for not one, but two ELECTIVE classes.

So what do you do?
a) Pretend you don’t know and don’t make any waves. The economy is bad – you want to keep your job.

b) Layout your feelings and try to understand the seeming illogic behind it.

c) Rant and rave and make a big stink.

I’m planning to try to to avoid C)  – although I have to tell you that on Friday, I might very well have done that. I avoided my manager because I was afraid that if I said anything, I might regret it.

Tomorrow though I have to address this. It feels to me like IT has no value whatsoever to the organization based on what has happened in terms of resources and assignments. This just seemed to confirm that to me. I’m going to stand up for myself and tell them how I feel. I’m not sure it’s going to do any good (and if pass performance holds true, this will come up in a negative way in my performance review), but to quote R.E.O. Speedwagon, “I can’t fight this feeling any longer”.

Look, I knew that IT would never be REALLY important to the manufacturing plant, but I figured wouldn’t be least important. I don’t know how this is going to play out, but I’ll keep you posted. Wish me luck when I talk to my manager on Monday…

Crisis of Confidence and Motivation

Posted March 25, 2009 by developnorth
Categories: Morale, Single Developer, Software Development

“You fall for reality,
You’re bruised and defeated,
Then you learn to fall in love with yourself.
That’s motivation”

“That’s Motivation” – David Bowie, from the movie “Absolute Beginners”

It’s been one of those weeks where I feel I’m tottering between brilliance and stupidity.  This is one of the hardest parts of being a solitary developer.  One minute I’m feeling great because I’ve done something I didn’t think I could do, the next, I can’t figure out something that I should easily figure out.

Although I’ve been developing for 13 years now, I’m old enough that I missed out on object oriented development in college and I’m now trying to play catch up.  In my own development project, I’m working on a basic Windows application talking to a database.  It should be straight forward, but I seem to be complicating it for myself.  And I find myself constantly rethinking what I’m doing  – should I use the basic DataConnectors or should I look at making it object oriented?  Should I be doing Object Relational Modeling?  Should I use Access, SQL Server Compact, or Sqlite for the back end database?  All the while I feel like I’m spinning my wheels and redoing work I’ve already done.  Or spend a lot of time on something and scrap it and take a different approach.

This is one of those times when I desperately wish I had an other developer as a reality check and guidance.  So when faced what seems like an endless task, how do I get enough gumption to get going on my development work?

Here’s how I do it:

1) Blog about my troubles– If I get my troubles and feelings down in actual words, they stop rattling around in my head and distracting me like shiny little toys.  Also, feedback from the blog might also point me.

2) Step back and break what I need to do down into tiny tasks – My biggest problem with this step is having enough continual time to look at what I need to just build a to-do list that I can whittle down to nothing.

3) Let it simmer and come up with “brilliant ideas” in the shower and the drive to work – I sometimes comes up with my best ideas here.

4) Just keep swimming – Dori’s mantra from Finding Nemo is a good plan.  You got to keep moving because stopping can be death, especially in development.  Keep moving.  Keep trying something, anything.  Eventually you will figure out what works for you.

So I’m going to make some definitive choices (at least for now) and break this project down into bite sized chunks.  I think I’m overcomplicating things and I really should just evolve back to the KISS (Keep It Simple Stupid) method.

Wish me luck!

“I’ve nothing much to offer,
there’s nothing much to take,
I’m an absolute beginner,
but I’m absolutely sane.”

“Absolute Beginners” – David Bowie, from the movie “Absolute Beginners”

Army of One

Posted March 9, 2009 by developnorth
Categories: Single Developer, Software Development

If this is your first time here, I should say that I am the lone software developer in both my day job as well as in my company.  This is both a blessing and a curse.  It’s like what Uncle Ben said in Spiderman “With great power comes great responsibility”.

What’s Great About Being a Single Developer
-You pretty much have the ability to do whatever you want.  If you don’t want to follow a methodology, you don’t have to!  You can build the system any way you want.

Ownership – You own the application.  You know its ins and outs, all the dark places with the twisted code that you took you forever to get right.  It has your stamp on it.  It’s your baby.

Pride – When it’s working and doing exactly what it’s supposed to do, you can sit back knowing that you were the one and only person responsible.  You can enjoy the kudos that your application receives and you think “Man, I’m a great developer”

What’s Horrible About Being a Singe Developer

No Guidance – When you start a project, it’s a little like being pushed out of plane (with a parachute…most of the time) over some wilderness.  When you land, you have to find you’re way back to civilization.  If you’re lucky, you know the terrain or at least have a compass.  Other times, you feel like you’re stuck in the wilderness, just struggling to survive until you can find a trail that will send you back to civilization.  And since you’re alone, there aren’t even kindly strangers you can ask on your way.

Responsibility –   You own the application.  But suddenly, instead of being the paragon of software development, it’s started acting like Frankenstein’s monster crossed with HAL.  And it’s ALL…YOUR…FAULT.  Remember that twisted code in the dark places of the program?   You get to fight that monster all by yourself.

Demoralizing– When you feel like the bug reports are coming in at a rate greater than you could even create them in the first place, you’re saying to yourself “How could I have missed that?”.  With each new bug report, error, or complaint that it doesn’t do what the user wants, you begin to think “Man, I am the worse software developer in the world!  Maybe I should take up a different line of work…”

So Is It Good, Bad, or Somewhere In Between…

My personal feeling it’s neutral to somewhat bad to be a single developer.  The biggest problem for me personally is not being able to bounce ideas off anyone else.  And when you’re treading new technical ground (at least for yourself), it can be frustrating and demoralizing.  When I went to college, object oriented programming was not widely used in industry.  Now, I find myself playing catch up.  I’ve been working on learning object oriented programming because I’m work in languages that require it.  But there are lot’s of things I don’t understand.  I need a mentor or at least someone I can go to for advice.  That’s one of the reasons for this blog; not only is it my chance to document my learning, but to make contacts and learn myself.

Another reason I think that being a single developer is tough is that you can get pegged as being someone who wants to work by himself/herself and can’t work in a group.  I’ve had two interviews where I was asked if I could work other people.  I didn’t get either job, so I have no idea if that was part of the reason or not.  But in my heart, I think it was a factor.  In both my current job and my business, I would LOVE to not be the only one.  But management at my job decided otherwise and I don’t have the money to pay anyone else. 

So Now What?

I plug along.  I follow the best advice I can get from the Web, from books, from magazines, just about any source I can find.  I look at new technologies (.NET with LINQ, Windows Presentation Foundation), new methodologies (Agile), and just good old rules of thumb and I try to adapt them to my own use.  I really think that someone should work to adapt some of the widely used methodologies like Waterfall (yes, I know it’s evil) or Agile and strip them down to what’s manageable to a single developer.  Because I’m sure that I’m not alone out there.  I’m sure there are many developers stuck by themselves, either at a regular job or their own business endeavor.  It can be lonely out there, but to me, in the end, the result is the reward.  Seeing that shiny application in use and hearing a heartfelt thank you from the user is the best result.

In the beginning…

Posted March 4, 2009 by developnorth
Categories: Miscellaneous

So this is it, the first blog post.  I could try to come up with something really witty and astute, but I’m having trouble with that.  So this is what you get instead.

So what’s it all about? I’m hoping Develop North will document my opinions, (mis)adventures, rants, and learnings on trying be a lone software developer in a rural area.  I came up with the name “Develop North” for two reasons:  1) I live in Upstate New York and went to a college about as far north in New York State as you can go before you’re in Canada, and 2) it’s supposedly a clever tie to the name of my software company, Cynosure Software (cynosure means something that acts as a guide; it can mean the North Star or Ursa Minor.  Go ahead, look it up in the dictionary…I’ll wait).

I have a day job as a Systems Analyst for a Fortune 500 company as well as my company.  In both jobs, I’m the single application developer guy which presents its own set of challenges.  I’m hoping to document (and rant about) some of those challenges, things I’ve learned, things that tick me off, and anything else that comes to mind.

So I hope you stick around as I embrace the blogger lifestyle and I look forward to conversations with everyone.