Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

These are the top books chosen by the whole community. The all-time most influential book is _Code Complete_? What's with all the Agile? Multiple books on design patterns? More books about the profession of being a developer --- and, in particular, a BigCo developer --- than about the most interesting aspects of designing programs.


These sorts of questions are a popularity contest. Books aren't upvoted based on how influential they are, but based on how many voters have read and liked them. So _because_ it is chosen by the whole community you can expect a book like Code Complete: it touches on some of the fundamental principles of programming and is a book that almost every programmer can learn from. This works well for SO I think.


Plus Jeff Atwood said it was his favourite book.


I would be very interested in seeing your top ten list of books that every programmer should read, tptacek. First, because I value your opinion, and second, because I honestly believe that most of the books on this list actually are books that every programmer should read and I'm curious as to why you're so averse to them. What would you consider 'a book about the most interesting aspects of computer programming'? Do books like SICP and 'Introduction to algorithms' not fall in this category?


Of the books on that list, the ones I think you could call legitimately essential are:

SICP -- K&R -- CLR[1] -- Design Patterns -- Mythical Mammoth -- TAOCP -- Compilers (Dragon Book) -- Effective C++[2] -- Programming Pearls -- Peopleware -- Little Schemer[3] -- Modern C++ Design -- The Practice of Programming[4]

[1] ... except I'd recommend Skiena instead of CLR.

[2] ... except I'd recommend Effective STL over any other Meyer book, and I also wouldn't concede that C++ is essential.

[3] ... except I'd recommend Lisp In Small Pieces, which I know is a totally different book, but do you need it and SICP?

[4] ... but only to someone new to programming.

You can see I've chucked all the methodology and career crap (except for Brooks and Peopleware; I think you probably already know everything in Brooks, but Peopleware is something you should reread annually).

To that list I might add:

On Lisp -- Javascript: The Good Parts -- Pattern Oriented Software Design #2[1] -- Computation Structures -- Computer Architecture (Hennesy and Patterson) -- C Interfaces and Implementations -- The Visual Display Of Quantitative Information -- Windows Internals[2]

[1] ... this book was wildly* ahead of its time and is no doubt overlooked because of it's patterns-y enterprise-y marketing.*

[2] ... 10 years ago I'd have recommended _The Magic Garden_ but, even though I'd rather eat a bug than use a WinAPI system full time, it's hard for me to argue that Unix kernel design is as relevant now as the Windows kernel --- and, more importantly, there's no Unix book that does as good a job as Russinovich on the Intel architecture.

I wish I had good books to recommend on:

SQL performance optimization -- distributed systems -- compression and coding -- the HTML/JS DOM programming model.

The reality is, at this point in my career, I don't find myself going to books for programming stuff so much; that doesn't mean I don't read, but I tend to take the "man pages" approach. So my choices may date me. If I'm going to pick up a book today, it's going to be for something domain specific. I find myself reading for maths (I suck at math), or for graphics, or for market microstructure, or signal processing. I won't pretend that stuff is relevant for everyone. I feel confident, though, in saying that nobody needs more than one "Agile" book.


I'm currently reading and preparing to work through C Interfaces and Implementations based on your recommendation - so thanks. At first blush, I like it very much and wish to tie it more closely to a more modern C reference that is the successor to K&R (which doesn't seem to exist).

Skiena instead of CLR? Hmmmm . . . not sure I'll agree with that.

You might want to consider having a look at the Stepanov Elements of Programming book. I think there is a chance it could be a good follow-up for hackers interested in moving from Hanson's elegant looking code to a nice, minimal C++. I lack enough applied C/C++ experience for this recommendation to have much weight.

Regarding SQL optimization - I suspect most people would be best served to work through Celko's books to have the most thorough grounding in applied SQL and then refer to the docs included with their RDBMs of choice that deal with access plans, performance monitoring, and general engine tuning. The problem is that there are just too many knobs built into the different RDBMs products for it to be a general topic. Oh, and the answer is always a better index, materialized view, or to use a column store engine. :-)


Counterpoint: Elements of Programming is an exercise in overengineering written by architecture astronauts. I was not impressed by it.


I've had both CLR's Algorithms book and Skiena's on my wishlist for a while, and would be curious to hear why you prefer Skiena's.

I had a copy of CLR back in school, but like most of my textbooks from back then, I'm sure I sold it for food. Before rebuying the same book, I figured I'd see if Skiena's might be better.


Wow, Computation Structures looks like an excellent book; thanks for the reference.

I think having Lisp in Small Pieces and SICP is reasonable. Lisp in Small Pieces dives pretty deep, but doesn't cover anything comparable to what chapters 3 and 4 of SICP do.


What do you think of Zawodny and Balling's High Performance MySQL? I thought it did a really good job on optimizations for not just MySQL, but many things in common to various SQL systems.


He has one list in his profile: http://amzn.to/cthr46.


Yeah, I've seen it. It's a good list, but it's mostly concerned with security, reverse engineering and similar topics. I'm not saying that this is not important but surely there are other things that a developer should know about. For example, how to write maintainable code, how to come up with elegant solutions to certain problems, and so on.


As runjake points out[0] elsewhere in this discussion, the actual question is different: If you could go back in time and tell yourself to read a specific book at the beginning of your career as a developer, which book would it be?

Given that, the choices make sense to me.

[0]: http://news.ycombinator.com/item?id=2273050


SICP, The Art Of Unix Programming and The Little Schemer are on the list. Those are the only books I've read that actually influenced my approach to program design. What other books do you feel belong there?

Arguably GEB?

Edit: Nevermind, GEB is on the list too


I like GEB, but I find it hard to pretend that it's really an essential programming title.


Have you actually read CC?

Another point: Which books deal with "the most interesting aspects of designing programs" in your opinion?


I've been a software developer since 1995. Take a wild guess as to whether I've read Code Complete.

I don't think it's a bad book.


CC is a good book that's not steeped in programming terminology and is easy for even laypeople to understand. However it would've been nice for Steve to incorporate some code snippets from a functional language, just to compare and contrast how things are handled differently between paradigms.


I agree with the missing parts of the book (btw: anyone interested in that might find "Programming Language Pragmatics" by Michael Scott interesting), however, I think that there is not enough experience on using functional programming languages in an industrial/professional setting.


I bought some of these books because you hear the same titles over and over again, so I had to see what the fuss was about. Code Complete was one of them.

In no way did I find it enlightening. I found it to be straightforward, dense, and boring.

I'd be interested to see a list that separates responses from the "Windows people" and the "Unix people." Hopefully that doesn't sound elitist, I just feel like they are completely different worlds sometimes. Most of the Joel/Atwood/SO fans seem to fit this archetype, and CC is their favorite book.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: