Coders at Work: Reflections on the Craft of Programming () is a 2009 book by Peter Seibel comprising interviews with 15 highly accomplished programmers. The primary topics in these interviews include how the interviewees learned programming, how they debug code, their favorite languages and tools, their opinions on literate programming, proofs, code reading and so on. Interviewees Jamie Zawinski Brad Fitzpatrick For studying Perl he recommends Higher-Order Perl by Mark Jason Dominus. Douglas Crockford Brendan Eich Joshua Bloch Joe Armstrong Simon Peyton Jones Mentions David Turner's paper on S-K combinators (cf. SKI combinator calculus). The S-K combinators are a way of translating and then executing the lambda calculus. Turner showed in his paper how to translate lambda calculus into the three combinators S, K and I which are all just closed lambda terms and I = SKK. So in effect you take a lambda term and compile to just Ss and Ks. Recalls his first instance of learning functional programming when taking a course by Arthur Norman who showed how to build doubly linked lists without any side effects at all. Mentions the paper "Can Programming be Liberated from the von Neumann Style" by John Backus. Wants John Hughes to write a paper for the Journal of Functional Programming on why static typing is bad. Hughes has written a popular paper titled "Why Functional Programming Matters". Mentions a data structure called "zipper" that is a very useful functional data structure. Peyton Jones also mentions the 4-5 line program that Hughes wrote to calculate an arbitrary number of digits of e lazily. Mentions that the sequential implementation of a double-ended queue is a first year undergraduate programming problem. For a concurrent implementation with a lock per node, it's a research paper problem. With transactional memory, it's an undergraduate problem again. Favorite books/authors: Programming Pearls by Jon Bentley, a chapter titled "Writing Programs for 'The Book'" by Brian Hayes from the book Beautiful Code where he explores the problem of determining which side of the line a given point is, Art of Computer Programming by Don Knuth, Purely Functional Data Structures by Chris Okasaki exploring how to build data structures like queues and heaps without side effects and reasonable complexity bounds, Structure and Interpretation of Computer Programs by Abelson and Sussman, Compiling with Continuations by Andrew Appel, A Discipline of Programming by Dijkstra, Per Brinch Hansen's book about writing concurrent operating systems.