This is a follow up to the list of recommended books for a hacker’s bookshelf that was posted a few months ago. Here are 5½ more essential books for a hacker’s bookshelf. This list is based on reader suggestions, and like the previous list of recommended programming books, it contains a nice mix of computer science texts, developer references, and books giving insight into the programming industry. This is another list of hackers’ classics.
The Pragmatic Programmer: From Journeyman to Master
by Andrew Hunt and David Thomas
The “Pragmatic Programmer” is a high level overview of a wide range of practical topics in software development. It covers just about every aspect of software development including working in teams, source control, writing bullet-proof code, thinking critically, remembering the big picture, the benefits of knowing your tools, effective communication…and the list goes on.
“The Pragmatic Programmer” is organized around a series of practical tips for becoming a better software developer. Many of the tips are immediately implementable, and each tip is explained in a logical way and supported by entertaining anecdotes and quotes. The book contains a handy tear-out card that lists all of the tips.
This book is recommended for anyone who wants to be a better coder. It is probably best suited to beginner and intermediate developers, but advanced developers may find it a fun and worthwhile read as well.
The Art of Computer Programming, Volumes 1-4A Boxed Set
by Donald E. Knuth
According to The New Hacker’s Dictionary, a safe answer when you don’t know something is always: “I think you can find that in Knuth.” The Art of Computer Programming (TAOCP) is a probably the definitive computer science text. This boxed set contains the first 4 volumes of a planned 7 volume set. The 4 volumes included here are: “Fundamental Algorithms”, “Seminumerical Algorithms”, “Sorting and Searching”, and “Combinatorial Algorithms”.
I’m a bit embarrassed to say that I haven’t read TAOCP, but it’s been on my list of must reads for a while. I would recommend TAOCP to anyone who wants to fill in any gaps in their computer science knowledge.
The Art of UNIX Programming
by Eric S. Raymond
This book does a great job of explaining the old “hacker ethic” and explaining why *nix is the way it is. “The Art of UNIX Programming,” contains case studies and commentary from many of the big names in the *nix culture: Ken Thompson, Steve Johnson, Brian Kernighan, David Korn, and others.
This book really covers a lot of ground. The first part of the book is an introduction to the *nix history, culture, and philosophy. The main points brought up in the introduction are then well-illustrated by case studies. The book goes on to talk about the various tools that are available in the *nix ecosystem, and how to be a successful participant in the FOSS community.
This book is recommended for anyone who has an interest in operating systems history, the open source culture and philosophy, or just learning about different tools and techniques that will help in becoming a better coder.
The Little Schemer – 4th Edition
by Daniel P. Friedman and Matthias Felleisen
“The Little Schemer” (editions 1-3 were called the “Little Lisper”) uses a unique question and answer technique to create a dialog that really draws you into the book. It starts from first principles and gradually works up to more advanced topics like the halting problem and writing a Scheme interpreter.
Despite the title, this book isn’t really about Scheme; it covers only the basic features of the language, and doesn’t even introduce local variables. However, a more thorough treatment of Scheme is given in the next book in the serious, “The Seasoned Schemer.” What “The Little Schemer,” does do well is teach recursion and the art of “thinking in Lisp.” Recursion is a recurring theme that is continually expanded upon throughout the book.
This book is recommended for anyone looking for a mind-expanding treatment of recursion and the art of thinking like a lisper.
Peopleware: Productive Projects and Teams (Second Edition)
by Tom DeMarco and Timothy Lister
“Peopleware” focuses on the sociological aspects of software development. The authors state that for the overwhelming majority of failed software projects, the failure was due to sociological, not technical, problems.
This book is very well regarded in the industry, and I think a large reason for that is the underlying theme of Peopleware: developers, when given the chance, will do the right thing. Furthering this idea, a manger’s job is not to make people work, but to give people the ability to work. This means (among other things) private offices with closing doors for developers, and coders who are given intellectual responsibility over their jobs. The points are backed up by statistical evidence and often humorous anecdotes.
This book is recommended for anyone who manages software development projects, or aspires to lead a team of developers. Buying one for management could just convince them to ditch the cubicle idea.
by Neal Stephenson
“Snow Crash” is the obligatory science fiction book in the list. This book is one of the defining books in the cyberpunk genre, right along with Bruce Sterling’s work. “Snow Crash” is the story of Hiro Protagonist, last of the freelance hackers and the greatest sword fighter in the world, who delivers pizzas for a Mafia-controlled pizza franchise. He teams up with Y.T., a spunky young female skateboard courier in order to help his friend Da5id who was the victim of a computer virus with biological effects.
This book ties together ancient Sumerian myths, post-modern computer viruses, and biological hacking. The result is an almost matrix-esque hacker world view. For the most part, the book moves along very quickly from one surreal action sequence to another. My only complaint was that the section on Sumerian culture really bogged down the pace of the book.
“Snow Crash” is a must read for anyone who enjoys the cyberpunk genre and/or fast-paced, action-packed fiction.