Cover image for 29 Must Read Books For Programmers

29 Must Read Books For Programmers

bosepchuk profile image Blaine Osepchuk Updated on ・7 min read

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 on my blog.


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.

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.

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.

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

Programming effectiveness

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

Writing code

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

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.


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.

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.

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.

Unit testing

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

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.

Any introductory book on statistics. The following books are much better than the textbooks I read in university:

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.

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.

Posted on Nov 14 '18 by:

bosepchuk profile

Blaine Osepchuk


I'm a small business programmer. I love solving tough problems with Python and PHP. If you like what you're seeing, you should probably follow me here on dev.to and then checkout my blog.


markdown guide

More classics: The Mythical Man-Month (Frederick Brooks) and The Cathedral and the Bazaar (Eric Raymond) for "agile" and project management.


I've read The Mythical Man-Month. I know lots of people love this book but I prefer Steve McConnell's books. I just feel they are more actionable and supported by data. But anyone who reads Brooks instead will not be disappointed.

I haven't read the second book. I'll look into it. Thanks.


Eric Raymond's other book "The Art of Unix Programming" is the best book I've ever read about software engineering principles and philosophy, even though it's cleverly disguised as a book about Unix. catb.org/esr/writings/taoup/html/

Thanks, I'll have to read that.

Objectively I think the Eric Raymond book hasn't aged well (as someone with a hard copy that I thought was out of obsolete 5 years ago).

Further ESR himself has shown some pretty bad behaviour in recent years.

Which Eric Raymond book are you refering to, Art of Unix Programming or Cathedral and the Bazaar? If it's the one about Unix I'd be particularly interested in the ways in which you've found it obsolete.

I didn't know about the controversy around his behavior, but it's clearly evident from a google search. That's really a shame and I'll see if I can learn more about it, esp before making an idol of his Unix book (which I really like).

Interesting. Care to elaborate on the shortcomings of "The Art of Unix Programming"?

What do you mean ESR's book hasn't aged well?

Heya, I haven't read the Unix one, I was talking about the Cathedral and the Bazaar.

Honestly I wanted to like it and was stoked to come across it as there are so few books on the topic (and at the time also wasn't aware of ESR's now-bad rep, actually as an emacs user myself I though highly of him) and I was trying everything I could in the area because I was prepping a talk for PyCon US.

It pre-dates distributed version control (ie git) and comes from a time when freshmeat.net was the coolness for FOSS, how many people even remember that now? github wasn't even imaginable from the place where that book is written.

It's about emailing patches and old skool hax0r behaviour, that time is just past and really not that relevant to anyone who wasn't there.


Thanks for the list, there are some titles that are new to me.

And I would like to add one title that I think is missing. It is my all time favourite book; "Design of everyday things" by Don Norman. The first draft is from 1988 but a second revised draft is from 2013. The book describes how items can be designed so that the user naturally uses it the way it was meant to be used. The cover of the book illustrates that in a brilliant way. The book teaches you to look with different eyes to things around you. It certainly changed my way of looking at things.

cover of Design of everyday things


Yes. Thanks for the suggestion. It is a good book. I've read the original but want aware there's an updated version.

I chose the books by Steve Krug instead because they are more directly applicable to our work as programmers.


Thanks so much for this list!! I've pinned some of them that I'm going to read. I would like to add two of my books always handy on my desk:


Great suggestions.

I've read the first book and it would have made the list if DDD were a little more popular.

I haven't read the second book but I hear good things.


I went and bought the first one on the list yesterday. I wish I read it at least 5 years ago and didn't have to learn this stuff from my own mistakes. Better, 10 years.
Everyone who strongly believes in "follow your passion" should read it.


I agree. He presents a compelling alternative to the "passion hypothesis."


Interesting. Why should Peopleware be in the list? What does it offer that isn't covered by one of the other books?


It's an often cited book about team-work and the importance of having stable teams, and how to achieve that.
I'm sure some material has been covered in other books but this one is as on-the-point as it gets. English non-fiction books tend to be very repetitive, which this one isn't at all.

I've read it. I thought it was okay but I've never recommended it to anyone. I'd recommend Rapid Development over this book every time but there's plenty of room for people to love Peopleware too.

Thanks for recommending it.


Great list! thanks for sharing!!

You mentioned Carl Newport, have you read his DeepWork book?

Would also recommend 'The Effective Engineer' effectiveengineer.com/book
and Yegor Bugayenko books!


You're welcome.

The Effective Engineer is on the list.

I haven't read Deep Work yet but it is on my list. Thanks.


I think that a programmer has to know how the compilers work so I think that the Compilers: Principles, Techniques, and Tools (2nd Edition) a.k.a The Dragon Book for Compilers amazon.com/Compilers-Principles-Te... .


Interesting. Why do you think that's important?

Many of us work in languages that are interpreted. But even those of us who work in modern compiled languages tend to treat the compiler as a black box.


Well even if you work with languages that are interpreted it won't hurt to read this book.

If you read this book you will be able to make a interpreter or compiler. Even if you don't want to create a new language it can help you in various ways.

If you understand compilers and interpretators you will gain really deep knowadge about computer science concepts. It has a lot of like basic knowledge which isn't taught or learnt from the beginning since you need to know a bunch of other stuff first.

I know that a lot of developers have survived without ever writting a compiler. They just press F5 and then they have a working program (of course if you have no errors). If you understand compilers it will be easier for you to debug your code. Especialy if you know assembler and have a black box debugger. Having this knowadge will help you analyse your code in a whole new way and make you better.


Awesome collection. I will pick one from your list every month. Lol. 29 months to go.


It's no joke. You could read a book a month but it will take much longer than 29 months to master the content. I'm still working on it myself and I started almost 20 years ago.


The best insight from the whole thread :D
Software engineering is a continuous improvement.

I believe "The five dysfunctions of a team" deserves some attention, specially for people working in teams and the leaders out there. I'm unsure it should be in the list, but def. a good read :)

Yes, good feedback, Christopher.

I enjoyed reading "The Five Dysfunctions of a Team" but it didn't occur to me to add it to the list.

Anyone on a dysfunctional team will find something useful in this book but--as best as I can recall--it didn't offer many solutions to members of a team. I believe it was all about what you could do if you were the leader of a dysfunctional team.


That was just my optimistic understatement. However it is doable, if reading for breadth and familiarity of key concepts.


I've enjoyed looking at this list... but I've noticed you're leaving out some books that many others would put in - say XP Explained and Test Driven Development by Kent Beck. Or Clean Code by Robert Martin.

I'm interested in whether you've left them out because of an oversight, or because you don't practice test driven development?

That said, it's great that a good proportion of these books are ones I've never heard of. Which is the one book in your list that you think that never gets read but that everyone should read?


Good questions.

Clean code is on the list.

I've read and did consider adding test driven development but I decided against it. I was trying to keep the list appilable to a wide audience and based on what I see here on dev.to, many people aren't even unit testing so I thought I would emphasize that with some beginner-intermediate material.

I haven't read XP Explained so I can't comment on its content.

The list was never meant to be comprehensive. There are no architecture, requirements, lifecycle management, security, or manual testing books on the list either.

The most under appreciated book on the list is Rapid Development. It's 22 years old and I read it for the first time this year. It holds up. I've been programming and reading widely for almost 20 years and that book had me underlining stuff left and right. The worst thing about that book is its misleading title (which is what kept me from reading it for so long). It's actually the other half of Code Complete and covers everything it didn't. If new developers could only read two programming books in their whole career, I'd choose those two.


Clean code is on the list.

That'll teach me... must've gone snow blind for a second!

I haven't read XP Explained so I can't comment on its content.

Well, I'll recommend it! It's short, and brevity is a quality all of its own!

Fair point about TDD - I was just interested to see unit testing talked about outside of TDD.

The most under appreciated book on the list is Rapid Development

It's now on the Christmas list - hopefully I've been nice not naughty...

Ah, yes, I remember XP Explained now. I saw Kent Beck talk about how he completely rewrote the second edition instead of the update he had planned to do. I've added it to my reading list.



Despite what most people believe, software engineering does have a body of knowledge backed by research.

Those people should meet with some of my ex faculty members and some of my old professors..

I would add the whole Pattern Oriented Software Architecture series to your list.


Thanks for the recommendation. I've added the first book in the series to my reading list. It looks quite interesting.


I keep the second volume around. It explain concurrency, synchronization and event handling in networking, very helpul for those who struggle with async programming these days.

Ah, I'll keep that in mind. I'm lucky enough not to have to deal with async programming.


About personal effectiveness I would definitely recommend Principles - Ray Dalio, where he introduce a systematic way to approach decision making that is really close to the computer science reasoning in my opinion. There is also a YouTube video that sums the book up in an excellent way ;)


Thanks, Solbiati. I'll watch the video and then read the book if I want to know more.


The best programmers that I have been able to talk face-to-face have started by this book:

I use it as first recommendation everywhere. I think it is recognized in the field as a classic.

Although many people could thing it is about Software Engineering I can not imagine a programmer that doesn't profit of reading it.


The Passionate Programmer by Chad Fowler


Thanks. I've added it to my reading list.

Can anyone tell me how this book compares to "The Effective Engineer"?


Hi! Thanks for useful list. I am self learned programmer, mostly in C, but as I started 30 years ago, I went through many "dinosaurs" like clipper, delphi, ...

I read lot about higher level application programming but less about how to deal embedded projects. Line between microcontroller and microprocessor systems is blured more every year, but the programming remains divided into different groups. Is there any good book about learning modern embedded programming, "lower" level driver programming and how it is done nowadays?



You're welcome, Marko.

The line is indeed blurring. I get paid for my web dev work but I dabble in embedded on the side.

I really like what Philip Koopman has to say on embedded. I've linked you to his blog but he's got YouTube videos and a book as well (which I haven't read).

There are also some really interesting embedded books on Amazon that I've been eyeing but haven't purchased yet. You might find something you like there based on the reviews.


I'm not a big fan of "XX books every developer must read" posts, because the view on this is (of course) heavily subjective. But that is not the problem.
For me, these titles sound a lot like "you're not a real developer, if you haven't read these books". Arve Solland wrote a nice article about this.

I know that most of the time the title is really meant as "XX books a really enjoyed and recommend".
So from time to time a still skimm through a list of book recommendations. Just like this one.

And I'm so happy that you recommended "Starting to Unit Test: Not as Hard as You Think" by Erik Dietrich. I was a little skeptical, because (to me) the title
sounds like "A beginners guide to unit tests". But I read it anyhow and I really enjoyed it. And I'm not new to unit testing and still took so much information from this book. Erik Dietrich provides so many valuable tips for everyone who is writing tests.

After I was done reading Erik's book, I immediately started "Working Effectively with Unit Tests" by Jay Fields. And so far this as also great.

So even if the start of my comment might sound a little frustrated, I really wanted to say thank you for the great book recommendations. :-)


You're welcome.

An acquaintance asked me for a list of programming books he could read to up his software development game. I spent a fair bit of time creating that list and, at some point, I got the idea to turn it into a blog post.

I'm sure many brilliant developers haven't read half the books on this list. In fact, I'd be willing to put money on it. These are just the books that were helpful to me.



I would also recommend How to Win Friends and Influence People by Dale Carnegie to every programmer that sometimes struggles with the human aspect of the job. Keeping in mind lessons from this book definitely helps me manage conflicts at work.


Good one! An absolute classic.


Awesome list! Thanks for sharing :) I'm thinking of starting with Clean Code - Robert C Martin


Cal Newport’s books are anathema to my distracted brain. Excellent read. Have you read Deep Work by Cal? So good.


Not yet, but it's on my list.


Also, we have this classic book: The Art of Computer Programming.

It is like a bible of algorithms. It might be more for computer scientists, but programmers should read it from time to time.


Interesting. Why would programs read it from time to time? What will they get from it?


Because it is like a complete reference of algorithms.

Let us see, the complexity of a software system comes from:

  1. Functional requirements (problem domain)

  2. Non functional requirements (user interface, persistence, ...)

Almost the 85% of the code correspond to the 2., but those can have generic solutions and most of the type they are included into software components or frameworks.

Nevertheless, from time to time, a programmer would need to face the 1. type.

There you'll need to know the data structures inherent to the problem you are trying to model, how to represent them in your system and which algorithm fits its resolution.

This is a more higher level of programming that, let us say, make a web site or query a database system. It is more unlike to be replaced by future software stacks.

So learning to face problems of type 1. a programmer its more likely to be needed in the future.

Actually the natural evolution of a programmer is to become a computer scientist (type 1.) or a software engineer (type 2.) or a system admin (type 2.)


Thank you for sharing great list.

I would like to add two of my favorite books.
Atomic Habits: By James Clear
The Obstacle is the Way: By Ryan Holiday


My name is John, a budding web developer from Kenya. I am excited by the content in this platform. Rock on DEV team!


Also I don't see books about database or database theory.

The Relational Model for Database Management (Edgar F. Codd). Is the classic book for relational databases.

C.J.Date is also an author of masterpieces in the topic.

With the advent of social networks, where the correlations of database write/read increased, NoSQL databases became popular. I would like to hear about the classic book there. Actually I did my first steps in this topic using the official docs of the different databases (Cassandra, CouchDB, MongoDB, Neo4J, BerkleyDB).

It was particularly interesting for me, the introduction of this book:Programming the Semantic Web. It shows the limitations of the relational database for systems that needs an evolving database and how graph database could handle it. It shows the example of a restaurant app, and evolves it from the relational model to a graph. One of such illuminating examples where you say: Aha ! I understand what it is this paradigm about.


I tried to keep the list applicable to all developers and I freely admit that there are entire topics I've missed. Databases, security, and architecture are just a few examples.

Thanks for adding your recommendations.


I usually think that finding resources online are enough, but these books are interesting enough for me to actually want to read them. Thanks for this list!


I'll give those a try! Thanks for this.


I'm confident that this is more than 29 books.

My count says 31. If you're counting 32 note that Rapid Dev is listed twice (which is fine).


100% correct. Rapid Development is listed twice and I didn't count the statistics books.


I've read some of them. Thanks for sharing!


Thanks for this list! I will definitely be referring back to this for my next reading materials. Currently I’m working/reading through JavaScript and JQuery by Jon Duckett.


I'd never heard of that book. But I downloaded a copy and I'll take a look. Thanks for the suggestion!