Monday, February 9, 2009

Book Review – The Best Software Writing I

The Best Software Writing II started reading Joel Spolsky books in May 2008 on JD Mullin’s recommendation. I have previously reviewed two of Joel’s books User Interface Design for Programmers and Joel On Software. So I was happy to read The Best Software Writing I which is a collection of talks, articles and blog postings from 2004. Each of the selections were chosen by Joel and he includes an introduction and some footnotes for each.

The introductions are classic Spolsky filled with humor and some very clever insight. Some of the footnotes seem a bit basic describing what a child window or a control is for example. Although other footnotes really do add to the content of the article and demonstrate why the content was chosen.

Although I got something out of each of the essays there were a few in particular that stood out. I’ll highlight them roughly in the order they appear in the book.

Michael Bean wrote a great article on “The Pitfalls of Outsourcing Programmers” which does an excellent job of outlining some of the difficulties with splitting up a development team. The main point being that you need to keep your core business close so you can manage it. By separating the programming, your core business, from your managers and designers you can loose innovation. Michael uses a chocolate shop near his home as an example of good outsourcing. The shop makes its own chocolates but purchases its packaging from a company in the Philippines. The core business, making chocolates, is kept close while other operations can be outsourced.

Bruce Eckel’s take on “Strong Typing vs. Strong Testing” was very well done. I have always liked strongly typed languages, even though I started in Visual Basic. The first thing I added to each of my Visual Basic projects was Option Explicit which means that all variables must be declared and typed. Bruce’s point is that it is not always necessary to strongly type your variables if you have good testing practices. Strong types can help in ensuring that your functions work as expected, however, if the function passes the test then all the variables are being handled correctly. I will still stick with strong typing but I know that strong testing is a critical element as well.

If you are developing social software, your application has a social component or you use social software (i.e. Instant Messaging, Facebook, Linked In or maybe a weblog) there are three articles which you will find useful. The first by Danah Boyd called “Autistic Social Software” discusses how software attempts to address human social interaction. In general it does a very poor job at this since social interaction is not procedural. As Danah states:

If we are really trying to build sociable media that supports social interaction, shouldn’t we do it based on what social life looks like? Shouldn’t we allow for the vast array of nuances that allow people to interact differently depending on their needs?

Whereas Danah’s article discusses why social software doesn’t fit the reality Clay Shirky gives us another perspective on why the software fails and some ideas on how to make it more of a success. Joel chose two of Clay Shirky’s writings, “A Group is Its Own Worst Enemy” and “Group as User: Flaming and the Design of Social Software”. The first paper discusses how interaction between people changes as they get into a group and how software needs to be able to adapt to this different dynamic. It is a lengthy essay but it contains some excellent information and good advice. The second article discusses a topic near and dear to our hearts as Internet users: Flaming. Ah, the power of anonymity! Clay describes why flaming can occur along with some good methods of dealing with it. 

I really enjoyed “Starbucks does not use two phase commit” by Gregor Hohpe since it does an excellent job at describing asynchronous processes in layman's terms. I have always tried to use analogies to help describe concepts and I though this was an excellent example of a good analogy. Perhaps someday I can even come up with something this brilliant and simplistic.

I read several of Paul Graham’s articles during my computer science classes and I found his insights to be very interesting. Joel choose “Great Hackers” for this collection which is a great essay on what makes a great programmer, for Paul’s definition of a hacker read his essay “The Word Hacker”. Paul paints great hackers as coders who like to use open source tools and who are free sprits and like to have the flexibility to choose their own development environments. He believes that the very best hackers are stifled by companies who enforce specific development tools and environments on them. I agree that many of the best developers work in the open source arena, however, I also feel that many of these elite coders work just fine within a set of loose guidelines. In fact I would contend that most great hackers work developing commercial products. Although many of them spend a lot of their own time working on open source projects which is their true passion.

I was happy to see three essays written by Eric Sink which were also in his book which I reviewed in June. These essays include: “Closing the Gap, Part 1”, “Closing the Gap, Part 2” and “Hazards of Hiring”. I have to agree with Joel’s introduction on this section:

I started writing a long introduction to this article, but gave up because I’m so deeply in agreement with everything Eric Sink says that there’s no point. Everything Eric Sink says is right. Do what Eric says and you can’t go wrong. – Ed.

The bottom line: I really enjoyed this book both for the content and Joel’s insight and quips. Although all of the essays in the book are available on the Internet it was nice to have them neatly wrapped up in book form. I think anyone working in the software industry can get something out of this collection of essays. I second Joel’s assertion that we need more software professionals who are also good writers.

1 comment:

Unknown said...

Pretty element of content. I simply stumbled upon your website and in accession capital to assert that I get in fact enjoyed account your blog posts. Any way I?ll be subscribing on your augment and even I achievement you get right of entry to persistently rapidly.
Ceramic sinks