Measuring the Greatness of Programmers

What makes a great programmer?

In essence, a great programmer consistently writes good code, fast. Ok, begging the question. Good code is flexible, structured, configurable, succinct, easy to maintain, and free of obvious bugs. (As no one is perfect, no code produced by one person can be completely bug-free).

So that’s the definition. How to measure the greatness of a programmer? Therein, dear reader, lies the rub. Code is the most abstract of all output. At the most basic level, of course, it either works or it doesn’t. But in itself, code is abstract precisely because it’s an abstraction, like maths. (In fact, it is maths - it comes under “discrete structures”).

In order to understand this further, let us compare programming with other types of endeavour. The most extreme end would be assembly-line kind of work. Everybody does the exact same thing in the exact same environment: Paul’s defect rate is 10 in 100, John’s is 15 in 100, and so on. Or: Paul can produce 100 widgets an hour, John can do 90 per hour.

Moving along the spectrum, there are types of work for which the output can be measured using a very clear metric, although no two environments are exactly the same. Sales (x number of closed deals per quarter), marketing (x% increase in market share year-on-year) and business (x% return on investment) are the most obvious examples.

It’s a bit harder to measure to any exact degree the greatness of lawyers, doctors and engineers, but still there are yardsticks. It would be number of cases won, number of patients treated, and number of projects completed on time and on budget, respectively.

Now, surely computer programs do have units of measurement of greatness, so to speak, no matter how approximate? Let us examine the usual suspects.

Lines of code? No.

Number of functions? No.

Number of bugs? Speed? Number of satisfied users? Herein, dear reader, lies another rub: By definition, no two software projects are the same; neither are two programming tasks within a software project. Similar sets of requirements would mean that the same software could be used for the other project, just modified a little bit, or even better, configured differently via a config file. It also wouldn’t make sense to give two programmers the same kind of thing to do, as it would lead to duplication of effort.

So that’s why nobody has yet to find a bulletproof way to do it: there is just no way to compare two programmers in any objective manner in real life, because their projects would be different, or their tasks would be different.

So how would we say that Paul is a better programmer than John?

Well, Paul seems to consistently be able to write better code than John, and faster. That’s what they all say, anyway.

16 July 2008 | Software engineering | Comments

5 Responses to “Measuring the Greatness of Programmers”

  1. 1 Programmer 16 July 2008 @ 1:13 pm

    doesn’t make any sense.

  2. 2 mang0 16 July 2008 @ 4:21 pm

    Upcoming Hack Day will show who is the good programmer in Monster :p

  3. 3 Programmer #2 16 July 2008 @ 4:34 pm

    Sure it does make sense. But he is not telling us anything new. You should better write it right from the start that there is no solution to the problem (in your opinion) and that you agree to well established view.

  4. 4 Programmer #3 16 July 2008 @ 11:55 pm

    All these yardsticks share the same common theme. They define “success”. A lawyer is sucessfully when winning lots of cases, a sales person by making lots of sales. A front end mfg working by completing x widgets in y hours

    The fundemental problem applies to all jobs. If Paul makes 100 widgets and hour and John only does 90. This does not make Paul greater then John. Even if Paul and John do the exact same job. The environment is still different. The stresses on John are different then those of Paul. What if the line moves at different speeds for John and Paul a factor out of control of the worker?

    You can only compare apples to apples. (ie: You can compare John’s work last week to John’s work this week, or next week, or next month). You can measure improvement for a person overtime.

    The “best” programmer doesn’t happen overnight. If you look at a top programmer you will see constant, accellerated improvement over time.

    Now someone can be known as the “top” in the business, “the greatest programmer in the world”, but that title is not earned by greatness, it is earned by popularity which has nothing to with true “Greatness” at all.

  5. 5 The Zik 18 July 2008 @ 6:41 pm

    As someone who uses the services of freelance programmers often, the best are the ones who codes with minimal bugs and quick turn-around time in solving my clients needs, never you mind how famous he (the programmer) is. That’s the best in my point of view.

    Oh, and Rizal of course - not just because i still owe him that money for that other project a while back…

Comments:

  1.  
  2.  
  3.