Archive for September, 2009

Coders at Work: A Review

Monday, September 7th, 2009

About a year ago, I decided to ask a number of people what I should read, and what I should do to be a better programmer. Over the next year I spent a lot of time with these same people trying to learn how to be a better programmer. This book, Coders at Work, is one of those books which turns out to be one of the most helpful programmer-guides I’ve come across.

- Structure of the book:

At the start of each “chapter” (which is really an interview), there’s a short description about who each individual is. From there the chapter continues with a basic “interview-style” format, where Peter asks a question, and the interviewee answers it. Usually there’s a followup question to clarify the previous answer – which has both the positive and negative effects to say “Person A answered this way, person B answered this way” – so in other words, at times it’s hard to say, for example, how Zanwinski’s answer differed from Peyton’s.

The first question asked is one very crucial for most people, though, which is more or less, “How did you get into this?”

- Topics Covered:

The topics covered is not specific to only coding – some of the topics include:

  • How did one get into coding?
  • What were some successful projects?
  • What were some less-successful/failure projects and why?
  • What type of education is useful (e.g. is a PhD useful?)
  • What tools does one use and why?
  • What does one enjoy about programming?
  • How one works with others and the dynamic of that.

This book is not only about coding though! That’s an important thing to recognize about this book – it’s leaned a bit toward programmers in general, but these topics help to make a better programmer in general – not simply specific to just coding better.

Some of the topics discussed feels a little dated, with some technology that’s being discussed well before I was born, but since many of these challenges exist as timeless and I see in my everyday life, they are still valuable to hear about.

- Likes:

The main thing I enjoyed about this book was the fact that it’s extremely applicable to what I see each day. A perfect example was the very first chapter in talking with Zanwinski. In this chapter, he discusses the concept of “Worse is Better”, and how the strive for perfection caused a company to fail. This very concept rings extremely clear to me, in I’ve seen a system that was developed in the “Worse is Better” philosophy, and the development of the current system has seen times where the “Right Way” caused huge delays in the development of the system. It was a breath of fresh air to hear someone else discuss a situation that was really close to one that I’ve been, and in some ways continue to be, in. This is the main thing that I feel I enjoyed about the book itself.

Another applicable thing I read was the reasons for getting a PhD – which I’ve been contemplating for well over a year now. To hear perspectives about the reasoning to get or avoid one helps a lot in the contemplation.

Along with that, the topics were very interesting – and many of the answers were very clear and to the point. One can tell that these words were exactly the way the person said it – and not edited. This is a great feature because it feels more like a dialog than just a story-telling session.

- Dislikes:

There are a few areas of the book that I feel could have been done a bit better.

  • When describing more old technology (e.g. the computer that Peyton learned on), I felt I had no clue what this device looked like or anything. A quick google can help in a lot of these situations, but there’s a certain disconnect from the book itself as one’s reading. This can happen especially for younger developers who haven’t heard of some of this technology.
  • The rants on some of the languages (e.g. Perl) can be taken poorly by some. I found it kinda funny, and it’s clear that it’s the individual’s opinion, but I can see some people being annoyed by that. There’s not a lot that can be done about this besides cutting out content.
  • Better identifying similar crucial questions that are asked to each individual would be helpful to hear the ideals that are different between each person. Those, with a special icon or something, would have been very helpful for comparing and contrasting differences.

- Summary:

Overall, I feel this book is quite good, a definite 4.5/5 stars. This book gives a “mentor feeling”, when I honestly don’t have a mentor at this point at my job. I found that many of the questions in this book provided insights into the difficulties I’m currently presented with, and offers suggestions on how to approach them. While this book will likely not be the totally definitive guide for all programming-related knowledge, it’s definitely something I feel fits in a niche that currently isn’t occupied by other books. I feel this will benefit all levels of programmers.