tags/codingbloghttp://blog.spang.cc/tags/coding/blogikiwiki2009-12-30T23:33:46ZCoders at Workhttp://blog.spang.cc/posts/Coders_at_Work/2009-12-30T23:33:46Z2009-12-30T23:33:46Z
<p>On the train to my parents' house for Christmas I finished up a wild run
through the book <em><a href="http://www.codersatwork.com/">Coders at Work</a></em>. The book
isn't even mine, but I'd been borrowing it very often, sometimes to the chagrin
of its owner, because I could barely put it down.</p>
<p><img src="http://blog.spang.cc/images/coders_at_work.jpg" alt="Coders at Work book cover" /></p>
<p>The book is a collection of interviews with 15 great programmers of our time,
starting with Jamie Zawinsky and ending with Donald Knuth. It's written in an
interview style—each interview starts with a brief introduction to the
person being interviewed, summarizing what the person is known for and what he
or she has accomplished and a few of the highlights of the interview, and then
a transcript of the interview follows, with the author/editor, Peter Siebel,
will saying something or asking a question, and the interviewee responding. I
was skeptical about this format at first because I feel like it can be an easy
way out of good editing and make the reader have to do the work of the editor,
but on finishing I think that Siebel uses the format to his advantage in this
case.</p>
<p>For one, the speech format allows the reader to really form a picture of how
the person being interviewed speaks and would act in a conversation. Jamie is
somewhat bitter and pretty informal. Brad Fitzpatrick is flippant and
energetic, his speech littered with profanity and colloquialisms. Others seem
more stately and verbose—Joe Armstrong's responses can go on for a page or
more. In this way, not only do readers learn something about what these greats
have learned about programming, but we also feel a bit more like we've met or
know them, and can connect to them more as people.</p>
<p>I always have this problem where I want to read computer books, but often
computer books seem inextricably tied to the computer, so there's this dynamic
of reading a bit and then wanting to get on a machine and try something out,
write some code, play around—especially with books focused on a specific
language. <em>Coders at Work</em> retains some of this computer-book dynamic in that I
constantly encountered things that I want to investigate or play around with
more: Erlang, OCaml, various papers and essays, Knuth's literate programs, and
books such as Higher Order Perl and others. Siebel makes a point to ask each
person what her short-list of books and papers programmers should read are, so
this book is a great source of pointers to other reading material. Unlike a
more specific book, however, keeping a list in a notebook was enough to settle
the mind to read away-from-a-computer for chapters at a time.</p>
<p>It's obvious that despite the interview format, Siebel has done some serious
editing. None of the prose is boring to read, and I can't imagine that the text
is a straight transcript of how the interviews went. He also has arranged the
interviews in an order such that different interviews play off each other. In
Branden Eich's interview, for example, he disparages the book
<em>Design Patterns</em>:</p>
<blockquote><p>I never bought the Gamma book. Some people at Netscape did, some of Jamie
Zawinski's and my nemeses from another acquisition, they waved it around
like the Bible and they were kind of insufferable because they weren't the
best programmers.</p></blockquote>
<p>In the next chapter, Joshua Bloch names it as a book he thinks programmers
should read:</p>
<blockquote><p>Another one, which I have slightly mixed feelings about but I still think
everyone should read, is Design Patterns. It gives us a common vocabulary.
There are a lot of good ideas in there.</p></blockquote>
<p>Similar plays, such as Ken Thompson and Fran Allen disagreeing on the badness
of C, happen in later chapters, tieing together the different chapters and
illustrating how even really good programmers disagree on the Right Thing all
the time. Clearly the craft of programming is no settled thing.</p>
<p>Besides the general structure of the book being well thought-out, the material
is generally thought-provoking and interesting. One thing that stood out to me
was Joshua Bloch describing what he called the "empathy gene", which is what a
programmer has to have if he's going to be able to design good APIs and
programming languages—he has to be able to put himself in the shoes of the
person who will be using the language or API. This is one thing that
differentiates how different programmers can be good at different things.</p>
<p>Another thing that stood out to me is that many of those interviewed stated
that they don't use much in the way of modern tools and IDEs—Joshua Bloch
and Simon Peyton-Jones both touch on this, just to name a couple examples, even
though some say that they think using these tools would make them more
productive, especially when it comes to refactoring. This is a testament to the
power of inertia—sometimes there is just no chance to be unproductive now
in order to be more productive later. Or perhaps just a sign that a
programmable text-editor can stand on the same level as a heavier tool in terms
of productivity in the right hands.</p>
<p>I could go on with examples, but the conclusion here is that I thoroughly
enjoyed <em>Coders at Work</em>, and I think it is a book that is well-worth the time
spent reading the entire thing.</p>