DEV Community

Cover image for 29 Must Read Books For Programmers

29 Must Read Books For Programmers

Blaine Osepchuk on November 14, 2018

These are my "must read" programming books. They are universally applicable: you'll benefit from reading them regardless of the kind of programming...
Collapse
 
rhnonose profile image
Rodrigo Nonose

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

Collapse
 
bosepchuk profile image
Blaine Osepchuk

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.

Collapse
 
swfisher profile image
Sam Fisher

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/

Thread Thread
 
bosepchuk profile image
Blaine Osepchuk

Thanks, I'll have to read that.

Thread Thread
 
elequ profile image
Elena Williams

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.

Thread Thread
 
swfisher profile image
Sam Fisher

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).

Thread Thread
 
bosepchuk profile image
Blaine Osepchuk

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

Thread Thread
 
bonfacekilz profile image
the_savage

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

Thread Thread
 
elequ profile image
Elena Williams

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.

Collapse
 
patricktingen profile image
Patrick Tingen • Edited

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
Amazon

Collapse
 
bosepchuk profile image
Blaine Osepchuk

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.

Collapse
 
mario_tilli profile image
Mario Tilli

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:

Collapse
 
bosepchuk profile image
Blaine Osepchuk

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.

Collapse
 
simoroshka profile image
Anna Simoroshka

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.

Collapse
 
bosepchuk profile image
Blaine Osepchuk

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

Collapse
 
akotek profile image
Aviv Kotek • Edited

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!

Collapse
 
bosepchuk profile image
Blaine Osepchuk

You're welcome.

The Effective Engineer is on the list.

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

Collapse
 
niorad profile image
Antonio Radovcic
Collapse
 
bosepchuk profile image
Blaine Osepchuk

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

Collapse
 
niorad profile image
Antonio Radovcic

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.

Thread Thread
 
bosepchuk profile image
Blaine Osepchuk

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.

Collapse
 
goldpeace99 profile image
Goldpeace99

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... .

Collapse
 
bosepchuk profile image
Blaine Osepchuk

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.

Collapse
 
goldpeace99 profile image
Goldpeace99

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.

Collapse
 
gypsydave5 profile image
David Wickes

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?

Collapse
 
bosepchuk profile image
Blaine Osepchuk

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.

Collapse
 
gypsydave5 profile image
David Wickes

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...

Thread Thread
 
bosepchuk profile image
Blaine Osepchuk

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.

Cheers.

Collapse
 
rattanakchea profile image
Rattanak Chea

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

Collapse
 
bosepchuk profile image
Blaine Osepchuk

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.

Collapse
 
xiris profile image
Christopher

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 :)

Thread Thread
 
bosepchuk profile image
Blaine Osepchuk

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.

Collapse
 
rattanakchea profile image
Rattanak Chea

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

Collapse
 
yorodm profile image
Yoandy Rodriguez Martinez

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.

Collapse
 
bosepchuk profile image
Blaine Osepchuk

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

Collapse
 
yorodm profile image
Yoandy Rodriguez Martinez

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.

Thread Thread
 
bosepchuk profile image
Blaine Osepchuk

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

Collapse
 
yucer profile image
yucer

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.

Collapse
 
solbiatialessandro profile image
Solbiati Alessandro

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 ;)

Collapse
 
bosepchuk profile image
Blaine Osepchuk

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

Collapse
 
utkarsh_var profile image
Utkarsh Verma

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

Collapse
 
yucer profile image
yucer

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.

Collapse
 
bosepchuk profile image
Blaine Osepchuk

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

Collapse
 
yucer profile image
yucer

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.)

Collapse
 
n_develop profile image
Lars Richter

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. :-)

Collapse
 
bosepchuk profile image
Blaine Osepchuk

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.

Cheers.

Collapse
 
zapjelly profile image
zapjelly

The Passionate Programmer by Chad Fowler

Collapse
 
bosepchuk profile image
Blaine Osepchuk

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

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

Collapse
 
tiffany profile image
tiff

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

Collapse
 
bosepchuk profile image
Blaine Osepchuk

Not yet, but it's on my list.

Collapse
 
atyborska93 profile image
Angelika Tyborska

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.

Collapse
 
bosepchuk profile image
Blaine Osepchuk

Good one! An absolute classic.

Collapse
 
s54mtb profile image
Marko Pavlin

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?

Thanks!

Collapse
 
bosepchuk profile image
Blaine Osepchuk

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.

Collapse
 
agusarias__ profile image
Agus Arias

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

Collapse
 
meresey profile image
Ndifu • Edited

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

Collapse
 
hisega profile image
Jesse Gabriel

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!

Collapse
 
yucer profile image
yucer • Edited

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.

Collapse
 
bosepchuk profile image
Blaine Osepchuk • Edited

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.

Collapse
 
rcneupane profile image
Ram Chandra Neupane

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

Collapse
 
jmfayard profile image
Jean-Michel 🕵🏻‍♂️ Fayard

Thanks, that was a great list, very practical, not one of those where people enumerate all the famous books just to sound smart.

Collapse
 
seankanderson profile image
Sean Anderson

Developer Hegemony by Erik Dietrich

Collapse
 
bosepchuk profile image
Blaine Osepchuk

Yes, I read Eric's blog religiously. I expect it would have made the list but I haven't read his latest book yet.

Collapse
 
seankanderson profile image
Sean Anderson

I was in awe at the clarity of his argument, and his clear writing style and voice. Struck me as an instant classic. Could not put it down.

Collapse
 
animanoir profile image
Óscar A. Montiel

thanks

Collapse
 
fannyvieira profile image
Fanny

Great

Collapse
 
skrish2017 profile image
Shashi

Thanks for the reading list Blaine. With the explosive nature of the web, reading coding books have become something of a forgotten tradition.

Collapse
 
bosepchuk profile image
Blaine Osepchuk

You're welcome.

I'm not sure it's true that people don't read books anymore. Newspapers and magazines, yes. But lots of people must be reading programming books. The publishers would stop releasing them if nobody was buying them.

Collapse
 
skrish2017 profile image
Shashi

I suppose you are right. I was thinking mainly from K-12 education perspective. In CS classes use of content from web. as samples/tutorials/interactive media, is more prevalent than printed material.

Collapse
 
pavlosisaris profile image
Paul Isaris

Awesome list, thanks!

Collapse
 
mufaddal1165 profile image
Mufaddal

Thanks for sharing ! :)

Collapse
 
jannolii profile image
Janno Liivak

I would add a book called "ABOUT FACE" (by Alan Cooper) into UI/UX section.

About Face: The Essentials of Interaction Design
a.co/d/9howFsS

Collapse
 
bosepchuk profile image
Blaine Osepchuk

Thanks for the recommendation. I'm more of a back end guy but the table of contents looks enticing. I've added it to my reading list.

Collapse
 
bennypowers profile image
Benny Powers 🇮🇱🇨🇦

I really want the mostly adequate guide to functional programming to be on this list.

Collapse
 
bosepchuk profile image
Blaine Osepchuk

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

Collapse
 
elequ profile image
Elena Williams

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).

Collapse
 
bosepchuk profile image
Blaine Osepchuk

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

Collapse
 
rifaimartin profile image
Rifai Martin

great!

Collapse
 
lynnewritescode profile image
Lynne Finnigan

Great list, thanks for this!

Collapse
 
papaponmx profile image
Jaime Rios

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

Collapse
 
neviarrawlinson profile image
Neviar Rawlinson

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.

Collapse
 
ewnetukefale profile image
ewnetukefale

Great List, I want to add refactoringui.com/book/ to the list of UI/UX.

It's a new book but has great content.

Collapse
 
bosepchuk profile image
Blaine Osepchuk

Thanks for the recommendation. It looks interesting.

Collapse
 
jesraygarciano profile image
Codetinerant

Awesome, how do i bookmark a post in Dev.to?

Collapse
 
bosepchuk profile image
Blaine Osepchuk

Search for the name of the post in the search bar in the header. Each result will have a 'save' button.

Collapse
 
ben profile image
Ben Halpern

Fantastic list Blaine.

For another few books of a different taste, folks might also like my list:

Collapse
 
wolfhoundjesse profile image
Jesse M. Holmes

I'm reading Dawn of the Code War right now. Based on this list, it may spark your interest!

Collapse
 
gypsydave5 profile image
David Wickes

Sounds interesting - what's it about?

Thread Thread
 
wolfhoundjesse profile image
Jesse M. Holmes

I never know how to respond to a question like this without launching into a lengthy narration.

It's about the internet being used for malice, and how we're trying to stay ahead of organized (yet seemingly sporadic) attacks.

Thread Thread
 
erclairebaer profile image
Claire McCrea

For not knowing how to answer the question, you did a great job! I'm looking up the book as we(I) speak(type). Thanks for the recommendation!

Collapse
 
emmabostian profile image
Emma Bostian ✨

Awesome list! I also recommend Growth Hacker Marketing. It's useful for people looking to create a project or startup. Also super short :)

Collapse
 
bosepchuk profile image
Blaine Osepchuk

Cool. Thanks for the recommendation.

Collapse
 
lotus profile image
Lotus

This list is fantastic! Thank you!

Collapse
 
bosepchuk profile image
Blaine Osepchuk

Thanks. I'm glad you enjoyed it.

Collapse
 
daquyanan profile image
Đá quý An An

That's a lot of books... Simpler is better, so I choose to read other's project and learn from them =)))