Another goody from IT Conversations: Paul Graham on “Great Hackers”. Here’s a quote:
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 could be the more important of the two.
For example, if your company wants to write some software, it might seem a prudent decision to write it in Java. But if you write your program in Java, you won’t be able to hire such smart people to work on it as if you wrote it in Python. And the quality of your hackers probably matters more to the success of your project 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….
Business types prefer the most popular languages because they view languages as standards; they don’t want to bet the company on Betamax. The thing about languages, though, is that they’re not just standards. If you want to move bits over a network, by all means use TCP/IP.
But a language isn’t just a format; programming languages are mediums of expression…
Now, I’ll take issue with him here a little bit. The assumption behind his argument is that the programming task is best compared to painting or creating a piece of music.
Increasingly, however, it’s more like engineering & can even be rather mechanical. Good engineers don’t get to choose whether they work in metric or imperial units and often don’t have much choice about the materials and many of the dimensions. Their skill is in creating something robust and reliable given the constraints. Ideally something that will be maintainable after they have gone. The world is certainly in a better place with Java as the dominant language for such tasks than it was when COBOL or Visual Basic had that honour, and, much as I love Python, it’s probably not as good as Java for this role.
Artists, on the other hand, are usually loners who can throw off the constraints because they need to accomplish a particular single task. It makes sense for them to use whatever medium they like best, even if, God forbid, that should be Perl. Paul’s book is called ‘Hackers and Painters, so it’s natural that he should concentrate on this aspect. Python is a better language for exploration and invention.
I’ve programmed in dozens of different languages, BTW, and in general Python is my language of choice, because it comes somewhere between the two extremes. But the best artist is one who can choose the optimal medium for his expression. And the best engineer is often one who can create the optimal expression for his medium.
The real danger is that we will only train people to create nice Java boxes that fit together very neatly. This is great for building things that don’t fall down. But we also need people who can think outside the boxes.