• Coding
  • Coders at work, a quick review

I just finished reading Coders at work, by Peter Seibel. In this book, the author interviews 15 amazing people who shaped the way we produce programs and the basics of what is Programming and Computer Science.

The cast of interviewee include pretty notorious programmers (coders):

- Jamie Zawinskie (Netscape/Mozilla legend, and father of now defunct XEmacs)
- Brendan Eich (Inventor of Javascript)
- Doug Crockford (Js guru)
- Joshua Bloch (author of the Java Collections)
- Joe Armstrong (father of Erlang)
- Ken Thompson (father of Unix, Plan9 and Go, precursor of C)
- Simon Peyton Jones (functional programming God)
- Peter Norvig (AI guru)
- Guy Steel (programming linguist, sat on the founding committee of so many languages including Scheme, CL and Java)
- Brad Fitzpatrick (web whiz kid, author of memcached)
- Dan Ingalls (implementor of 7 generations of Smalltalk)
- L. Peter Deutsch (author of Ghostscript)
- Fran Allen (she pioneered the field of compiler optimization)
- Bernie Cosell (early engineer of ARPANET, which ultimately became the Internet)
- Donald Knuth (do I really need to present him?)

Seibel (the author) is a journalist turned Lisp hacker turned writer. The questions he asks are spot on, exactly the kind of questions a programmer would want answered. Some questions were pretty recurrent:

- How do you read a piece of code you didn't write?
- What's the best debugging strategy?
- How do you start a new program? top-down vs down-up?
- Do you feel you programmed better when you were young?
- Does the new generation of programmers have it harder because they cannot understand everything going on in the machine?

He also has this quirk question he enjoys asking:
- Do you see yourself as a scientist, an engineer, an artist, a craftsman or something else?

Other topics covered include the importance of opening black boxes, understanding the underlying machine, refactoring, and whether code should be a mean to an end or can be the goal in itself.

The answers vary greatly among his subjects, showing once again that programming has no one single Truth. Although all seem to agree on one thing: Write a ton of code, that's the only way to become good.

I enjoyed every single one of the interviews, although if I had to pick the most interesting ones:

Jamie Zawinski is the rockstar of programming. Think Guns'n Roses meets Frank Zappa. His interview covers a lot of the history of Netscape (and what later became Mozilla). He puts a huge emphasis on delivering the product on time, even if this means messy code.

Crockford goes great length convincing the author (and the reader) that Javascript is, against all odds, a wonderful language. He mentions the importance of subsetting the language and limiting yourself to the features you know are awesome. He also talks a lot about working in teams and the importance of code reading sessions.

Bernie Cosell is a maniac. I mean it he's inhumane. When he joined the team that built what became the first nodes of the internet, they had a very singular debugging technique. They would patch the binaries. You read correctly, patch the binaries, no source code involved. They would look at the output, figure out "Hey that's something wrong", add a jump instruction, modify the structure of their program and let it flow. They got by doing this for years. He was one of the first to insists that they stopped doing it. His interview is filled with the importance of readable source code. The idea I keep in mind is: "It doesn't matter if it works. If I cannot understand what you wrote, it's still useless to me".

Don Knuth is out of this world. If jwz is the rockstar, he's the J. S. Bach of programming. Just like others in this book, but probably more than the rest, he absolutely adores programming. And it's contagious. He believes that reusable code is a terrible idea, that goto statements aren't as bad as we believe and that there's no single Truth, what works for him won't work for the next guy. He also talks a lot about the idea of literate programming, and the importance of keeping 2 models in your head at the same time.

A couple of similarities were:

- Not many of them seem to enjoy C++.
- They all seem to be using emacs. According to Seibel himself, there are 2 groups of people he interviewed: Those who're proud of using emacs, and those ashamed they're still using emacs :)

I could go on forever. Honestly, buy the book. It's such a great read. If you're at all interested in programming and curious to know how legends of the field think about the craft (or is it engineering? art? science?) then you will enjoy every page of it. I know I certainly did.

PS: The only thing really missing from the book is a summary of all the interviews. What should we take from all this? It seems like Seibel owe us some further analysis. Fortunately that's exactly what he did in a talk (available on Youtube) that he gave at Google shortly after the book came out.
Seems like an interesting read but the book should be called "Web Coders at Work".
@ZeRaW, hmm Not really. But most of the are kids of the .com bubble era. When it was rare to know someone hacking on a computer. Made them special.

I really enjoyed reading parts of the book. It's kind of funny to see how each person has his own weird personality through their answers.

About the C++ issue, haters will hate.
@arithma it is mostly why they would hate c++ well because they are all geared towards web
Hmmm ... Now I'm going to be a pain:

- Out of 15 interviewed, 11 never had anything to do with the web ever. That's considering that zawinski did web (he's famous for writing a web browser in C and a text editor mostly in Lisp), but he does have a few perl script running his current website now. And I'm also considering Eich to be a "web" developer, although he's really in charge of the implementation and specfification of Javascript, as well as Firefox at large. Not exactly your typical RoR/Django/Flash developer.

- dot com bubble? Most of these guys started programming in the 50s-60s.

- About C++, a lot could be said. While this particular set of programmers don't like the language it doesn't mean that the language is bad. On the other hand, it wasn't until mid 90s that C++ compilers managed to give reliable code. Until then, the code was bulky and slow. And can you deny the fact that the language is bloated with every feature possibly imaginable and is just a big mess of stuff piled up one over the other?

Also, I feel particularly bad acting all douchy and pretentious on this particular thread. I feel that greatness is being mentioned, I should just shut the fuck up ...
@ rahmu I think I should have done more research before claiming to know everything :D
From the list, the only one I know is Peter Norvig as I have a copy of his book (Artifical Intelligence: A Modern Approach).

From the first look it seemed to me most of them were on the Internet/Network side of the industry so I assumed they were all web related until I researched every single one of them.

I am not sure about the c++ hate, as you said these people might hate it, others might adore it [especially software engineers in other industries such as graphics,...]

In any case, I will try to get and read the full book.
I stand corrected rahmu. I haven't read into the whole thing yet (here and there). What at least can be said is that they were all pre bubble people (some of them were right on the edge of it IIRC). Golden age :)