Monday, July 7, 2008

Book Review: Joel on Software

Joel On SoftwareI am a big fan of Joel Spolsky’s book “User Interface Design for Programmers”, in fact it was the first book I reviewed on  my blog, so when I saw his book “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, Weather by Good Fortune or Ill Luck, Work with Them in Some Capacity” I just had to get it. Not only does it have probably the longest book title that I have ever seen it sounded chock full of great information. After all I work with a great group of software developers and it is about time that I got better at it myself.

Like “Eric Sink on the Business of Software” this book is a compilation of articles originally posted on Joel’s blog. Joel has a great way of conveying information in a thought provoking manner with just enough humor and self-deprecation. The book is divided into four parts; Developing software as a team, Managing programmers and teams, Being Joel and Commentary on .NET.

There are 45 chapters, each chapter is an original weblog post, and an appendix containing “The Best of Ask Joel”. I got some valuable information out of every chapter but I wanted to highlight a few of them.

I found the section on .NET very interesting since at first Joel didn’t like the idea but he later admitted that Microsoft got it right and built a great tool. As a long time user of Microsoft development tools, I started with Visual Basic 4, I found his reasons for using .NET quite interesting and his .NET strategy a very good approach.

One of the most informational chapters is chapter three “The Joel Test: 12 steps to Better Code”. No this isn’t a twelve step program, rather it is a series of questions you should ask about how you develop software. After presenting the questions he goes on to elaborate on each of the points. Several other chapters in the book provide more information on why these things are important. Joel’s recommendation is that you can answer yes to all twelve questions. I think that these questions are very reasonable and achievable for nearly any software company.

Although I found many of the chapters very interesting the one that impacted me the most was “Things You Should Never Do, Part 1”. Oddly enough there is no part 2 the article was titled because of Mel Brooks movie The History of the World, Part 1. According to Joel the single worst strategic mistake is to rewrite the code from scratch. While I agree this is a major undertaking I have always felt that there comes a time to rewrite an application but after reading this chapter my opinion has changed. By starting from scratch you end up throwing out years worth of bug fixes which might not be incorporated into the new code. Therefore instead of releasing a new faster and sleeker program the new program may be plagued with bugs that the original program has already addressed. Therefore, I am now leaning more towards refactoring as opposed to rewriting. I plan on spending some time reviewing code when I update example projects instead of writing new examples.

I highly recommend looking through the postings on Joel’s blog, there is a tremendous amount of good information there. If you want to have a hard copy of some of his best articles then this book is a must buy. As Joel states in the introduction:

The book you hold in your hands is, I hope, a heck of a lot more cohesive than the website, where by cohesive I mean "can be read in the bathtub without fear of electrocution."

As I read through this collection of information I am reminded about how much I don’t know and how important it is to keep reading and trying new things.

No comments: