Oct 29, 2007

Are You A Programmer or a Developer?

Most people would say that a programmer is a developer and a developer is a programmer; and for those of us who write code for a job when asked to describe ourselves, we'd be comfortable using either term depending on the mood we're in.  Most people would think that there's no difference and even if there was I'd have to be nitpicking to find it, right?

Both terms describe someone that writes and maintains software. But if we take a moment and think about this, there's more to creating a software product than just applying technical training.  Why is it that some software is fantastic, some is OK and some is downright horrid?  Why is that some people can product fantastic code that's bug free, easy to maintain, a pleasure to use and exceeds expectations while other people, filling exactly the same role, can produce abominations that tear at the very fabric of space and time and should never, ever, under any circumstances see the light of day?

Is it intelligence?  Is it training? Is it the tools?  Is it management? Is it something else?

I'll scratch intelligence from the list right now.  I've seen people of average intelligence produce great software and I've seen really smart people produce unmitigated rubbish.

I'll also remove training and tools from the list.  Go into any workplace and you'll find people with the same training having wildly different results.  You'll also find those same people using the same toolset.  So let's scratch that as well.

Maybe it's management.  Maybe it's something else.

Here's some 5 characteristics I find strongly evident in people I would call programmers:

  1. Enjoy writing code
  2. Have good technical skills
  3. Turn a design into working software
  4. Very task focused
  5. Stay current with new developer technologies and enjoy using them

Now compare this with the characteristics strongly evident in people I would term developers:

  1. Want to deliver software they can be proud of
  2. Want to keep their customers happy
  3. Understand the non-technical factors of what they do
  4. Very goal focused
  5. Stay current with technologies

There's quite a difference between the two, and to me the difference can be summed up with two words: Perspective & Attitude.

A developer looks at things from the customers point of view and tries to come up with the best solution for the customer.  A programmer looks at things from a technical point of view and tries to come up with a solution that the programmer finds pleasing.  The developer is outward looking, while the programmer is inward looking.

I believe that having a customer based point of view makes a whole world of difference in producing software that meets the needs of the customer and ultimately it's pleasing the customer that ensures they use your software, and call it successful, and invite you back to write more.

What about Attitude?  I think that Developers on the whole take a much more pragmatic approach to problem solving.  They realise that there is no correct solution, that there are usually a multitude of ways to peel the potato, that the latest and greatest developer tools may not be suitable for the task at hand, that all development is inherently risky and that their one and only measure of true success is their ability to produce working software of high quality, delivered on time and enjoyed by their customers.

Programmers on the other hand seem less inclined to pragmatism.  The desire is more towards writing the perfect code, the ultimate algorithm, the most ideal technical solution using with leading edge tools and integrating with all the latest buzz-toys they know of.  If there's a shiny bauble to be added, add it.  If you talk loud enough and passionately enough, you can convince the customer they need it and hang the risk and hang the cost.  And if this thing doesn't ship on time then it's the project managers fault for letting the customer get away with so much scope creep (I hope you see the irony there).

I believe that the days of the programmer are numbered.  Companies want to hire people who create great working software not people who think each project is another excuse for learning new stuff and that never deliver on time.  Customers want to buy software that works as expected and meets or exceed their needs.  They don't want technical wizardry, stuff they don't need and they definitely don't want to be a guinea pig for some in-disguise R&D program.

When I hire people I look for the Developers not the Programmers. When I work with people, I choose to work with the Developers not the Programmers.  And when I need advice I ask the Developers not the Programmers.

 

If you write software you're either a Developer or a Programmer.  Which one are you?

 

Comments welcome.

5 comments:

  1. Hi Richard,

    In typical job interviews for jobs which advertise for "developer/programmer" you typically get met with questions that a programmer can answer but a developer cannot, you know, the inner workings of some interface that your expected to know off the top of your head. Good programmers, I mean, developers don't work like that IMHO.

    G

    ReplyDelete
  2. I agree. Who needs to rote learn and API or the .NET framework when there is something like the MSDN library available (or Google for that matter).

    And even if someone does know the entire .NET framework, it doesn't mean that they are any good at applying that knowledge to development tasks.

    ReplyDelete
  3. Nice post Richard. I think you're spot on with this. Are developers just programmers that have grown up do you think? The ones that know they're not perfect but are comfortable with criticism in order to improve as opposed to the sulkers and egoists which can make you feel uncomfortable approaching.

    As developers we've always got to remember that if business can find a cheaper, more efficient way to solve it's needs, it will. Technologists exsit to solve business problems not show everyone how smart they are.

    ReplyDelete
  4. Excellent post!

    I'm a developer, and I work with a programmer that shares my formal job title. He can code circles around me, and I'm playing catch up trying to learn everything he knows. But, when it comes to apps design, usability, readable reports, I'm your man....er.....woman.


    In my opinion, developers are programmers that realize that knowing business is equally as important as knowing technology.

    ReplyDelete
  5. Just as the commentators above noticed, the programmer and the developer are roles, and are not mutually exclusive. Usually one starts as a programmer but in time gains also the skills of the developer.

    ReplyDelete