The Best Software Writing I
Author: Pankaj Kumar
Last Revision Date: 9/22/05, Publication Date: 9/22/05
The Best Software Writing I is a collection of essays and articles on Software, selected, compiled and introduced by Joel Spolsky of Joel on Software fame. Most of articles in this collection refelect the contrarian style of Joel's own writings -- a story telling approach, mixing of humor, preference to simplicity and sloppiness (over complexity and rigor), disregard for the established, and acknowledgement of the diversity (in programing talent).
The art of software development has benefitted more by sharing of experiences, insights and ideas by the practitioners of the art than anything else. And although such sharing has always happened, the Internet has accelerate it by being a catalyst for easy publishing and online discussions where content can not only be made available but also analysed, dissected, commented upon, forwarded and improved upon, causing an exponential growth of the available content. This increase in volume gives rise to another problem -- how to sift through all that is available and being generated eveyrday and find the really good and significant ones? This is less of a problem for the net-savvy who knows where and how to get the most relevant stuff. Or this is what I thought till I lay my hands on The Best Software Writing I, a collection of essays and articles on Software, selected, compiled and introduced by Joel Spolsky of Joel on Software fame.
Although most of the writings included in the collection had already been published online, I wasn't aware of quite a few. And even those that I remebered coming across had not got any serious attention. This in itself is not surprising -- there is just too much content available out there. What was surprising is that I found each of the included pieces to be really great -- some insightful, some thought-provoking, some funny, and some plain hilarious. Not to forget the introductions by Joel, to the complete collection and to most of the articles, which added a whole new dimension to the experience of reading.
As per the introduction, the selection process for inclusion included nominations by the readers of Joel On Software and then finalization by Joel. Though I have not seen the complete list of nominations, going by the final outcome, it is fair to assume that it must have been a fairly tough competition. The final collection, though representing a wide spectrum of topics and perspectives, does refelect the contrarian style of Joel's own writings -- a story telling approach, mixing of humor, preference to simplicity and sloppiness (over complexity and rigor), disregard for the established, and acknowledgement of the diversity (in programing talent).
It is not that all the articles conform to Joel's world view. His introduction to Paul Graham's Great Hackers makes it very clear that he strongly disagrees with Paul's observation that anyone who programs in Java or who writes code for Windows could not possibly be a good hacker. He follows this with his own ideas about great hackers -- those who do something brilliant with a terrible programming environment than someone who won't work on the problems that need to be solved because the solution cannot be expressed in Python.
At other places, Joel's introduction provides a counter balance to certain extreme ideas. For example, Bruce Eckel's Strong Typing Vs. Strong Testing posits that use of dynamic languages such as Python can signficantly boost programmer productivity and loss of compile time validation due to absence of strong typing can be more than compensated by unit testing. Though quite insightful, it has very little discussion on performance implications of a program written in a dynamic language compared to the one written in a statically compilable language. Joel's introduction brings out this point and advises the reader to consider implications of performance degradation due to dynamic type checking for a particular program. In nutshell, know the tradeoffs and make a informed decision!
Some of the introductions bring out the main point of the article very well. Consider this: You don't have to feel bad if you don't understand CORBA and don't quite get what all those WS-* things are all about, because nobody else will, either, and they are unlikely to be important outside of a small niche as introduction to Adam Bosworth's ICSOC04 Talk, which is essentially a reminder of the fact that simplicity and sloppiness tends to win over complexity and rigidity.
One thing I did miss in this otherwise excellent collection is a good article on open source. It is hard to believe that Joel could not find a worthwhile essay on one of the most talked-about phenomenon in the software world. What is more likely is that none of the available writings came even close to his view of what the software industry should be. Afterall, he runs a for profit software company.
Despite this omission, it is a great collection with great introductions. Worth reading.
© 2005 by Pankaj Kumar. All Rights Reserved. You may use the content of this article, including the source code, in your programs and documentation. In general, you do not need to contact me for permission unless you are reproducing a significant portion of the article or code for commercial purposes. For example, writing a program that uses the code for personal or company use does not require permission. Republishing this article, even with proper attribution, does require permission. Similarly, incorporating the code in a program that you sell for profit requires permission.
You are welcome to send me comments, suggestions or bug fixes. I will look into those as and when time permits and may even publish the good ones on this page.
You can contact me by sending e-mail to firstname.lastname@example.org.