Archive for the 'productivity' Category

A New Breed of Programmer

November 30, 2008

Technological breakthroughs can enable new groups of people to compete successfully. For instance, the introduction of machinery in the industrial revolution did a lot to put women on equal footing with men, by reducing the advantage of physical strength. Something similar is happening in programming right now.

Patience, carefulness, and the ability to remember many facts and details were probably essential traits for successful programmers back in the early days of computers. Mistakes cost a lot of time when you don’t have a computer of your own and have to wait for the result until the next day.

After the arrival of the minis and personal computers, every programmer could have his own machine. This made a new style of programming possible, with rapid feedback and continuous experimentation as critical ingredients. Using Lisp you could even alter your programs as they were running. Getting everything right on the first try became less important under the new circumstances, and so the set of personality traits needed to be successful shifted.

The backlash against AI took Lisp and similar languages down with it, and in the mid-nineties almost everyone was using languages that had retained the edit-compile-link-run cycle. At the same time, code bases were growing larger and once again programmers found their workflows interrupted by long periods of waiting; This time not for access to a terminal, but for the compiler and linker to finish.

The arrival of Java and the Web turned the tide again–Java by moving Lisp concepts such as garbage collection back into the mainstream, and the Web by alleviating the need to memorize facts. Once again, the advantages meticulous and detail-oriented programmers had over their peers were reduced.

I think the circumstances have changed so much that the best programmers today are a whole different breed from the elite of the early days. The benefit of being able to keep lots of details in mind is much smaller now that you can find almost anything with Google in just a few seconds, and with new languages and tools that let you try many different approaches rapidly. In fact, I think some of the traits that once defined super programmers may even become liabilities. If you can find detailed information about anything instantly just by knowing the right keywords to search for, then trying to remember everything yourself is wasted effort. Just like a lossy compression algorithm can achieve higher compression rates than lossless ones, a less detail-oriented person has greater free capacity for learning abstract concepts than those who attempt to remember everything.

Productivity and Compensation

October 5, 2008

As in any intellectual profession, the productivity of individual programmers varies wildly. Some say the time needed to solve a particular problem can vary with a factor of forty–or even a hundred!–from one software developer to another. And that is assuming they are all capable of solving the problem at all. I do not know which number is true, or how common the extreme cases are, but I do believe they vary a lot.

So, assuming programmer productivity really does vary that much, what does that mean for the people at the ends of the spectrum? Let’s focus on compensation. I don’t know about other countries, but here in Sweden salaries for software developers don’t vary with a factor of forty or a hundred. No company would pay a programmer twenty times as much as his coworkers, even if he made twenty times as much money for his employer as the average guy. That means the most productive people will never be paid what they are worth, unless they start their own business.

Take Niklas Zennström as an extreme example. He and a partner founded both Kazaa and Skype together, companies that made them billions of dollars. What would their fortunes look like today had they stayed employees?

My conclusion is that if you aim to become a top achiever, you should also start planning for running your own company. Once you are able to produce forty times as much as your colleagues you probably should not be there any more.

It is not only about money–it is about being allowed to use your skills to the maximum, too. I imagine that the more productive you become, the greater the risk of you being held back by bad management or processes becomes.

As for the people at the bottom of the productivity scale, most of them are probably just young and inexperienced and will soon improve, if they care to.