I’ve just finished reading Hackers & Painters by Paul Graham.
The book is a mixture of IT-related and non-IT-related chapters. There is an ongoing theme about computing and “hacking”, but the main topic in some of the chapters is not IT definitely. I loved these. He talks about secondary education in the USA, heretical thoughts, distribution of wealth, spam and design. He is insightful and sometimes brilliant. 9 out of 10 for these chapters. I am not giving him a 10 because I have my reservations of his application of blatant neoliberal ideas (as if they were the only alternative) to the discussion of wealth generation.
The really bad news is, the chapters on programming are extremely poor. After reading the table of contents and the first two chapters (on non-IT topics), I was thinking to myself: “well, perhaps this book contains the first serious approach ever to defending open source software”, and “maybe this guy has a chapter as good as this on the philosophy underpinning different programming languages”. What a disappointment! 1 out of 10 here.
Non-IT chapters are rigurously documented (I read all the end notes) and solidly argumented. The chapters on computing, on the other hand, are full of non-substantiated statements and weak arguments. They are nort much worse than the average crappy article you can find on the web, but after the excellence of the rest of the book, it as a surprise hard to bear.
I will give you some examples. The book’s publication date is May 2004, although I assume that some of the chapters were written some time ago. Graham says in the book that he rewrote some of the essays just for the book, though, so I assume that he had the opportunity to fix problems and add updated material on the older chapters. Despite of this, he repeats nonsensical statements like that applications that run on a given operating system tend to be written in the same lenguage as the operating system. Well, that could have been true 20 years ago. Perhaps 10. But not now. Windows NT, 2000 and XP are majorly written in C/C++. How many business applications are written in C/C++? Not many. Most are written in Visual Basic, Java or even Delphi. Odd enough, Graham does not even mention .NET (or anything related to .NET) in his book. How can this be absent from a discussion on computer programming published in 2004?
Near the end of the book, Graham writes about the success of his startup Viaweb. And he claims that the first cause of their success was that they chose a “better” programming language than the ones that everyone else was using at the moment. They chose Lisp. And he correlates using Lisp to being successful, in their case. He goes on enumerating the unique features of Lisp and explaining how Lisp is the best language. Not for him, not for any particular kind of application. Simple, the best. I immediately suspected something: this guy was successful not because Lisp is the best, but because he is very good at using Lisp. And I was right. It turns out that Graham is an expert in Lisp. Surprise, surprise. How come that he chose Lisp? Maybe the fact that he had published 2 books on Lisp helped a little? Perhaps he was still writing the second one when he started Viaweb. But he was definitely into Lisp before that. If he had been an expert in Java, I bet he would have chosen Java and wrote a book explaining how they succeeded because they chose Java, the absolute best language. Of course we tend to choose the tools we are familiar with, and we are most productive with them. Graham himself talks about this in his book. Why then is he trying to convince us that Lisp was the absolute cause of their success? Biased, biased.
The most disappointing passage of the book, however, is “Open Source”, a short section in chapter 10. Graham arguments that open source is better because it has a major difference with non-open source: you get the source code so you can change it if you want to. Come on! I can’t imagine my mom, in a hypothetical open-source-dominated future, saying “well, I don’t really like how OpenOutlook handles my outgoing e-mail, so this afternoon I will rewrite the SMTP engine”. Graham seems a brilliant guy, so I am sure he realises that the vast majority of computer users do not have technical training in programming. For these people, having the source code means nothing. It’s useless. Just a heap of weird text that they cannot understand. Is like getting the electronics diagrams and schematics of your DVD player when you buy it. If you find something wrong or something you don’t like, just grab a screwdriver, a soldering iron, and fix it! Hahahaha! Ridiculous. Graham goes on “You can’t fix bugs in Microsoft Windows because you don’t have the source code”. Wrong. You can’t fix bugs in Windows because you (i.e. the vast majority of computer users) don’t know how to program. Having the source code would not help whatsoever. It gets even more ludicrous some lines later: “…the advantage of open source isn’t just that you can fix it when you need to. It’s that everyone can.” Really? Everyone? My mom included? I’m rolling on the floor laughing. Furthermore, Graham states that open source software has fewer bugs than non-open source because more people has looked at its source code and bugs have been fixed. He does not provide any backing or reference for this. Applying common sense, I would say that many more people have looked at Windows than to Linux, for example. And therefore Windows is much more tested than Linux. These people do not look at the source code, but this is not important. We are talking about the functionality of the operating system, and that’s what people test when they use it everyday in a variety of situations. Another manifestation of this is the huge number of viruses and exploits that exist on Windows as compared to Linux. It is evident, since many more people are working on it, around it and against it. “Given enough eyeballs, all bugs are shallow” may be true, but when applied to the eyeballs of millions of people using Windows, not the people looking at the source code of Linux. I don’t claim this to be an absolute truth, but it comes from common sense and is, at least, an alternative worth considering. Graham does not even mention it.
It seems evident that Graham has fallen into equating “everyone” with “hackers like me”. Reality is different. Reality is that only a small fraction of computer users have training in programming. And of those, only a fraction would be willing to rewrite part of an operating system, even if it is wrong! Graham should look beyond himself and his immediate circle. He has demonstrated capable of doing that superbly in some of the other chapters in the book, and even boasts about taking his brain into unconventional terrain as an intellectual exercise. So why is he so narrow-minded here? Beats me.
Oh, well. I recommend the book. It’s nice reading, refreshing and extremely interesting. Just skip the bad bits.