29 Must Read Books For Programmers
Tags: career, productivity, learning, effectiveness
Published: 2018-11-14 00:19:57

---
title: 29 Must Read Books For Programmers
published: true
description: My must read programming books are universally applicable (you'll benefit from reading them regardless of the kind of programming you do).
tags: #career, #productivity, #learning, #effectiveness
cover_image: https://thepracticaldev.s3.amazonaws.com/i/t7w645zsqrcakmllua2s.jpg
canonical_url: https://smallbusinessprogramming.com/must-read-programming-books/ 
---
These are my "must read" programming books. They are universally applicable: you'll benefit from reading them regardless of the kind of programming you do. And the knowledge in these books will remain relevant throughout your career.

I hope you'll find a couple of good books to add to your reading list here.

**June 16, 2019: I'm no longer updating this post. You'll find my most up-to-date list of must read books for programmers (with working links) on my [blog](https://smallbusinessprogramming.com/must-read-programming-books/).**


### Career
The first thing you have to figure out, if you haven't done so already, is what kind of career you want and how to get it. This book will help. Actually, it will help anyone get more satisfaction out of their career.

* ***So Good They Can't Ignore You*** - Cal Newport (Why follow your passion is bad advice and what you should do instead)


### Learn how to learn 
Learning new skills is hard. Change is hard. So why not learn how to make new behaviors stick and learning new things easier? These books will help.

* ***The Power of Habit: Why We Do What We Do in Life and Business*** - Charles Duhigg (Learn how habits actually work so you can make lasting changes by working with your brain instead of against it)
* ***The Spirit of Kaizen: Creating Lasting Excellence One Small Step at a Time: Creating Lasting Excellence One Small Step at a Time*** - Robert Maurer (Kaizen is the practice of making small, continuous improvements. Toyota used it to improve the quality of their cars and become the biggest car maker in the world. You can use it to improve just about anything as this book demonstrates)
* ***Badass: Making Users Awesome*** - Kathy Sierra (Most people learn inefficiently. This book shows you a better way) ([YouTube summary](https://youtu.be/FKTxC9pl-WM)).


### Personal effectiveness
The first three books below are all slightly different takes on the same advice. No matter what your profession or education or task, effective people tend to share a similar mindset and employ similar techniques. Read the book that resonates with you the most. 

* ***The 7 Habits of Highly Effective People: Powerful Lessons in Personal Change*** - Stephen Covey (a classic)
* ***The Effective Executive: The Definitive Guide to Getting the Right Things Done*** - Peter Drucker (another classic)
* ***Great at Work: How Top Performers Do Less, Work Better, and Achieve More*** - Morten Hansen (a modern take on the genre)

Checklists can be a game changer. I've got tons of them and you should too.

* ***The Checklist Manifesto: How to Get Things Right*** - Atul Gawande (Learn the power of simple checklists to improve your performance and reduce errors)


### Programming effectiveness
Once you've mastered personal effectiveness, it's time to learn how to be an effective software developer.

* ***The Effective Engineer: How to Leverage Your Efforts In Software Engineering to Make a Disproportionate and Meaningful Impact*** - Edmond Lau (Gets you focused on the right things)
* ***The Pragmatic Programmer: From Journeyman to Master*** - Andrew Hunt and David Thomas (Shows beginners how to apply their craft and level up)


### Writing code
I still meet programmers who haven't read these classics. What are you waiting for?

* ***Code Complete: A Practical Handbook of Software Construction, Second Edition*** - Steve McConnell (Evidence-based recommendations on software construction--**MY BIBLE**)
* ***Clean Code: A Handbook of Agile Software Craftsmanship*** - Robert C Martin (Every programmer in my workplace is paid to read this book. Learn the importance of readability and maintainability and the cost of owning a mess. I agree with almost all of it (except forcing people to write extremely short methods))
* ***Code Simplicity: The Fundamentals of Software*** - Max Kanat-Alexander (It's easy to get lost on the theory, opinions, and patterns we are urged to use when creating software. This book puts it all in perspective. It's simply 80 pages of amazing wisdom--**MUST READ**)


### Software engineering
Despite what most people believe, software engineering does have a body of knowledge backed by research. Don't go against the research and expect your project to turn out okay--it probably won't.

* ***Facts and Fallacies of Software Engineering*** - Robert Glass (Evidence of what works and what doesn't. If you're breaking any of these rules, you better have a good reason to think the research doesn't apply to you)
* ***Rapid Development: Taming Wild Software Schedules*** - Steve McConnell (Evidence-based recommendations on project/team management--**MUST READ**) 
* ***Making Software: What Really Works, and Why We Believe It*** - Andy Oram & Greg Wilson (I don't love this book. It's written as a bunch of essays and it's kind of long winded and disjointed. However, if you want to avoid doing something foolish, and you've read the other books in this section, give this book a try after)


### Leadership
Leadership is a mindset and a set of skills, not a title or position. Anybody can be a leader. As your career progresses and you gain responsibilities, you need to sharpen your leadership skills.

* ***Measure What Matters: How Google, Bono, and the Gates Foundation Rock the World with OKRs*** - John Doerr (How to get everybody in your organization pulling as hard as they can in the same direction) 
* ***Turn the Ship Around!: A True Story of Turning Followers into Leaders*** - L. David Marquet (Leader-leader instead of leader-follower. Your organization will perform at the highest levels if everyone is 100% engaged in their job and working towards a common objective. You will learn how to give everyone in your organization the 3 Cs: control, competence, and clarity to make their maximum contribution)


### Project management
Just because you're a good coder and you've been around for a while, it doesn't mean you can run a project. Avoid all the beginner mistakes by reading these books. 

* ***Rapid Development: Taming Wild Software Schedules*** - Steve McConnell (Evidence-based recommendations on project/team management--**MUST READ**) 
* ***Essential Scrum: A Practical Guide to the Most Popular Agile Process*** - Ken Rubin (Excellent advice on scrum and project management in general. Very high signal-to-noise ratio)
* ***The Lean Startup: How Today's Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses*** - Eric Ries (Learn why building an MVP and using the build-measure-learn cycle is so important)
* ***The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win*** - Gene Kim & Kevin Behr (Learn how you can apply the Theory of Constraints and Lean to turn around a trouble project (or prevent it from getting into trouble in the first place))


### Advanced project management
Once you've got the basics down and your projects are no longer raging garbage fires, consider learning the advanced project management techniques described in the following books.

* ***The Principles of Product Development Flow: Second Generation Lean Product Development*** - Donald Reinertsen (Corrects the errors people naturally make by trying to apply Lean and Six Sigma techniques from the manufacturing world to the product development world--not suitable for beginners)
* ***Goldratt's Theory of Constraints: A Systems Approach to Continuous Improvement*** - William H. Dettmer (A systematic approach to finding the constraint in your organization and overcoming it. This is a huge lever--not suitable for beginners)


### Unit testing
If you're not unit testing yet, what's stopping you? These books will get you started.

* ***Starting to Unit Test: Not as Hard as You Think*** - Erik Dietrich (A Beginner's guide to unit testing)
* ***Working Effectively with Unit Tests*** - Jay Fields (Unit testing best practices for people who know the basics)
* ***Working Effectively with Legacy Code*** - Michael Feathers (Very famous book on getting existing code covered by automated unit tests--a notoriously difficult task)


### Data analysis and statistics
You need data analysis skills to measure your results. Many programmers lack the statistics knowledge and the skills required to correctly apply statistical tests to data and come up with sound conclusions. These books will help.

* ***Data Analysis with Open Source Tools: A Hands-On Guide for Programmers and Data Scientists*** - Philipp K. Janert (This is the book you need when your boss dumps a ton of data in your lap and says "find the insights." I love this book)

Any introductory book on statistics. The following books are much better than the textbooks I read in university:
* ***Statistics For Dummies*** - Deborah Rumsey
* ***Statistics II for Dummies*** - Deborah Rumsey


### User interface/user experience
Most programmers don't pay enough attention to user interfaces and user experience. These books are written for programmers and they'll teach you everything you need to know.

* ***Don't Make Me Think, Revisited: A Common Sense Approach to Web Usability*** - Steve Krug (amazing!)
* ***Rocket Surgery Made Easy: The Do-It-Yourself Guide to Finding and Fixing Usability Problems*** - Steve Krug (also amazing!)


### Wrapping up
So that's my list of "must read" programming books. There's enough material here to keep you busy for a couple of years so please don't think you should read all these books immediately. We already have enough problems with unrealistic expectations in our profession and I don't want to add to them.

Don't just skim through these books so you can check them off some list either. The important point is to ***take as much time as you need to learn a new skill that's important to you***.  

I almost certainly missed some really great books. Feel free to suggest more "must read" books in the comments.