6 ms·
The Top 9½ Books In a Hacker's Bookshelf
- lux 19y agoWhat about less code-specific books, like "Cathedral & the Bazaar"? I find my shelf ends up with a fair amount of these compared to code/code theory books. I'm also reading "Programming Collective Intelligence" right now which is pretty awesome so far!
- tptacek 19y agoI stopped reading when I saw "Code Complete".
- icey 19y agoI don't get it. I've read Code Complete and it seemed like a fine enough book. What is your point?
- tptacek 19y agoI actually like Code Complete, too. But my point is, I doubt anyone ever became a better hacker for reading it. Compare to the Dragon book, which, if you haven't read a book on compilers, is virtually guaranteed to make you better.
- mynameishere 19y ago"Design Patterns" is poison.
- mullr 19y agoTo the weak of mind, perhaps. I believe that patterns are useful and beneficial in moderation. This requires a degree of understanding that some do not have, leading to pattern hell. The analogies to alcohol are disturbing.
- thaumaturgy 19y agoAdmittedly, I haven't read the texts on design patterns, and have only a cursory knowledge of what they're about. So, I'm about to commit the cardinal sin of talking on a subject that I don't know intimately. Near as I can tell, design patterns are just ways of vaguely describing common solutions to common problems. They say, "You might try to solve problem X in some language by creating an object that does Y." In lieu of actually understanding the specific problem they're facing, the inexperienced or less skilled programmer then looks through their dictionary of design patterns, finds something that sounds like it fits, and then proceeds to throw some very generic code at their problem until it goes away. This strikes me as very similar to the problem Feynman discussed in "Surely You're Joking", when he worked as a professor in Brazil and came to realize that, on a national basis, the students had all been taught to memorize entire books of facts, but hadn't done experiments and didn't understand the concepts behind the things they were taught.
- Tichy 19y agoI recommend reading a text on design patterns. The Brazil example falls short, because people having no understandings of concepts doesn't invalidate the concepts themselves.
- thaumaturgy 19y agoDesign patterns are on my reading list, but these days that list is much larger than my available free time. I agree with you, actually. My point wasn't that the design patterns themselves are wrong, or necessarily bad, it was that (I think) they'll tend to get used in situations where the programmer doesn't understand the immediate problem or solution well enough to deal with it directly. Anecdotally, this came up somewhat recently when the question of whether or not it's "OK" to return early from a function got briefly passed around the net. I noticed a lot of instances where people were coming up with some pretty absurd reasoning to justify always doing it one particular way, the 'textbook' way if you will. Myself, I think it's _sometimes_ OK to return early from a function. It depends on what you're doing. You have to understand the situation you're looking at, and all of the various circumstances around it. So, the idea of "never return early from a function" isn't necessarily wrong, but it does indicate that the programmer probably doesn't really understand what they're doing.
- mdemare 19y agoAnother list (mine): 1-4: Books on computer organization, operating systems, networks and distributed systems (I like the ones by Tanenbaum, but there are many). 5: Another about compilers/languages (the dragon book is a classic, but there are many others). 6: Something about Lispy-languages (e.g. SICP, but the Little/Seasoned Schemer is another favorite). 7: A book about algorithms. I have Knuth, but something less thorough covering a wider area may be preferable. 8: A book about the practice of programming. My favorite is The Pragmatic Programmer. 9: A book about software engineering as a profession (I recommend Peopleware.)
- lux 19y agoI'll have to think about others still (or turn around and look ;), but "Mastering Regular Expressions" (O'Reilly) really helped me many moons ago. I just bought the latest edition recently to see what's new, and to finally have a copy for my shelf.
- brianr 19y agoMastering Regular Expressions is by far the best-written technical book I've read. It's amazingly concise and well-explained.
- brent 19y agoHere is my list. It is probably not a good hacker list, but a CS/ML/bioinformatics list. Structure and Interpretation of Computer Programs (SICP), Abelson & Sussman The Little Schemer, Friedman The C Programming Language (K&R), Kernighan & Ritchie The Analysis of Algorithms, Purdom & Brown The Elements of Statistical Learning, Hastie, Tibshirani, Friedman Biological Sequence Analysis, Durbin et al. Artificial Intelligence: A Modern Approach, Russell & Norvig Introduction to the Theory of Computation, Sipser Introduction to Linear Algebra, Strang GEB is my 1/2
- henning 19y agoYour list seems more tuned to hacking than the OP's, which seems oriented towards working on large teams on boring legacy software.
- henning 19y agoThe thing to note about Code Complete is that you can read it very profitably in small chunks. Curling up with a big fat book and reading about whitespace for 45 minutes isn't very rewarding in my opinion. Just glancing at it occasionally will have you dropping your jaw at code you wrote in a hurry 6 months ago.
- yters 19y agoAnyone else think this was codified common sense when you first read it? Seems to be the case with a lot of software engineering stuff I read. I have trouble thinking of anything truly insightful my exposure to software engineering has taught me.
- st3fan 19y agoTwo books that every serious networking/unix hacker must have: 1. Advanced Programming in the UNIX environment 2. TCP/IP Illustrated Both written by Richard Stevens.
- laktek 19y agoOh where's Pragmatic Programmer ? That's a must read for every hacker.