This is part of an attempt to read way more books over the course of a year than I ever have before.
The official title of this book on Amazon is Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity . You might be able to guess from that that Joel has a bit of sense of humor that shows up in his writing. Who is this Joel? Joel Spolsky is a developer, project manager, ex-paratrooper for the Israeli Army, ex-Microsoft Project Manager who runs his own software company in New York City. He has very strong opinions about anything he’s passionate enough to write about and from his long time as a programmer dating back to his days in the early 90’s at Microsoft and Juno has witnessed many of the changes in the software world firsthand.
So what’s the book about? It’s actually a collection of postings from his website, Joel On Software packaged in a much more easy to read form. According to his site, the articles that appeared in the book also went through an editing process to clean them up. Basically though, anything learned from the book can also be learned from Joels website archives as well, which date back to 1999. It’s hard to go into detail about what’s covered in this book. You could think of it as both a developers and a project managers handbook for anything and everything you might deal with in the software profession.
The book is broken up into short, easy to read chapters (blog posts) which are categorized into larger sections (dubbed parts). Here’s a little information about each of the parts.
Part 1 (p1-150) is called Bits and Bytes: The Practice of Programming . This encompasses so much universal information regardless of what language you’re working with that it’s impressive. Steps to writing better code, Unicode, Spec writing, schedules, prototyping and bug reporting are a few appropriate chapters. One characteristic of Joels writing is creating new terms and writing chapters about them (or using terms from elsewhere and applying them to programming). For instance there’s a chapter about Fire and Motion the practice of keeping people occupied with one thing so you can work on another.
Part two (p151-212) is about Managing Developers . This goes from the interviewing process to QA testing to incentive pay to the pain that is context switching. These are the types of problems that developers have but often either don’t realize or don’t have the voice to make any noticeable change in the organization. It’s difficult to pinpoint a problem sometime when you see a leak, but these chapters highlight them.
Part Three (p213-312) is a series of Random Thoughts on Not-So-Random Topics facing software developers. One that stuck out for me was about the economics of open source detailing why large corporations invest money in developing open source software. It’s the answers and discussion in side articles like these that fill in gaps in the way I thought about the software field that I didn’t even know I had. The entire last part of the book up until the appendix is about .NET, what’s good and what’s bad about it and all the gripes Joel has with it. As someone who’s never worked with .NET and does not build desktop software, it was an interesting introduction to that world and it’s problems, but beyond that I didn’t get too much out of it.
The biggest draw to this book for me has to be how clear cut the examples are. Whenever a topic comes up that is stated to the reader, almost without the fail, the next line starts “For example…”. This both brings the examples to a non-software level and makes them much easier to understand. I have to admit I’ve starting doing that in my own writing a little more due to reading this one. Overall I’d recommend this book to anyone in the software industry at any stage in their career- – from the grunt programmers starting off, to the CEO that wants to know why their projects are failing.