Musings about Coding, Business and other Geek Stuff Live and Direct from somewhere on the planet
July 29, 2004
Geekonomics 101 from Paul Graham

Paul Graham hits the spot another time with an excellent article about what makes Great Hackers. His analysis is spot on in most areas, although as with any hacker he is tainted a bit by his own tastes of programming. I’ll comment on those below.

Motivation

I know a handful of super-hackers, so I sat down and thought about what they have in common. Their defining quality is probably that they really love to program. Ordinary programmers write code to pay the bills. Great hackers think of it as something they do for fun, and which they’re delighted to find people will pay them for.

Great programmers are sometimes said to be indifferent to money. This isn’t quite true. It is true that all they really care about is doing interesting work. But if you make enough money, you get to work on whatever you want, and for that reason hackers are attracted by the idea of making really large amounts of money. But as long as they still have to show up for work every day, they care more about what they do there than how much they get paid for it.

Economically, this is a fact of the greatest importance, because it means you don’t have to pay great hackers anything like what they’re worth. A great programmer might be ten or a hundred times as productive as an ordinary one, but he’ll consider himself lucky to get paid three times as much. As I’ll explain later, this is partly because great hackers don’t know how good they are. But it’s also because money is not the main thing they want.

It is amazing in this day and age that many managers don’t get this. The productivity delta even in a team of 5 is normally incredible and doesn’t even closely reflect the pay that the people within the team make. As a matter of fact I think the traditional model of programmer compensation, which is generally the same as normal paper pushers get, is completely off track. Investment banks for example usually pay out huge bonuses (often in the millions) to their star traders and damn right they should receive those bonuses. But the star programmer who’s written the cool tools to allow the trader to do what he does is treated like shit. (No I’m not talking about me here, but I’ve seen this time and time again in large banks).

Many startups giveout options to their employees and large ones for their star employees. Many a geek has made well with this. The only problem with these options is that they normally have a vesting period. I find that vesting periods for a star geek/hacker can be extremely damaging to the morale.

Imagine you have a 3 year vesting period. You come in from the beginning and work on all the cool stuff early on. Defining architectures, new ways of running the code etc. A year later the project goes live. You feel pride within your geek/hacker heart. The next year you work on putting all the cool stuff in that you didn’t have time to do in the first year. Year 3. Maintenance mode, corporate politics and extreme boredom sets in. All you can do is think about leaving to do something cool again. The amount of geeks I’ve met who’ve gone from talking exitedly about their job to talking about the bastard CEO or the wankers in marketing is astounding.

Why not let the poor guy go and do something different. Tell him that upfront. You will have an enthusiastic geek, who will keep being enthusiastic about you when he inevitably leaves your company for greener pastures. (Hell you might even be able to send him an email 2 years down the line asking questions about the code he wrote 3 years earlier).

I have personally said no to stock options and positions in interesting companies because they attempt to make you stay for ever. If it really is an interesting job the geek will stay. Just look at the various high profile proto geeks who are still at Sun, DEC (sorry Digital, sorry Compaq, sorry HP), IBM and Apple because their jobs were just too exciting to leave.

Tool choice

What do hackers want? Like all craftsmen, hackers like good tools. In fact, that’s an understatement. Good hackers find it unbearable to use bad tools. They’ll simply refuse to work on projects with the wrong infrastructure.

How true. You know when someone just accepts the tools specified from above without questioning that they can’t really know what they are doing. One very large German bank I used to work for used to specify everything in these global enterprise wide forums. One thing is to specify standard deployment servers to ease maintenace and to provide better bargaining ability with app server vendors. But to specify which tools developers must use I think is ludicrous.

As Java developers we are all used to the IDE wars that constantly flame up between bloggers. Remeber the Emacs/VI wars that have raged for years. I remember being forced into JBuilder (aargh) from IBM Visual Age. By the time I discovered IntelliJ I bought my own copy as I had Visual Age years earlier and just used it with little regard for the higher ups. I was just so much more productive I couldn’t give a damn.

Language wars

Which brings me to another often embattled subject - Language choice. I agree in principle with the following:

When you decide what infrastructure to use for a project, you’re not just making a technical decision. You’re also making a social decision, and this may be the more important of the two. For example, if your company wants to write some software, it might seem a prudent choice to write it in Java. But when you choose a language, you’re also choosing a community. The programmers you’ll be able to hire to work on a Java project won’t be as smart as the ones you could get to work on a project written in Python. [2] And the quality of your hackers probably matters more than the language you choose. Though, frankly, the fact that good hackers prefer Python to Java should tell you something about the relative merits of those languages.

I misread this at first and have to admit that it got my back up. Now I’ve read it again and I think I understand better what he is saying. First I thought he said that you wont get any smart people writing Java. Of course he says that smart guys would prefer writing in Python to Java.

That was definitely true even 2 years ago. But what has happened in the Java community is that there has been a complete renessaince recently. I think IntelliJ IDEA and Eclipse have been partly responsible for this. It used to be that Python and Perl were the most creative languages. Java felt like you were stuck running with huge weights on your feet. Now the tools for Java are arguably better than for any other language that exists today.

Perl and Python programmers really only need a good texteditor, a web browser and a shell to be creative. Because the languages are so freeform and dynamic. These new smart IDE’s allow the same creativity and in some ways more. I used to live and breathe Perl and have also done a fair amount of Python (in a vague attempt to merge the Perl and Java world). I now find it a pain when I have to go back.

How can you see this change in practice. Well Java is now the place in the Open Source world, where most innovation is happening. Just look at something like CodeHaus to see what is going on. Like in the Perl and Python world, not all is good. But that is not the point. There are so much choice for each kind of library or framework that you can tell that all the alpha type hackers are there and busy.

Look how all the boring crappy enterprise frameworks such as EJB are being shunned and superior hacker created alternatives like PicoContainer and Hibernate are slowly taking over.

Also look how scripting languages such as Jython, Groovy and JRuby are being integrated with Java in the areas where the hackers still feel the need for freeform ascii thought processes.

I still remember with joy the huge applications I wrote 8 years ago at AltaVista in Perl and I’ve been in love with Twisted for Python ever since I first laid my eyes on it. But for now I’m working in Java as that is where I’m most creative.

Economics

Variation in wealth can be a sign of variation in productivity. (In a society of one, they’re identical.) And that is almost certainly a good thing: if your society has no variation in productivity, it’s probably not because everyone is Thomas Edison, but because you have no Thomas Edisons

I am so in agreement with this. Every kind of economic process is based on somesort of inequality and that IS good. Marx tought us that inequality is bad. Any kind of transaction involves an inequality, but not the kind that Marx thought. I am a good coder and my CEO isn’t. My CEO is good at fund raising I’m not. That is an important inequality. Together we have some common goals that we can reach through our inequality. Society as a whole is like that, of course on a much more complex level. It is good and it is healthy.

Posted by pelleb at July 29, 2004 11:57 AM
This entry was posted in the following Categories: Open Source
Comments
Post a comment
Name:


Email Address:


URL:


Comments:


Remember info?