Making Good Software

A blog by Alberto G (Alberto Gutierrez)

Written by Alberto Gutierrez

January 27th, 2010 at 7:00 pm

Types of programmer, or “why can’t we be friends?”

with 5 comments

I strongly believe that there are only 4 types of programmers, and that some types of programmers are simply not compatible with others. To prove my theory, I first need to introduce what I believe are the two main metrics that define the way we approach coding, planning and sophistication.

  • Planning: The planning metric measures how much time we expend planning before implementing anything.
  • Sophistication. The sophistication metric measures how complex our implementations are. The more sophisticated they are, the more extensible and customisable, but also the more complex. In the other hand, low sophistication, (called pragmatic from now on), prioritizes simplicity over extensibility and customisability.

Taking into account this two metrics, it is easy to deduce that there are mainly four roles that a developer can take to in order to do his/her job; these roles can be appreciated in the following matrix.

Roles_Matrix

The previous matrix probably is not going to raise anyone’s eyebrows, is pretty obvious, but what stroke as a revelation to me is when I realized that developers tend to be only comfortable in one of the different 4 axis of this matrix, and that’s what makes the 4 different types of programmer: The planner, the action hero, the pragmatic programmer and the sophisticated programmer.

The planner.

The planner is the type of programmer that prioritizes planning, in the roles matrix is comfortable only in the first row. As a planner, he might have some preferences about being sophisticated or pragmatic in the designs, but will be open for discussion, in the other hand; the planner will never give up planning up front.

Planner

From my experience, I would say that planners are mostly old school developers, some recently graduated student, and people with waterfall background.

The action hero.

The action hero is the type of programmer that prioritizes getting things done now, in the roles matrix is comfortable only in the second row. As an action hero he might have some preferences about being sophisticated or pragmatic in the designs, but will be open for discussion, in the other hand, the action hero will never give up the getting things done now.

ActionHero

From my experience, I would say that action heroes are mostly extreme agile developers, technical gurus, and junior developers.

The pragmatic programmer.

The pragmatic programmer is the type of programmer that prioritizes simple implementations, in the roles matrix is comfortable only in the first column. As a pragmatic programmer he might have some preferences about planning up front, but will be open for discussion, in the other hand, the pragmatic programmer will never give up keeping the implementations as simple as possible.

Pragmatic

From my experience, I would say that pragmatic programmers are mostly agile developers, and lazy developers.

The sophisticated programmer.

The sophisticated programmers is the type of programmer that prioritizes extensible, customisable and standard implementations, in the roles matrix is comfortable only in the second column. As a sophisticated programmer he might have some preferences about planning up front, but will be open for discussion, in the other hand, the sophisticated programmer will never give up keeping the implementations as sophisticated as possible.

Sophisticated

From my experience, I would say that sophisticated programmers are mostly technical gurus.

Why can’t we be friends?

Have you not ever wondered, “how’s possible that always that I talk with this other programmer I get irritated?” To understand why, it may help you to ask yourself what type of programmers you guys are, because, I’ve found that programmers that doesn’t share any role in the role matrix, are simply not compatible with each other. Practically this means that the following two combinations will have a hard time collaborating.

  1. Pragmatic programmers and Sophisticated programmers
  2. Action heroes and Planners.

Programmers of the same type are likely to collaborate better. Programmers that share only a role will have to discuss more frequently but are likely to get to agreements.

So, what’s the best type of programmer?

The best type of programmer would be the one that can switch role base on a case-by-case basis, but frankly, I haven’t met any yet, as I said previously in the article, all the developers I know are only comfortable in one of the axis of the roles matrix, which is what determines their programmers type.

I also believe that during the development of software, there’s a moment where each of the different roles is necessary, that’s why I believe is good to have a team where the programmer types are balanced.

5 Responses to 'Types of programmer, or “why can’t we be friends?”'

Subscribe to comments with RSS or TrackBack to 'Types of programmer, or “why can’t we be friends?”'.

  1. […] This post was mentioned on Twitter by Fred Beringer, Daryl Walleck, Camille Roux, Nathan Jamin, OlivierBeauvais and others. OlivierBeauvais said: Types of programmer http://bit.ly/awvU3V […]

  2. I dunno, by nature I’ve always been in the ‘Action Hero’ camp of just starting and then iterating, with only small plans for various major features, but recently I’ve started planning ahead and it’s made my life a lot easier.

    Granted I wouldn’t know what to plan *for* if I hadn’t flown by the seat of my pants so often, and I’ve also found my plans don’t account for everything and have to be changed on the fly sometimes, but I think I might start trying to be a new kind of programmer just to see how it works.

    Scarybug

    29 Jan 10 at 1:06 pm

  3. I believe I naviguate through the fourth type of programmer.

    In fact I choose the best method for the project or act I have to do. If it is a one shot program, I tend to be a pragmatic/no planner.

    If it is a program I do for myself, I tend to be a (tiny planner)/sophisticated

    If it is a big long project I tend to be a Über planner/sophisticated.

    If I have to repair a project I didn’t coded I tend to be a pragmatic/no planner.

    I am almost never planner/pragmatic, because, If I plan, I try to make the best I can. And the best I can is always sophisticated.

    In some way, stay in only one quarter should be a proof of inadaptability. Which in programming area can be a problem. In two or three year may be Agile will be better considered than UML/planner. And opposite is true.

    yogsototh

    2 Feb 10 at 12:35 am

  4. I hate pragmatic action heroes in complex applications :)

    But sometimes i can be one, if i’m alone on a small project…

    Lorber Sebastien

    9 Feb 10 at 8:03 am

  5. Very interesting article indeed, I think I’ve certainly seen those types!

    From the above matrix types I have filled each one of those types in different projects.

    You mentioned that you never met the best type (one that could switch between types). Well you have now! :)

    Anhar

    24 Apr 10 at 7:04 am

Leave a Reply