Making Good Software

A blog by Alberto G (Alberto Gutierrez)

Written by Alberto G

April 18th, 2009 at 1:14 am

The two main skill sets of a software developer

with 2 comments

A lot has been written about the differences between Software developers and Programmers, two opposite examples on this subject would be:

  1. Eric Sink from Eric.weblog() says that that there are two types of professionals, the Software developer and the programmer.
  2. Raymond Lewallen from says that conceptually Software developer and programmer are the same.

Well, I believe they both are right:

Software development teams should be flat organizations, that means that there should be just one role in the team, the software developer, (or whatever you want to name it: programmer, engineer..). This will align with Raymond’s article.

The Software Developer has two main skill sets, Programming Skills, and Relevant Non Programming Skills. This will align with Eric’s article.

In summary:

  • The Programming Skills tell us how good a software developer is designing, coding and testing.
  • The Relevant Non Programming Skills tell us how good a software developer is finding risks, understanding requirements, coaching other peoplefacilitating work in the team, planning…

Relating this with my previous article about inputs, outputs and actions, The programming skills will help creating better outputs, the Relevant non programming skills will help creating better inputs and actions.

The programming skills are taught at school, so you can’t expect from junior developers good Non Programming Skills, senior developers are almost guaranteed to have good Programming Skills, but not always good Non Programming Skills, that’s why those are the ones that usually set the difference between two senior developers.

A team needs a balance of these two sets of skills, ideally the team will have one or more leaders which will have outstanding skills for both skill sets, these leaders should coach and facilitate the other software developers work if they are seniors, or babysit them if they are juniors.

Software development teams should be like flat mini organizations where decisions are taken in an agile manner. In a healthy work environment developers with better skill sets should get the promotions, and they should be encouraged to act as coaches and facilitators and their authority should be earned rather imposed.


This is part I of II articles, in the next article we will discuss about the professions that better match with software developers based on the different skill sets,  (I am sure they will surprise you),  so stay tuned!!! (There’s a subscription link on the right navigation bar in the blog)