I haven't agreed with any of the "Essential reading for programmers"
lists I've ever seen, here or elsewhere.
Reason #1: The navel-gazing, philosophy-of-programming books can't be
essentials. Their relevance to programming is only clear for somebody
who already knows how to program. Who's going to get anything
programming-related out of the White Knight's naming problem unless they
already know how to program? They may be fun, enlightening,
thought-provoking, but definitely not essentials.
#2: Even the books that are definitely about programming, like
Structure and Interpretation of Computer Programs (which I hear is a
great book) are too low-level, or high-level, or deep, for all
programmers. Does somebody writing Java applets really need to know
about constraint-propagation networks?
#3: I rarely see concrete material covered in "essentials" lists.
Doesn't a programmer need to know how computers work? Or operating
system or API details? Note that computer science is not really about
computers, it's about computation. Scheme and ML are discussed
completely out of the context of an actual computer or an actual
real-life (god forbid!) application. CS is about abstraction, whereas
programming is about concreteness. IRL, a programmer needs to know how
the file is stored, how a socket is opened, or how the database API
abstracts a record, in order to get the damn software to work.
#4: Every programmer has a different job. For somebody replacing my
programming activity, I'd say to have on hand (if not to read):
- The Java Language Specification or The Java Programming Language, for
a straightforward language reference
- Something like Java By Example to complement TJLS with examples
- Java Servlet Programming
- a reference book on JSPs
- TCP/IP Illustrated
- I'd say something on HTTP if there was anything
Obviously, I work on protocol stuff in Java. What about the programmer
who does vertical-market database interfaces in Visual Basic? None of
those books are essential for that kind of programmer.
Aside: I've noticed that in a programmer's bookshelf or their list of
classic books, it's clear when the programmer comes from one "tradition"
vs. another. E.g. the MIT tradition vs. the CMU tradition. Check for
books that are AI-related or that use Scheme or Lisp for one tradition.
Check for books that are about TCP/IP and Unix programming, and a
reverence for Stevens, for a completely different tradition.
Another aside: this is a good opportunity to ask for the title of a book
I've seen on somebody's shelf and now want to get. It was on Java, and
focused on practice rather than theory. It was made up of a bunch of
independent "Praxes". Each "Praxis" discussed a common problem or
challenge and then how to solve it. The only close match title-wise on
Amazon was "Java in Practice..." which doesn't sound right.
Final aside: For those who love lists, Amazon's got them up the wazoo,
and it looks like you can add yours too.
Java list by the editor of "Computer and Internet Books":
Java list by another Amazon editor:
"A Must in OO Programming" list by some random programmer:
This last guy mentions "Refactoring", which I'm tempted to get. But I'm
not going to, because it would be like feeding a jumbo triple-shot
caramel mocha to a hyper kid.
> -----Original Message-----
> From: Kragen Sitaker [mailto:email@example.com]
> Sent: Sunday, December 31, 2000 4:58 AM
> To: firstname.lastname@example.org
> Subject: books on programming
> So I wrote http://www.pobox.com/~kragen/progbooks.html --- anyone have
> any comments?
> <email@example.com> Kragen Sitaker
> Perilous to all of us are the devices of an art deeper than we possess
> -- Gandalf the White [J.R.R. Tolkien, "The Two
> Towers", Bk 3, Ch. XI]
This archive was generated by hypermail 2b29 : Fri Apr 27 2001 - 23:17:41 PDT