A Comfortable Couch

Thursday, August 12, 2004

Great hackers care about productivity

Paul Graham's recent essay Great Hackers (I'd prefer the term engineer over hacker, but whatever) and its follow up The Python Paradox are very interesting reads. In the essays, he talks a lot about the languages and tools that great hackers choose and why they choose them. Python tops his list that great hackers choose. He talks a great deal about its elegance, how nice its looks, etc. But I think he glosses over the most important reason great hackers like to work with languages like Python: Because they can build things faster.

It’s not that great hackers obsessed with building things faster to build them faster. Often they will rail against rushing any part of a project; they'd rather have it done right than quickly. No, they like to build things faster because it lets them build more things. Great Hackers just plain like to build things. Anything that lets them build the same thing faster has great appeal, because then they can build more things, or bigger things.

It’s not like this is exclusive to software development. Consider for a moment great carpenters versus average carpenters. "Average" carpenters will build things because they are paid to, it’s a job for them and little more. If the foreman says to use a nail gun or a hammer, they won't care because either way they put in a day's work and get a day's pay. But a great carpenter will care. He'll care that he's only getting a fraction of the work done by using a hammer as he would by using a nail gun. Oh sure, there are many times when a hammer is the right tool because it offers greater control, and he'll use it on those occasions. But mostly he wants to see his creation built because he likes building things. The more things he builds, the better he feels. His reward isn't so much the paycheck, but the wonderful feeling of creation, of taking raw materials and transforming them into useful things. I know that feeling; the feeling of stepping back and admiring your work and knowing the world is slightly better for it.

You need not be great to have that feeling, but if you don’t have that feeling about your work, then you can never be great at it. For those who are great or aspire to be great, then picking tools that make them productive is important. For everyone else, the tools are irrelevant so long as they get paid.

When developing in a language like C++, it drives me crazy how much hand holding I have to do for the compiler's sake. I feel like I'm using a hammer all day when I could be using a nail gun. I've worked on projects where the level of control and performance C++ gives was necessary, in those cases I didn't mind. But in most development you don't need that much control, it becomes a burden. There are countless technologies that people use everyday for the wrong tasks, I recently was at a company that was building their UI for a Windows product in Java and the server backend in C++, only because that was the expertise their different teams had. I'm guessing they didn't have many great hackers working there.

Great hackers don't use a language because its pretty or elegant. They use it because it lets them work effectively, it lets them builds more things. Great hackers see using the wrong tool for what it is, an impediment to getting something built.


Anonymous said...

D. is it not in the nature of a "hacker" to re-write something for more than efficiency's sake? I liked your blog, but I think it's a little more than this. I got into this "career" because I love to create things from nothing. Sure, I care very much for the "speed" of the application, but there are times when I love to "see" complex code work when others say it's a waste of time. My motto is "Anything can be done....for cheap!!" and that is my approach to programming. Your example of the C++ backend and a JAVA frontend is a-typical of the business model of most businesses; however, the challenge is to make it the most robust system known at that particular business. Challenges, like the one you mentioned are what I "feed" upon. Sure, it may not be pure "clean-room software developement," but nowadays, what is? My point is this, "hacking" is an art and a desire to do something that most would think a waste of time and money. My toolbox is as extensive as yours and what I use is not dictated by speed but more of a challenge.

5:25 PMlink  

Post a Comment

<< Home