Are You a Good Programmer?

If someone asks you to recommend a good programmer, who comes to mind? Do you consider yourself a good programmer? What criteria do you use to judge?

In thinking about this, I realized that there are different ways that a programmer can be good. So I present to you The Four Kinds of Good Programmers. And in celebration of Whyday, I include quirky Why-styled illustrations* for your viewing pleasure!

The Philosopher

The Philosopher

The philosopher loves to write well-defined, well-structured, beautiful code. That the program will be implemented is assumed; the elegance, robustness, and flexibility of the solution is where the philosopher’s energy goes. The philosopher cannot go an entire week without mentioning “best practices”.


The philosopher is ultimately driven by a need for safety and security which is expressed through tight control. A well-ordered, predictable system that always follows clear principles is the philosopher’s beautiful vision of heaven. Chaos is anathema. Beauty is found in order.


  • can build code that you can bet your life on
  • can create an environment where the codebase stays in pristine shape, regardless of the skills of other team members
  • if they build it, it will scale

The Dark Side

  • is always right
  • gets into petty arguments about 80-column line limits
  • cares more about test coverage than customers’ problems
  • is never finished

Pull Their Chain

  • mix spaces and tabs
  • avoid atomic commits
  • sign them up for improv

The Inventor

The Inventor

Something quirky and cool is always coming out of the incessantly prolific inventor’s lab. No one asked for it, but that didn’t stop the inventor from making it.


The inventor is driven by a need to explore and to birth something completely new and unique into the world. Curiosity compels the “what ifs” to actualize.


  • creates novel technology that is (sometimes) useful
  • has infectious enthusiasm
  • makes you say, “Gee, I never thought of using it in that way!”

The Dark Side

Pull Their Chain

  • knock down their ideas by saying, “but that’s not the industry standard”

The Conqueror

The Conqueror

No problem is too hard for the conqueror. To them, programming is an odyssey of increasingly demanding Herculean challenges to overcome. The conqueror is driven and competitive, but not necessarily competitive with other people.


The harder the puzzle, the bigger the rush.


  • can solve provably unsolvable problems
  • sharper focus than a laser, more endurance than a marathon runner
  • is a walking encyclopedia of algorithms

The Dark Side

  • will turn a trivial problem into a complex one to make solving it more pleasurable
  • is always bored

Pull Their Chain

  • assign them work on a CRUD web app
  • force them to use only imperative languages
  • give them a sudoku puzzle book

The Problem Solver

The Problem Solver

The problem solver is goal-oriented and ruthlessly pragmatic. A well-defined problem will be solved, and solved quickly by whatever means necessary.


The problem solver is motivated by creating value, and so is less focused on the creative process and more focused on delivering the desired outcome.


  • listens
  • launches
  • uses technology to solve business problems instead of to create business problems

The Dark Side

  • angers programmer purists
  • can be opportunistic

Pull Their Chain

  • give them busy work
  • assign them programming tasks with no context whatsoever

Becoming a Good Programmer

Of course, programmers don’t neatly fit into these four arbitrary categories. The point is that there are different ways to be a good programmer, and as a programmer, take the time to nurture all four of these types of programmers in yourself. You are a good programmer when, for any given situation, you are able to summon the appropriate “inner programmer”.

* These illustrations may suddenly and unexpectedly disappear at some future date.

You can skip to the end and leave a response. Pinging is currently not allowed.

22 Responses to “Are You a Good Programmer?”

  1. lyuba says:

    LOL “will turn a trivial problem into a complex one to make solving it more pleasurable” – very true
    But I think that there are more types.

  2. Cross says:

    Best article ever… I almost have a name to put on every profile, very nice work!

  3. Oren says:

    A dark side of the problem solver: solves the problem, but creates another one down the road (aka “the pyromanic fireman syndrome”).

  4. techiferous says:

    @Oren, I love the “pyromanic fireman” image. Never heard that before!

  5. Mark says:

    A dark side of the inventor: has a hard time finishing. Since there’s not much more to invent towards the end of the project, it’s too tempting to switch to something else that’s cool.

  6. TVD says:

    @Wyatt: Really good article! It’s both reflective and entertaining at the same time. An interesting follow-up would be to examine, “What Situations Trigger the Dark Side?” and “How best can we support each other to identify and minimize the effects of the Dark Side?”

  7. Stationstops says:

    My definition of a good programmer is one who can deliver whats been asked while minimizing communications and noise, and take responsibility for their implementation.

    One who sees projects as nothing more than a stack of work standing between the team and the next project.

    Software moves so quickly these days, its like fresh fruit, rotting as soon as it hits the supermarket. The next opportunity or problem is likely to not rely on what weve done before, and it always arrives sooner than we hoped.

    So, the old days of the more CS-oriented engineer is waning (although there are still places where their skills are essential) as software becomes more of a toolkit than a discipline.

  8. Edwin Quita says:

    very relatable… thanks for the post! 😀

  9. Mike Pakhomov says:

    Great post! You managed to describe various types of programmers in a very funny way.

    Your definitions are close reality. And I’m close to your philosopher-programmer definition.

  10. Adam says:

    I definitely fall under The Problem Solver but I know at least one person that falls under each category.

  11. Andreas says:

    I guess you haven’t meet Mr. Refactor :-)

  12. blz says:

    What is the best combination for a pair programming ?

  13. techiferous says:

    @Andreas Are you proposing archetype #5, The Refactorer?

  14. techiferous says:

    @blz I have no idea. Good question.

  15. sombriks says:

    Mix Philosopher and Problem Solver, soon they will earn each other characteristics or fight and mutilate till the death, :)

  16. Anuj Kumar says:

    I think I’m the mix of Problem Solver and Inventor. Definitely not a philosopher. :)

  17. Actually I was just writing something on my blog about what is a good engineer.
    for me a good engineer is someone who : if he gets hit by a bus today, work can be picked up after him pretty fast.
    (basically everything is clearly programmed, commented, documented, and history clearly preserved)
    If your company has an engineer that is irreplaceable then there is something wrong :).

  18. techiferous says:


    Great advice. That resonates with me. Feel free to add a comment with a link to your blog post; I’m sure that will be valuable for the readers of this blog.

  19. crazyguy6248 says:

    a programmer will always try 2 get a new problem and solves that…he is always a inventor….

  20. techiferous says:

    Thanks, Wissam! I agree.

  21. D says:

    Let’s be honest with ourselves. The Philosopher is slow and often so confident in his own rectitude that he doesn’t realize his program may suck. The Problem Solver writes unwieldy code to patch the problem for right now. Then the non-sucky programmer who can find an elegant and efficient solution fast is the one who has to clean up his work. There are talented programmers and there are hacks. Many people particularly in IT piggyback on the system or think they are better than they are in reality.

Leave a Reply