Gallery: 20 books that every programmer should read
Image 1 of 21
Not all the solutions are found on Stack Overflow
There are plenty of careers where books are essential, and to the casual observer software development wouldn’t seem to be one of them. Programmers who stand out from their peers know better.
You can easily find solutions to all your coding roadblocks with a Google search, but the solution to a syntax error won’t teach you about your craft.
Programming, coding, software development–whatever you call it, those are the things you do. What you are is a developer, and that isn’t just a job: It’s the modern equivalent of the skilled artisan of yesteryear.
Each and every program is handcrafted by a software artisan. To become a programmer who rises above the crowd of “people who know how to program” you need to take every opportunity to learn, hone your mind, improve your skills, and think like a craftsman.
Here are 20 books to help you do just that. They won’t teach you to code–that’s what the internet is for–but they will teach you to be a programmer.
Editor’s note: This gallery was updated to include additional titles.
1. The Pragmatic Programmer
Published way back in 1999, The Pragmatic Programmer: From Journeyman to Master is probably familiar to most developers. It’s consistently included in lists like these, and with good reason: It is a thorough course on thinking and acting pragmatically.
Authors Andrew Hunt and David Thomas both have years of programming experience under their belts, and they’ve distilled the life lessons they’ve learned about coding in this indispensable book. Do yourself a favor and add it to your reading list.
20 years is a long time for any computing product, and that includes books. The authors have issued an all-new version for the modern computing world: The lessons remain the same, but The Pragmatic Programmer, 20th Anniversary Edition updates them for a totally new world of computing.
2. The Art of Computer Programming
Computer scientist and creator of the TeX typesetting system, Donald Knuth brings some serious credentials to this book–his professors even simultaneously awarded him a master of science along with his bachelor’s degree because they thought he was that amazing.
The Art of Computer Programming is a massive multi-volume series of books that Knuth began working on in 1962. As of 2005, four volumes of a planned seven have been released, and the series is so highly regarded that it earned him the Turing Award in 1974 and has also been referred to as the profession of computer programming’s defining treatise.
3. Don't Make Me Think
The thesis of Don’t Make Me Think is right in the title: Users of your program should be able to get things done without even having to think.
While the book is geared toward web design, its lessons hold true for all kinds of development: Usability is what your entire project should be based around. No one wants to take the time to figure out how well your program works if basic tasks are cumbersome or confusing.
4. Coders at Work
Developers frequently turn to other developers for feedback, advice, and nuggets of wisdom. If you’re the kind of developer who likes to hear what others have to say, Coders at Work was written for you.
A compiled series of interviews with some of the biggest names in programming, Coders at Work picks the brains of the greats to find out how they learned, how they work, and what they think about the profession of programming.
5. The Mythical Man-Month
I have to admit that when I first saw this title I thought it said Man-Moth and I wondered what a book about cryptozoology was doing in the programming section. This book isn’t about the urban legend behind a Richard Gere movie and is instead about myths surrounding development and development teams.
The Mythical Man-Month takes its title from one of the essays in the book, which truthfully, if not a bit snarkily, says “adding manpower to a late software project makes it later.” This has come to be known as Brooks’s Law, named for the author Frederick Brooks.
Brooks’s series of essays is important to dispelling myths surrounding the profession of programming and it does so with a healthy dose of dry humor that every coder is sure to appreciate.
6. Code Complete 2
The second edition of Code Complete is considered a must-read in the software development world, not only for its lessons in different styles of development, but also for its practical lessons in thinking differently.
Code Complete 2 tries to drive programmers past bad habits like code-and-fix and the waterfall model and toward trim, efficient, and effective code. It also contains lots of examples to further demonstrate what it’s trying to teach.
7. Cracking the Coding Interview
For the sake of this list, think of Cracking the Coding Interview less like a book on how to land a job and more of a workbook for honing your problem-solving skills. It contains 189 questions commonly asked in coding interviews and walks readers through how to solve them.
If you want to get a taste of not only what you’ll be asked in interviews, but the kinds of tricky problems you may have to solve in the real world, Cracking the Coding Interview should be on your bookshelf.
8. Soft Skills: The Software Developer's Life Manual
Coding, according to the synopsis of Soft Skills, is the fun part of being a developer. The time spent not coding is what’s difficult.
Author John Sonmez covers a lot of how to live in this book, from finding the right company to staying in shape to being happy–it’s all there. If you find life away from the computer to be a hassle you should give Soft Skills a read.
9. Zen and the Art of Motorcycle Maintenance
Computer programming is not a part of this book, but it still belongs on this list. Zen and the Art of Motorcycle Maintenance is a book about how two different mindsets approach the world and how to harmonize both of them.
On the one hand, you have people who live in the moment and don’t seek to dive deep to understand things. On the other hand, you have analytical people who constantly investigate, problem solve, and seek to understand.
The romantic-vs.-analytic conflict set up by Zen hinges on how the two approach technology: As either dehumanizing drudgery or beautiful and artistic. Sure, the focal point is motorcycles, but the lesson applies to programming as well, and it’s one of finding balance.
Don’t completely forget to embrace a bit of romanticism from time to time, and you’ll quickly find you can be zen while still being analytic. The anxious among us should take note.
10. Clean Code
Good code and bad code can both work just fine, but bad code will eventually come back to bite you when you least expect it. Clean Code wants to help you root out bad code, purge it, and transform it into agile, beautiful examples of the craft of computer programming.
Full of case studies, examples, and exercises, Clean Code is designed for the programmer who truly wants to become an artisan. If you want to take your game to the next level be sure to check it out.
11. Continuous Delivery
One of the worst parts of being a programmer is also one of the most essential: releasing updates. Long update cycles or lapses between patches can make simple changes a nightmare, which is what Continuous Delivery wants to fix.
This book details a new approach to updating code with the aim of making update cycles nearly constant and explaining what it takes to get there. It’s a good read for decision makers and those they listen to.
12. Working Effectively with Legacy Code
One of my first jobs in IT was at a physics laboratory where much of the software was written by long-gone graduate students. The depths of this mission-critical code was largely unplumbed, and supporting it was a near constant nightmare.
Sound familiar? Most programmers have dealt with legacy systems at some point in their careers, and many good devs have been stopped dead in their tracks by the unexpected surprises the code contained. If you want to learn how to approach, troubleshoot, and fix old software you need a copy of Working Effectively with Legacy Code.
13. Code: The Hidden Language of Computer Hardware and Software
I’m the kind of learner who doesn’t like to accept at face value that something just works–I want to know why and how. As computers automate more and take simple tasks away from our daily lives, there are lots of areas in which we’re left wondering how something does what it does.
The most simple answer is that it does it with code.
Code: The Hidden Language of Computer Hardware and Software tries to answer the questions you may have about how computers work. Even developers are subject to the automation of certain fundamental skills, leading to a generation of programmers who don’t actually understand what’s happening at the most basic level of the software they create. If you’re curious, this is the read for you–it might just enrich your understanding of things you do every day.
14. Programming Pearls
This is not a book about the Perl programming language. It is instead a book of “pearls” created by nagging problems that have bothered developers. Like a pearl created by an oyster, some of the most beautiful and elegant pieces of code started out as an irritating grain of sand.
Programming Pearls contains essays that each try to instill lessons of thinking like a programmer. Examples of code fill the book as well, making it a great bit of reading that contains fundamental and practical advice for improving your skills.
15. Introduction to Algorithms
If you want to code for a living you’re going to be working with algorithms. Introduction to Algorithms has been the gold standard in learning how to understand and use them ever since it first came out in 1989.
Yes, it’s a textbook, but I still have plenty of my college books on the shelf at home because they’re valuable professional resources. Introduction to Algorithms is one that should be on your shelf, too.
Also see
- The 10 easiest programming languages to learn (TechRepublic)
- 10 tips for becoming a better programmer (TechRepublic)
- How to learn programming: 3 languages to get you started (TechRepublic)
- Download: The truth about MooCs and bootcamps–Their biggest benefit isn’t creating more coders (TechRepublic)
- The Complete Learn to Code Bundle (TechRepublic Academy)
- Job description: Platform developer (Tech Pro Research)
- Job description: DevOps engineer (Tech Pro Research)
- Software developers: We’re on board with low-code (or even no-code) tools (ZDNet)
16. Structure and Interpretation of Computer Programs
Another college textbook, Structure and Interpretation of Computer Programs (SICP), was the gold standard at MIT for its introductory electrical engineering and programming courses when it came out in 1985.
It focuses on a dialect of Lisp called Scheme, but that doesn’t mean it’s unimportant to non-Lispers. SICP is structured around the basic ideas in computer programming and their implementation. It’s a great resource for beginners and experienced coders alike, and the kicker is that it’s now licensed under Creative Commons, so MIT has the full SICP on its website available for free. Those who want a hard copy can still get one, too.
17. Inside the Machine: An Illustrated Introduction to Microprocessors and Computer Architecture
17. Inside the Machine: An Illustrated Introduction to Microprocessors and Computer Architecture
I’ve never been especially skilled at math, and my freshman year in college proved that to me more than anything else ever has. I had to regress back to high school mathematics and catch up because my fundamentals were so weak.
Programming can create similar frustrations, especially if you feel like there’s something fundamental to understanding computer science that’s holding you back.
Inside the Machine was written to answer those computer science building blocks questions that many programmers have. It’s all about the basic structure of computers, how they work, why the work the way they do, and how programs fit into the whole scheme. If you want a deeper understanding of why your code does what it does this is a worthwhile read.
18. The Manager's Path: A Guide for Tech Leaders Navigating Growth and Change
This book is all about taking the journey from programmer to leader, but just because it’s focused on those looking for a different role doesn’t mean it’s not an essential read for developers happy with their current roles.
By focusing on leadership from a developer’s perspective, The Manager’s Path gives developers a look at how tech leaders think. Consider it a tool that can be used alongside any soft-skills manual–by understanding how colleagues think the whole team can be improved.
19. The Complete Software Developer's Career Guide
The Soft Skills book mentioned earlier in this gallery has a reputation as being one of the cornerstone books for any new software engineer starting a career. Its author has written a second book, The Complete Software Developer’s Career Guide; developers building a library should give this one a look as well.
The book is designed around a series of practical lessons for those in the development world, each of which can apply just as much to a recent college graduate as to someone with 20 years of experience under their belt: whether or not contract work is worth it, how to identify and fill knowledge gaps, technical skills that aren’t often taught in college, and more.
20. Grokking Algorithms: An Illustrated Guide for Programmers and Curious People
20. Grokking Algorithms: An Illustrated Guide for Programmers and Curious People
Algorithms make up the cornerstone of programming no matter the language you use or the type of software you develop.
Understanding algorithms can be trickier–for many they’re abstract concepts that can be hard to grasp. Grokking Algorithms understands that, and presents an introduction to algorithms that’s fully illustrated and designed to help developers understand and integrate common algorithms into their coding.
If you want to understand algorithms but don’t have the patience for long, wordy explanations then this is a book worth looking at.
-
-
Account Information
Contact Brandon Vigliarolo
- |
- See all of Brandon's content