The Top 91⁄2 In a Hacker’s Bookshelf

by Jess Johnson in Books & Tools

Every hacker should have a good solid dead tree library to draw ideas from and use as reference material. This list has a bit of everything – textbooks you will encounter at top tier computer science universities, books giving insight into the industry, and references you shouldn’t be caught without. It is a list of hackers’ classics.

Buy The Mythical Man Month The Mythical Man Month: Essays on Software Engineering – Anniversary Edition

by Fredrick P. Brooks

This is a classic on the human elements of software engineering first published in 1975. The technology has changed a lot in this time, but the human elements of software engineering have remained the same. It is a wealth of insight, often quoted, and very well known in the industry. "The Mythical Man Month" describes many commonly occurring problems in large and mid-scale development projects and breaks them down. Here are a two of the book’s important principles:

The Mythical Man-Month: Adding manpower to a late software project makes it later.

No silver bullet: There is not a single strategy, technique, or trick that can exponentially raise the productivity of programmers.

I recommend this book not only for programmers, but for anyone managing a software project. Project managers and programmers alike will appreciate Brooks’ clear, well-thought out points.

Buy The C Programming Language

The C Programming Language (2nd Edition)

by Brian W. Kernighan and Dennis M. Ritchie

Commonly referred to as just K&R, this is the canonical C reference book. It’s to the point without being too terse; it is detailed enough for a beginner to understand without being bloated. K&R tells you exactly what you need. Nothing more, nothing less. At 274 pages this is one of the most compact languages references you will find. I dare a Java author to come up with something so sweetly concise.

This book is recommended for anyone learning C, and for anyone looking for a C reference book. K&R is a must read for anyone who is writing a language reference or technical literature.

If you have never programmed before, K&R might not be the best place to start out, but still doable if you are motivated. Beginners might also consider getting a copy of "The C Answer Book," which gives detailed explanations of solutions to the K&R exercises.

Buy Structure and Interpretation of Computer Programs

Structure and Interpretation of Computer Programs (2nd Edition)

by Harold Abelson and Gerald Jay Sussman

SICP is used in entry level computer science classes at many top tier universities including the University of California – Berkeley and the Massachusetts Institute of Technology. It uses the Scheme language to introduce many powerful paradigms like recursion, lambda notation, abstraction, and interpreted languages.

I found this book incredibly dense when I first read it for an introductory CS class, and there was still much to learn from a reread several years later after I had a better grasp of the ideas presented here. If you didn’t have the opportunity to use this book in the classroom, I would recommend picking it up to see what you missed, especially if you haven’t used any of the Lisp dialects extensively.

Buy Code Complete

Code Complete 2: A Practical Handbook of Software Construction

by Steve McConnell

"Code Complete 2" is a highly regarded book about software construction, where McConnell defines construction as mainly programming and debugging, along with some elements of construction planning, detailed design, unit testing, integration, and integration testing. The book’s focus is on writing better code. McConnell touches on a wide variety of topics including managing complexity, refactoring, coding style, and writing good comments.

This book is recommended for anyone who wants to write good solid code. It will save beginners time when learning good coding practices, and is a great refresher for programmers with years of experience who may find that over time they have developed habits that are holding them back.

Introduction to Algorithms

Introduction to Algorithms, Third Edition

by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein

This is another textbook. "Introduction to Algorithms," is probably the most popular university-level text for algorithms classes. It also serves as an excellent reference book.

Even though practically speaking most programmers shouldn’t be writing their own implementation of, say, quicksort, in a production environment, algorithms knowledge is essential for understanding what kind of asymptotic performance you can expect from libraries and your own code.

"Introduction to Algorithms," is recommended as a reference for any developer looking to brush up on their algorithm skills. It is also recommended if you are interested in topics like NP-Completeness, randomized algorithms, or Fast Fourier Transformation. Good math skills are essential if you want to grok all parts of this book.

Buy Design Patterns: Elements of Reusable Object-Oriented Software

Design Patterns: Elements of Reusable Object-Oriented Software

by Erich Gamma, Richard Helm, Ralph Johnson, and John M. Vlissides

This is a catalog of different object-oriented design patterns. For each of the 23 patterns that are presented, the authors give an in-depth analysis including a motivating example for the pattern, common pitfalls and trade-offs, related patterns, and sample code in either C++ or Smalltalk. Some of the patterns covered are Singleton, Observer, Template Method, Iterator, and Proxy.

This book is a must read for intermediate or advanced developers working on object-oriented code. Coders that are new to object-oriented design would be best served by mastering the basics of an object-oriented language and digging in to non-trivial project before attempting to learn all of the patterns presented here, otherwise the patterns aren’t likely to "stick."

Programming Pearls

Programming Pearls (2nd Edition)

by Jon Bentley

This is a great book for learning how to approach problems. Each of the 15 chapters presents a different task, such as sorting phone numbers, creating anagrams, or doing text searches. The problem is defined, and then Bentley walks through different solutions, providing a discussion and clear analysis of each solution, with a breakdown of programming principles at the end.

"Programming Pearls," contains some very clever ideas, and would be of some use as an algorithm reference for a small class of problems, but the take away of the book is something much bigger and more general: how to approach and solve problems from the perspective of an engineer.

I recommend this book to anyone who enjoys working though programming brain teasers.

Buy Compilers: Principles, Techniques, and Tools

Compilers: Principles, Techniques, and Tools, 2nd Edition

by Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman

"Compilers: Principles, Techniques, and Tools," is commonly known simply as the "dragon book." This is the standard textbook in a theoretical compilers class. It covers everything you would expect to find in a compilers text: language syntax, parsers, lexical analysis, grammars, intermediate code generation, runtime environments, optimization, etc. If you haven’t done a lot of work with these topics, be prepared to learn a whole slew of new terminology and concepts: deterministic finite automata, finite state automata, LR parsing, and more.

I particularly enjoyed parts of the dragon book that get down and dirty into the mathematical notation and theory – and this is large theme throughout the book. If you find regular expressions and state machines fascinating you will really enjoy the book. On the other hand, if you are looking for a text that will introduce modern, practical compiler implementation details (削除) you may find the dragon book a bit lacking. In those respects the dragon book is starting to show its age (this version was copyrighted in 1986). (削除ここまで)the 2nd edition of this book includes new sections covering modern techniques.

Buy Unix Power Tools

Unix Power Tools, Third Edition

by Shelley Powers, Jerry Peek, Tim O’Reilly, and Mike Loukides

This is one of the many great books from the O’Reilly collection. "Unix Power Tools," weighs in at a hefty 1200 pages, and is full of descriptions of Unix command line tools, usage cases, and shell script syntax examples for all of the major shells.

"Unix Power Tools," is a great reference book and is fairly well organized into self-contained chapters. If you find yourself reading this book from cover to cover you are an amazing specimen of geekdom.

Much of the information contained within this book can be found more quickly with a Google search, but sometimes its nice to have a dead tree reference as well.

This is one of the few books that is valuable for beginners and experts alike. Everyone from a complete Unix newbie to a seasoned Systems Administrator has something to gain from "Unix Power Tools."

The Ultimate Hitchhiker's Guide

The Ultimate Hitchhiker’s Guide: Five Complete Novels and One Story

by Douglas Adams

Well this book isn’t technically about hacking, but your geek card is hereby revoked if you haven’t at least read this "increasingly inaccurately named," Hitchhiker’s Trilogy. It contains all 5 books in the Trilogy: "The Hitchhiker’s Guide to the Galaxy," "The Restaurant at the End of the Universe," "Life, The Universe and Everything," "So Long, and Thanks for All the Fish," and "Mostly Harmless," plus the short "Young Zaphod Plays it Safe."

Be entertained. Discover the answer to life, the universe, and everything. Learn how to make a Pan Galactic Gargle Blaster. And most of all don’t panic!

This edition is bound in beautiful black leather and has a silk ribbon bookmark sewn into it. It’s like reading a very nice Bible, only more believable. (Mandatory disclaimer before any trolls find me: That was a joke.)

That’s it for my top 91⁄2. What would you put in yours?

[Update: Have a look at the follow-up list, 51⁄2 more books in a hacker’s bookshelf.]

[Disclaimer: The links above are affiliate links, which means if you buy something from Amazon after following a link from GrokCode, you pay the same amount and I will get a percentage of the sale to help support this site (which would make me smile).]

# April 4, 2008 43 Comments

Discussion on
The Top 91⁄2 In a Hacker’s Bookshelf

by Jess Johnson in Books & Tools

43 Comments

  1. gravatar
    Layong
    7:51 pm UTC, 2008年04月04日
    wuah... nice books review. I like review book #1. thx. :)
  2. gravatar
    chi
    11:48 pm UTC, 2008年04月04日
    wow, i like how you put the hitchhiker's guide on your list. i'm assuming that hitchiker's guide is the "1/2" in your top 9 and a half?
  3. gravatar
    Jess Johnson
    5:13 pm UTC, 2008年04月05日
    @chi Yup, I didn't feel right calling it a top ten when the Hitchhiker's Guide didn't exactly fit.
  4. gravatar
    ken
    7:08 pm UTC, 2008年04月05日
    Wow, I like this list. Just recently I was pondering which books I should get next to further my studies, and this list looks to have given me some very good ideas. Kudos.
  5. gravatar
    cjh
    8:53 pm UTC, 2008年04月05日
    At 274 pages this is one of the most compact languages references you will find. I dare a Java author to come up with something so sweetly concise. Check out Java Precisely. It covers Java 5.0 in 142 pages in a format that clearly owes much to the classic K+R. You can browse it in Google Books and see what I mean.
  6. gravatar
    Florian Potschka
    5:54 am UTC, 2008年04月06日
    Great list! Except "Unix Power Tools" I read all of them too and would recommend them warmly to every software guy. Some other great books on my bookshelf are: * The Pragmatic Programmer (Hunt, Thomas) * Peopleware (DeMarco) * Modern Operating Systems (Tanenbaum)
  7. gravatar
    seb
    7:59 am UTC, 2008年04月06日
    Knuth's TAOCP needs to be on the list
  8. gravatar
    Michael Hartl
    9:28 am UTC, 2008年04月06日
    N.B. A 2nd edition of the dragon book came out last year: http://www.amazon.com/gp/product/0321486811/
  9. gravatar
    Glen
    11:20 am UTC, 2008年04月06日
    I just recently began learning programming at the Hawaii Virtual School. One of my instructors recommended three of the books you mentioned. I think I'll follow your advice and get these books.
  10. gravatar
    Jess Johnson
    12:05 pm UTC, 2008年04月06日
    @cjh I will have a look at Java Precisely, especially since I need to learn Java 5. I wasn't looking forward to another 800+ page Java book. @seb I'm a bit ashamed to say I haven't read Knuth's TAOCP yet, but it is on my list of books to read. I'm sure I'll get to it sometime... @Michael Hartl Its great to know that they are keeping the dragon book updated, it would be a shame to see such a great resource become dated.
  11. gravatar
    Hmm
    2:24 pm UTC, 2008年04月06日
    No TCP Illustrated??? Must have!.
  12. gravatar
    Issac Kelly
    6:11 pm UTC, 2008年04月06日
    Here is the Full Text of the SICP book. 65ドル cheaper than amazon http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html#%_toc_start
  13. gravatar
    Jason
    7:16 pm UTC, 2008年04月06日
    s/Code Complete/Pragmatic Programmer/, but otherwise that could be my bookshelf.
  14. gravatar
    Ken Nickerson
    7:30 pm UTC, 2008年04月06日
    While I'm a HUGE HHGTTG and met Adams a few times before his all to soon death. The book "The Psychology of Computer Programming" by Gerald M. Weinberg would eclipse this choice for a top 9 1/2 books. It's now out as a "Silver Anniversary Edition" and you can read more about it here: http://www.dorsethouse.com/books/psy.html . Thanks for the great listing though. All excellent selections.
  15. gravatar
    Izaak Alpert
    8:26 pm UTC, 2008年04月06日
    I second Ken Nickerson, excpet for Wienberg's "Becomeing a technical team leader (http://www.dorsethouse.com/books/btl.html).
  16. gravatar
    jason
    8:32 pm UTC, 2008年04月06日
    the art of unix programming by eric raymond
  17. gravatar
    SmartYoungAnonPoster
    10:03 pm UTC, 2008年04月06日
    How about Computer Organization & Design? I'd say understanding how a computer works is pretty essential...
  18. gravatar
    Jeremy
    10:14 pm UTC, 2008年04月06日
    Anyone got a better recommendation for an algorithm and/or data structures book? I find most of them types of books (including Introduction to Algorithms) seem to be made to use in a University environment, not self-study.
  19. gravatar
    landon dyer
    11:27 pm UTC, 2008年04月06日
    I'd definitely add a book on networking. Comer's books are a great introduction, but they don't scale beyond that, and the books by Stevens are great when you need something authoritative, but are hardly generalist works. (The OSI wars are over, so Padlipsky's _Elements of Networking Style_ is largely unnecessary today, but a lot of fun to read). We're left with Tannenbaum's books, but I don't really like them. Some book on LISP. I actually like reading Steele's 2nd edition of Common LISP, the Language but then I'm a sicko. Definitely gives the Java folks something to aspire to, though. Perhaps _The Little LISPer_, or the Scheme variants. Graphics are a similar quandry: Lots of good books, nothing really stands out as *the reference*. I never liked Foley and Van Damm, or Newman and Sproull (which dates me). For "fun" reading check out Jim Blinn's collected columns. The PostScript reference books were interesting as well. A good book on modern computer architecture is indispensable. _Modern Processor Design_ is good. Likewise, OS design. The _Inside Windows NT_ books are excellent (even if you hate Windows), and the book on porting Linux to the Itanium is great, too (I forget the title, it's published by HP). @Jeremy: Sedgewick's books on algorithms are what I used for self-study after I left college. They're well written and approachable, if not as deep as the "white book." For more fun: _Soul of a New Machine_, and _The Pentium Chronicles_, and _Managing Humans_.
  20. gravatar
    Dave Kirby
    11:46 pm UTC, 2008年04月06日
    Two more essential books - Refactoring by Martin Fowler Test Driven Design By Example by Kent Beck TDD & refactoring are the most important innovations in software development for the last 15 years. If you are not practicing them you are working in the programming dark ages.
  21. gravatar
    Dave Kirby
    11:47 pm UTC, 2008年04月06日
    Ooops - I meant "Test Driven Development", not "Design". But it is a design practice too.
  22. gravatar
    Nrrd
    1:13 am UTC, 2008年04月07日
    Ignoring technical manuals for a brief moment, for a bit of social history about hackers try Steven Levy's Hackers: Heroes of the Computer Revolution, which tells you about the culture and characters from three ages of computing history. 1960's era MIT, 1970's era homebrew computing and the 1980's games companies. Fantastic tales of bizarre characters and their crazy antics
  23. gravatar
    Dennis Groves
    1:51 am UTC, 2008年04月07日
    Very definately missing: Gödel, Escher, Bach: an Eternal Golden Braid (commonly GEB) is a Pulitzer Prize-winning book by Douglas Hofstadter. **Must** be among the books on any hackers bookshelf; and you better have read it too! ;-) This belongs right at the top of the list with SICP and Mythical Man Month. The dragon book is a favorite of mine. Everything there is to know about computer science is involved in compiler design. But I have to say "Introduction to Algorithms" might be a great intro text book, however the real hackers I know, need to know more than intro material - and head staight for the great works of Knuth.
  24. gravatar
    Nathan
    5:22 am UTC, 2008年04月07日
    The Dragon Book received an update last year.
  25. gravatar
    Tet
    12:46 pm UTC, 2008年04月07日
    A pretty good list, and one I'd generally agree with. I personally find the later editions of "Unix power tools" to be too perl-oriented, where the earlier editions were much better. I'd add Eric Raymond's "The art of Unix programming". ESR may have lost his marbles at times, but in that book, he manages to pretty accurately capture the philosophy that drives the Unix culture[1]. Even if you're not coding on Unix, the approaches laid out in the book should make you a better coder. [1] Although in places, he tries to force tools into that culture that really don't fit, such as Emacs -- I'd have preferred it if he'd just said "Emacs isn't a good fit with the Unix culture, but many hackers use it because it's useful".
  26. gravatar
    Jamie
    3:29 pm UTC, 2008年04月07日
    Snow Crash, how can you not have snow crash!!! I am in the middle of compiling my list, this is a really good reference although I think you are missing a few.
  27. gravatar
    adam
    7:09 pm UTC, 2008年04月08日
    number three is the book used in an MIT open course ware class...free online courses check it out
  28. gravatar
    dragoneater
    6:38 am UTC, 2008年04月09日
    The dragon book is best utilized for toilet paper. Seriously, do not waste your money on it, it's unreadable! I concur on the rest.
  29. gravatar
    _deepfire
    10:05 am UTC, 2008年04月09日
    dragoneater wrote: > The dragon book is best utilized for toilet paper. Seriously, do not waste your money on it, it’s unreadable! > > I concur on the rest. What book would you propose on compilers, instead?
  30. gravatar
    Jack Diederich
    3:01 am UTC, 2008年04月10日
    What, no Stevens?! I'll nominate "Advanced Programming in the UNIX Environment" a book that still works 15+ years after it was published.
  31. gravatar
    scott gardner
    12:57 pm UTC, 2008年04月15日
    I am amazed at the number of people who put the GOF Design Patterns book on their lists. It makes me wonder if anyone has actually read the book, or just put in down because everyone else has it. The book deserves recognition because it seemed to kick off the patterns idea, but the book itself is not a great read: dense, pedantic and at the same time obtuse (although to be both pedantic and obtuse takes some skill). I found the Head First patterns book and Holub on Patterns to be much more understandable. I was never a fan of the Hitchhiker books, so I would have to replace it with another.
  32. gravatar
    Rad
    12:22 am UTC, 2008年10月14日
    You might be interested in Nigel's comments. He's a Ghost developer (as in Symantec/Norton Ghost): http://radified.com/cgi-bin/yabb2/YaBB.pl?num=1223955866
  33. gravatar
    emorieVoicH
    6:24 am UTC, 2009年03月20日
    very intresting
  34. gravatar
  35. gravatar
    Bennet Huber
    9:27 pm UTC, 2010年05月19日
    Hitchhiker's Guide should be replaced by Neuromancer by William Gibson, as it is also great book (much better IMHO; I read the first 15 pages of HG and put it down after finding about 50 examples of Douglas Adams contradicting himself, which was a real turn off for me), and it fits better with the other nine listed
  36. gravatar
    Leon Waldman
    9:33 am UTC, 2011年02月06日
    +1 For Neuromancer... In the last 2 books... Douglas Adams... how to say... Lost he's focus. All the other books... I'm still to newbie to have read any... but will! :)
  37. gravatar
    Nat
    8:15 am UTC, 2011年02月14日
    +1. This is the first book I thought of when I read the title of the article.
  38. gravatar
    Sajidq
    5:25 am UTC, 2011年04月16日
    Very nice selection
  39. gravatar
    Alex Lewin
    4:38 am UTC, 2011年04月19日
    Not a fan of Unix Power Tools. I think it was out-of-date 15 years ago when I read (part of) it--I can't imagine how it reads now. And it was very uneven, too. Granted, it's been updated a few times since then, but still, there are certainly better books out there to include on such a "desert island" list. How about TCP/IP Illustrated? Or The Design and Implementation of the 4.4BSD Operating System?
  40. gravatar
    lusiphurscyla
    6:49 am UTC, 2011年04月24日
    You, crazy daisy! recommending the dragon book it's wicked-wicked. You need much more that a general idea... And what about, the TAOCP?
  41. gravatar
    Ruben Berenguel @mostlymaths.net
    2:35 pm UTC, 2011年05月05日
    Looks I'm not the only one who wrote a list of 9 best programming books. I love the fact that you added H2G2 and that we have little overlap (SICP and K&R only). I have been recommended Programming pearls repeatedly, I'll have to read it. Cheers, Ruben
  42. gravatar
    j
    12:31 pm UTC, 2011年10月13日
    This edition is bound in beautiful black leather and has a silk ribbon bookmark sewn into it. It’s like reading a very nice Bible, only more believable. (Mandatory disclaimer before any trolls find me: That was a joke.) Yeah, and it's funny beacuse it's true! And good recommendations, thanks!
  43. gravatar
    RSWallace
    4:53 pm UTC, 2011年11月23日
    Another essential is The Inmates Are Running The Asylum by Alan Cooper. This volume is subtitled Why High-Tech Products Drive Us Crazy and How to Restore the Sanity. This should say enough to attract some curiosity, I hope, as it seems to be written from both sides of the fence.

Leave a reply

AltStyle によって変換されたページ (->オリジナル) /