1:43 5. Extreme Programming Explained. 4:28 4. The Pragmatic Programmer. 6:00 3. Design Patterns. 8:16 2. Accelerate. 14:37 1. Domain Driven Design. Other Mentions 4:14 Rapid Development. 4:18 Code Complete. 5:28 Clean Code. 11:10 Fifty Quick Ideas to Improve Your User Stories. 11:30 Programmer's Guide to the IBM PC. 11:52 The C Porgramming Language, The C++ Programming Language. 11:54 Programming Windows. 12:39 The Mythical Man Month. 13:16 Modern Software Engineering. 14:02 Refactoring. 14:03 Team Topology. 16:03 The Beginning of Infinity.
Refactoring by Martin Fowler has been a liberating book for me. You can learn as much as you want about design, but Refactoring gives you the freedom and peace of mind of not having to reach good design from the get go but teaches you the tools that will lead you towards it, one incremental step at a time. It seems obvious once you have this knowledge, but you need to learn it before the other books are fully useable in your daily activities. Then DDD is one of my favourite books as well but I don't think I absorbed everything from it yet and that will require a few more readings before that happens.
Refactoring is a good book, but mostly as a reference. Most of our modern tooling implements these Refactorings for you automatically. What really had an impact on me is Pragmatic Programmer. I re-read it every year. That and Michael Feathers book on legacy code.
90% of DDD went over my head when I've read it. Only years later after I've read Vernon's book and many articles on DDD did I get some understanding of it's concepts.
Domain Driven Design is the first book I've read in a while, I am terrible at reading, and I have only gotten 2/3 way through thus far, but it has absolutely thrown my world upside down when it comes to the design, implementation, and modeling of my software.
@@rafaeltab I am reading Domain Driven Design Distilled by Vaughn Vernon and have learned already the most important concepts by only reading 50 pages (the book is 147 pages long and has many illustrations). I was reading Eric Evans book about 13 yrs ago many hrs on my vacation but did not get anywhere part from differentiating between value objects and domain objects and knowing about bounded contexts. Evans book is good to have learning more about different subjects but Vernons book(s) is easier to read.
So glad that Domain-Driven Design was your top pick. After reading this book many years ago, it has shaped and influenced my approach to software development to this very day. I regularly talk about it to colleagues both technical and non-technical. It's significance cannot be over-stated.
It’s my number one too. As Dave says it’s not easy, but I read it cover to cover and absolutely want to do it again… maybe next year. The thing that drew me to it was my own prof. experience of seeing bounded contexts in my work, and the anti-corruption layer pattern was so appropriate to some integration work I had to do, so I got the whole book and wasn’t disappointed. There are some great Eric Evans talks at DDD conferences here on UA-cam too
Read Vaughn Vernon's Implementing Domain-Driven Design. This is a book that Eric Evans himself recommends and is the source for domain events that Eric admitted he forgot.
The book which influenced me most was "The Phoenix Project" by Gene Kim. I usually don't tend to read technical books but this one is actually written as a Novel. And it opened my eyes to the world of modern development practices, which was so much different and exciting compared to the way I perceived software engineering back then.
I generally agree with this list. That said, I think design patterns is a dangerous book in the hands of the inexperienced. Far too many people use it as a prescriptive recipe book and try to jam as many patterns as possible in their codebase. I like to stay light on things so tend to donate/toss books after a period of time. But as far as nostalgia goes, I've kept two. The first is a "The C++ Programming Language" book - I used it a lot early on when learning programming and it used to be my dad's. The second is a "Programming in Lua" book - it was the first software book that I really delved into, and Lua was the first language I really deeply learned, because I was adding it as a scripting language to my MUD (multiplayer text rpg).
And it's not just about high quality content. His UA-cam channel videos are much better edited, with better audio than it used to be a year ago. Really improving quality on each released video in the last couple years.
If nothing else being familiar with design patterns is important to be able to name things descriptively and consistently. After all naming things is one of the 2 hardest problems in computer programming...
Maybe not in anyone's top 5, but one that profoundly influenced my career as I moved from "hobby" programming to doing it as a day job. "Object Oriented Analysis and Design" by Rumbaugh, et al. I bought the book very shortly after it came out (1991 as I recall) and it opened me to a whole new way of looking at the process of creating software. "Refactoring" was another eye opening book, which luck would have it, came out just as I was getting into programming on large projects. That, along with the GoF, Design Patterns greatly helped improve the design prior to writing code.
HI Dave, I have several of those books, the Mythical Man Month 20 Anniversary has some additional material... If you want to have time to read those awesome books, how about some book reviews and share some of the nuggets out of them to make people aware of what to find in there... and of course, in doing the review you re-read those books... Awesome stuff as always. Thanks a bunch!
I have read many of these books and I'm agree with blue book as the most influential, but one of those i believe don't have the recognition it deserves is "Unit testing: principles, practices and patterns" by Vladimir Khorikov
Thanks for the list, Dave! So your list looks like this from what I noted: Kent Beck - Extreme Programming, Steve McConnel - Rapid Development, Steve McConnel - Code Complete, David Thomas - The Pragmatic Programmer, Robert C. Martin - Clean Code, GoF - Design Patterns, Donald Knuth - The Art of Computer Programming, Nicole Forsgren - Accellerate, Gojko Adzic - Fifty Quick Idead To Improve Your User Stories, Martin Fowler - Refactoring, Matthew Skelton and Manuel Pais - Team Topologies, Eric Evans - Domain Driven Design. Could we get a video on "The list of books to read to become a master software craftsman"? And so the list is ordered in what order to read, from the most accessible ones to the most senior ones, assuming a person already knows the basics of programming: variables, functions, flow of control, classes, objects, containers, and all the most basic stuff you learn in the first programming book or in college/university. Let me tell you my story. When I first started, I learned C# language but I didn't know what to read next, and it was very hard to find proper books to read next, and in what order. Things like TDD and Design Patterns sounded very professional and senior, so I avoided them for a few years. Not because I didn't want to learn, just because it sounded too advanced. If I were to give myself from 5 years ago what to read after the first programming book, it would be Design Patterns(GoF, Head First), and then TDD by Kent Beck right after. And then Clean Code right after that one. These books completely changed how I write my code. That's why I'm interested in your list, because I don't know what I should read next and in what order. Here's my full list on the road to become the master software craftsman(but I don't know in which order I should read them): Any basic programming book, Head First Design Patterns, Kent Beck - TDD, Robert C. Martin - Clean Code, Martin Fowler - Refactoring: Improving the Design of Existing Code, Steve McConnell - Code Complete, Robert C. Martin - Agile Software Development, Principles, Patterns and Practices, Eric Evans - Domain Driven Design, Martin Fowler - Analysis Patterns, Robert Martin - Clean Architecture, Kent Beck - Implementation patterns, David Farley - Modern Software Engineering, Kent Beck - Extreme Programming, If I were to combine my list with yours, in what order should I read them?
If anybody's interested in the philosophy of computer science and programming, I would suggest the books by Joel Spolsky: Joel on Software, More Joel on Software and The Best of Software Writing. They are compilations of his blogs and extracts from others'. Some of the topics may appear dated, but the underlying principles still apply. He worked at MS as the PM for VBA in Excel in the early days, and eventually founded StackOverflow. Thanks for that!
I'm most curious about Team Topologies and will get my hands on a copy right away. In my experience, most problems in Software Engineering are more social problems rather than technical ones.
Philosophy of Science: "Philosophy and the Sciences for Everyone", by Michela Massimi, University of Edinburgh Also: "The Structure of Scientific Revolutions", by Thomas Kuhn, MIT
Excellent stuff, as always. I am a software engineer with one foot in human centered design (product, UX etc.). I recommend XP and DDD to non-engineering designers. They contain a lot of insights into design thinking and design process, outside of software. Similarly, I recommend Don Norman's Design of Everyday Things to software colleagues.
I just bought Design Patterns earlier today as a Christmas present to myself! XP Explained and DDD are also on my shopping list for another time. Pragmatic Programmer, Clean Code, Refactoring, and K&R are already on my bookshelf.
It would be better to read Vaughn Vernon's book, Implementing Domain-Driven Design. Evans book is good as an encyclopedia, but is bad at helping you understand how to apply the principles taught. Vernon's book tells you what to apply and in what order. He also includes Domain Events that Evans forgot.
Knew about Domain Driven Design book for years but have never gotten to actually getting it and reading it. Am not familiar at all with the number 2 book. The rest have read at least once more than 15 years ago. Am a big fan of Peter Coad. Loved his Object Modeling books which I embraced dearly for all my software projects for over 20 years now. Will check out the DDD book this year. Thank you for the recommendation.
As a junior developer,I have read just a few book(mostly design books). But as i read more,i more discover that DDD is so valuable.Althought i just focus the former few part ,there is still so many great idea in it. And almost no conflict concepts or doutable content that i sometimes found in other books.
Shout out to "Programmer's Guide To The IBM PC" by Peter Norton. It was a fantastic book in the 80's that taught me a lot about the generic IBM PC. If people don't know, the Norton Antivirus software and the Symantec Products that carry the Norton name are named after the great Peter Norton.
This is a prompt to actually checkout my shopping cart which has had three of these sat waiting to be bought for a few months (and of course your new book!)
Heard you on a podcast a while back and couldn't find it again. So glad I came across your channel. Subscribed. Thank you for your sage advice, eloquently delivered. As a new programmer, I find your wisdom guiding and comforting. I wonder if you realize what a significant impact you are having on people like me. Thank you, sir.
Gene Kim's book "The Phoenix Project" is one of the most interesting books I've ever read. Kent Beck's "Smalltalk Best Practice Patterns" is also great. Just a few recommendations by authors already on the list.
Felt like I hit the jack pot! On page 100 odd of DDD started reading a week ago. Our founder has been coaching us around a lot of DDD and I figured let me work on and through the source! Awesome video! Fantastic follow on from your conversation with Gojko. It was super apparant how much you both read and that just validated and affirmed my own view on how valuable reading and reading the right material can be to your and all the people, processes, etc within your sphere's development and advancement can be.
Great recommendations, I always look forward to your uploads. I've been reading Clean Code and The Pragmatic Programmer recently - excellent books full of useful, well-written advice. I'll keep in mind to check out the others soon.
Thanks Dave for listening to the comments. Just wished you went into how continuous delivery and modern software engineering differ (if at all) at the end of the video. Like concepts that exist in one that the other doesn't cover.
They are clearly related, through me, and I think that CD is an important part of an engineering approach, and describe how, and why, in Modern Software Engineering, but they are very different books talking about different, but related, topics.
@@ContinuousDelivery It would be so great! Must admit I very rarely bu paper copies without hearing through it in the first place. Take the pragmatic programmer, which you recommend, it has the by far best audio book experience in the genre of "programming books" - easy buy and recommendation for every single book shelf. Would love to say the same about yours, very curious!
I'm amazed you mention Eric Evans book but don't mention Vaughn Vernon's book Implementing Domain Driven Design which Evans recommends himself. While I generally like your recommendations as well as the recommendations of others (esp Michael Feather's book). Modern architecture has moved on and I would say Martin Kleppmann's, Designing Data-Intensive Applications would be my first choice. (Anything Humble writes is golden IMHO).
I haven't read the Unicorn Project, I liked the Phoenix project, but didn't really learn anything new from it, I was already well down that road by then. Nothing against it, it just wasn't one of those books for me.
In my experience most developers lack an understanding of how software works (interpreters, compilers JITs, happens before-ordering, etc..) . I think books like SICP and the dragon book would help bridge this.
fantastic final note on the ephemeral nature of every specific technology... i am looking forward to the death of Java, html, css and js and to see who comes out at the other end :)
Hi, i'd like to know, how you recommend we read a technical book? I were much more on the practical side of programming and too few on theorical/reading, i'm starting to read some books now and the 2 i have are "Introduction to algorithms" and "Clean architecture", the 2nd is easier but still is not just a reading book, i get most of the idea and actually changed how i think on some things that helped me improve as a developer but it feels like i'm missing something, things that i know from the book but i can't remember, if you can tell how we can properly get the best out of reading those technical books i'd be very glad. Cheers from Brazil!
Great recommendations! Pleased to report I have all 5 plus some of the others you mentioned. Still waiting for your new one to arrive though! Pre ordered it on Amazon ages ago 👀 Totally agree with what you said about Extreme programming explained. I read it a couple of years ago and it was a revelation. It's quite frustrating it never really became mainstream (unlike fake scrum for instance).
Thanks Dave for the fantastic content. Working with legacy code is one I personally add to this list. My only regret is the time I took to get to it after I was recommened this
@@loutrea That makes me feel warm and fuzzy. I remember dial up but do not remember a time before DSL; maybe I shouldn’t project onto any other generations. Very fair, and very nice monogram. 👍🏼
Thanks so much for that list! Half I owned (had read) of the (more than) five books you mentioned, and I would rate Code Complete higher than you did, but I think that's due to when I read it during my career. I now own another two books to read; I think I shall hold off on Donald Knuth.
Great content 👍 great t-shirt 👍 I'm really looking forward to reading all of those books, but I wonder there wasn't any mention of Clean Architecture and The Clean Coder. Clean Architecture has always been my No. 1 recommendation for my peers because it is a great introduction into the quality aspects of software in general, and introduces the Clean Architecture Pattern. It's very opinionated, but I think that's a good thing for beginners.
Thanks so much for this list, Dave! Since you mentioned non-programming books at the end, I wonder if you've ever read "Gödel, Escher, Bach: An Eternal Golden Braid", by Douglas Hofstadter? I read it in college and still find the need to go back to it sometimes.
I never have, but remember one of my colleagues raving about it. I think that some of the way that we sometimes track projects have the "self referential systems problem" in spades.
Also, I'd be inclined to suggest a good algorithms book. Any suggestions? Two that spring to mind that I have are Cormen's "Introduction to Algorithms" as well as an ancient book from Niklaus Wirth ("Algorithms and Data Structures")
Another great to watch, thank you. I wish more people would follow your advice and read books like these. They're far more reliable than hand-me-down advice from Co workers!
Hi Dave, very nice list of books. I recommend that GOF Design Patterns should be bought with Head First Design Patterns. Head First Design Patters was the first book in Head First Series. I was amazed who it treated the complex subject in simple, funny and engaging mannaer. With Regards, Vikas
I couldn't comprehend the GoF until I had learned Design Patterns elsewhere. Then I [re]read the GoF, and I could appreciate their insights. Design Patterns are probably my favorite topic.
@@jimhumelsine9187 I agree. I always took the intent of design pattern and implemented my way. I was implementing design pattern in VB6 which was hardly a fully qualified OOP language. I feel that I used to pretend to be a designer before my exposure to Design Patterns . Every time I read the book again, I find it more illuminating.
While I appreciate that Mythical Man Month has some value, it is a horrible read. Aside from the ideas is expresses, it is an interesting insight into an era; one that I am very happy I wasn't a participant in. The design patterns book helped me to tune my mind into recognizing design patterns in everything from biology to industrial design and engineering. Thanks for this list.
I love books. Especially those timeless. But not only. Books give you the depth of knowledge that no other resource can give you, maybe except reading official documentation. However I found out recently that many people prefer video courses (e.g. Udemy) which I'm not fan of. But I understand that it can work for UA-cam generation. What's your opinion on this?
I think people learn in different ways. For some things I like to read books, for others, video works fine. My self-study training courses are consciously a mix of written content and video, in part for this reason. I have to admit a vested interest, as I publish content in both book, and video form 😉
Pink Shirt book! I still leaf through mine on occasion. It’s mostly for nostalgia at this point though. Mythical Man Month is, unfortunately, a daily conversation I have with my engineers and clients. I’m shocked at just how poor the (fairly simple) ideas from the book have penetrated the mindshare of the industry.
Great video! As a tech lead who shares mentorship advice on my channel, I know how important it is to continue learning and growing as a developer. Reading is a great way to do that, and I'm always on the lookout for new and interesting books to add to my reading list. I'm glad you included "The Pragmatic Programmer" in your recommendations. I've heard great things about that book and I'm sure it will be a valuable resource for many software developers. I'm sure your audience will find this video valuable and informative. It's always helpful to get recommendations from experienced professionals, and I'm sure your viewers will appreciate the opportunity to learn from your expertise. Keep up the great work, and thanks for sharing your insights with your audience. I'm sure they will find your recommendations helpful and useful as they continue to grow and develop as software developers.
Yes, I think that most of them mention it in some context. Extreme Programming explained, is the book that introduced the idea of TDD and CI to most people.
It is very strange that the Etudes for Programmers by Charles Wetherell isn't in your list. It was a time when I didn't go to sleep without reading a chapter of the book.
Dave, amazing channel. I love to listen to battle tested programmers i am considering you are. Can you tell me when you find time to read so much books?
"Send me your resume if you have read the whole of Knuth's Art of Programming" My answer to that would be: well, that's the only thing that's going to BE on my resume. :-D
Robert I. Sutton's "The Asshole Survival Guide: How to Deal with People Who Treat You Like Dirt", Penguin, 2018. - If you're a developer it won't be long before you need this book. If you want to be treated reasonably and with respect then development is not for you.
@@jangohemmes352 You have to be intelligent to be a dev but unfortunately people assume that you're not streetwise, or naive or autistic. It's exhausting when they do that.
1:43 5. Extreme Programming Explained.
4:28 4. The Pragmatic Programmer.
6:00 3. Design Patterns.
8:16 2. Accelerate.
14:37 1. Domain Driven Design.
Other Mentions
4:14 Rapid Development.
4:18 Code Complete.
5:28 Clean Code.
11:10 Fifty Quick Ideas to Improve Your User Stories.
11:30 Programmer's Guide to the IBM PC.
11:52 The C Porgramming Language, The C++ Programming Language.
11:54 Programming Windows.
12:39 The Mythical Man Month.
13:16 Modern Software Engineering.
14:02 Refactoring.
14:03 Team Topology.
16:03 The Beginning of Infinity.
The Art of Computer Programming
Add Java Concurrency in Practice
(Useful for non-java devs as well)
I think the book that influenced me the most is "Working Effectively with Legacy Code". I also liked "Designing Data Intensive Applications" very much
Refactoring by Martin Fowler has been a liberating book for me. You can learn as much as you want about design, but Refactoring gives you the freedom and peace of mind of not having to reach good design from the get go but teaches you the tools that will lead you towards it, one incremental step at a time. It seems obvious once you have this knowledge, but you need to learn it before the other books are fully useable in your daily activities. Then DDD is one of my favourite books as well but I don't think I absorbed everything from it yet and that will require a few more readings before that happens.
Refactoring is a good book, but mostly as a reference. Most of our modern tooling implements these Refactorings for you automatically.
What really had an impact on me is Pragmatic Programmer. I re-read it every year. That and Michael Feathers book on legacy code.
90% of DDD went over my head when I've read it. Only years later after I've read Vernon's book and many articles on DDD did I get some understanding of it's concepts.
Domain Driven Design is the first book I've read in a while, I am terrible at reading, and I have only gotten 2/3 way through thus far, but it has absolutely thrown my world upside down when it comes to the design, implementation, and modeling of my software.
@@rafaeltab I am reading Domain Driven Design Distilled by Vaughn Vernon and have learned already the most important concepts by only reading 50 pages (the book is 147 pages long and has many illustrations). I was reading Eric Evans book about 13 yrs ago many hrs on my vacation but did not get anywhere part from differentiating between value objects and domain objects and knowing about bounded contexts. Evans book is good to have learning more about different subjects but Vernons book(s) is easier to read.
So glad that Domain-Driven Design was your top pick. After reading this book many years ago, it has shaped and influenced my approach to software development to this very day. I regularly talk about it to colleagues both technical and non-technical. It's significance cannot be over-stated.
It’s my number one too. As Dave says it’s not easy, but I read it cover to cover and absolutely want to do it again… maybe next year. The thing that drew me to it was my own prof. experience of seeing bounded contexts in my work, and the anti-corruption layer pattern was so appropriate to some integration work I had to do, so I got the whole book and wasn’t disappointed. There are some great Eric Evans talks at DDD conferences here on UA-cam too
Same for me. I felt like I achieved enlightenment after I read this book.
So true
Read Vaughn Vernon's Implementing Domain-Driven Design. This is a book that Eric Evans himself recommends and is the source for domain events that Eric admitted he forgot.
The book which influenced me most was "The Phoenix Project" by Gene Kim. I usually don't tend to read technical books but this one is actually written as a Novel. And it opened my eyes to the world of modern development practices, which was so much different and exciting compared to the way I perceived software engineering back then.
Yeah, I enjoyed Phoenix as well as Lean Enterprise.
I'm surprised no one has mentioned Martin's POAA book.
I generally agree with this list. That said, I think design patterns is a dangerous book in the hands of the inexperienced. Far too many people use it as a prescriptive recipe book and try to jam as many patterns as possible in their codebase.
I like to stay light on things so tend to donate/toss books after a period of time. But as far as nostalgia goes, I've kept two. The first is a "The C++ Programming Language" book - I used it a lot early on when learning programming and it used to be my dad's. The second is a "Programming in Lua" book - it was the first software book that I really delved into, and Lua was the first language I really deeply learned, because I was adding it as a scripting language to my MUD (multiplayer text rpg).
Hands down the best software development channel on UA-cam. Keep going Dave.
Software Engineer here, I have to agree. Dave's a trailblazer.
And it's not just about high quality content. His UA-cam channel videos are much better edited, with better audio than it used to be a year ago. Really improving quality on each released video in the last couple years.
best channel about software development IMHO.❤
It's so good having a mentor like Dave with us on UA-cam
@@Eamo-21 you're absolutely right
Do you have dishonest opinions?
@@kayakMike1000 h - humble
@@armenchik_dzhan yep
If nothing else being familiar with design patterns is important to be able to name things descriptively and consistently. After all naming things is one of the 2 hardest problems in computer programming...
Thanks very much! This review is seriously underrated in viewcount.
Hi Dave. Thanks for doing Dave things :)
Maybe not in anyone's top 5, but one that profoundly influenced my career as I moved from "hobby" programming to doing it as a day job. "Object Oriented Analysis and Design" by Rumbaugh, et al. I bought the book very shortly after it came out (1991 as I recall) and it opened me to a whole new way of looking at the process of creating software. "Refactoring" was another eye opening book, which luck would have it, came out just as I was getting into programming on large projects. That, along with the GoF, Design Patterns greatly helped improve the design prior to writing code.
HI Dave, I have several of those books, the Mythical Man Month 20 Anniversary has some additional material... If you want to have time to read those awesome books, how about some book reviews and share some of the nuggets out of them to make people aware of what to find in there... and of course, in doing the review you re-read those books... Awesome stuff as always. Thanks a bunch!
I have read many of these books and I'm agree with blue book as the most influential, but one of those i believe don't have the recognition it deserves is "Unit testing: principles, practices and patterns" by Vladimir Khorikov
I dont know what it is, but its so cool to listen to someone, who talks about inspiring books in his life.
It so wholesome. 🤗
Thanks for the list, Dave!
So your list looks like this from what I noted:
Kent Beck - Extreme Programming, Steve McConnel - Rapid Development, Steve McConnel - Code Complete, David Thomas - The Pragmatic Programmer, Robert C. Martin - Clean Code, GoF - Design Patterns, Donald Knuth - The Art of Computer Programming, Nicole Forsgren - Accellerate, Gojko Adzic - Fifty Quick Idead To Improve Your User Stories, Martin Fowler - Refactoring, Matthew Skelton and Manuel Pais - Team Topologies, Eric Evans - Domain Driven Design.
Could we get a video on "The list of books to read to become a master software craftsman"? And so the list is ordered in what order to read, from the most accessible ones to the most senior ones, assuming a person already knows the basics of programming: variables, functions, flow of control, classes, objects, containers, and all the most basic stuff you learn in the first programming book or in college/university.
Let me tell you my story. When I first started, I learned C# language but I didn't know what to read next, and it was very hard to find proper books to read next, and in what order. Things like TDD and Design Patterns sounded very professional and senior, so I avoided them for a few years. Not because I didn't want to learn, just because it sounded too advanced.
If I were to give myself from 5 years ago what to read after the first programming book, it would be Design Patterns(GoF, Head First), and then TDD by Kent Beck right after. And then Clean Code right after that one. These books completely changed how I write my code.
That's why I'm interested in your list, because I don't know what I should read next and in what order.
Here's my full list on the road to become the master software craftsman(but I don't know in which order I should read them):
Any basic programming book, Head First Design Patterns, Kent Beck - TDD, Robert C. Martin - Clean Code, Martin Fowler - Refactoring: Improving the Design of Existing Code, Steve McConnell - Code Complete, Robert C. Martin - Agile Software Development, Principles, Patterns and Practices, Eric Evans - Domain Driven Design, Martin Fowler - Analysis Patterns, Robert Martin - Clean Architecture, Kent Beck - Implementation patterns, David Farley - Modern Software Engineering, Kent Beck - Extreme Programming,
If I were to combine my list with yours, in what order should I read them?
Your list of books contains very good examples (except Analysis Patterns , which myself didn't find practical)
If anybody's interested in the philosophy of computer science and programming, I would suggest the books by Joel Spolsky: Joel on Software, More Joel on Software and The Best of Software Writing. They are compilations of his blogs and extracts from others'. Some of the topics may appear dated, but the underlying principles still apply. He worked at MS as the PM for VBA in Excel in the early days, and eventually founded StackOverflow. Thanks for that!
A foundational book for me, is 'Object Oriented Software Construction' - Bertrand Meyer.
It's always great to see a list where I already know 90% of the books. It really pushes me to pick up the few I don't already have.
I'm most curious about Team Topologies and will get my hands on a copy right away. In my experience, most problems in Software Engineering are more social problems rather than technical ones.
Team Toplogies is good for that.
Your first three picks convinced me I should read the last two as well. Your pick of The Pragmatic Programmer had me cheering.
Funny for me it's the other way around, was cheering for DDD and now i will going to read The Pragmatic Programmer ;)
Philosophy of Science: "Philosophy and the Sciences for Everyone", by Michela Massimi, University of Edinburgh Also: "The Structure of Scientific Revolutions", by Thomas Kuhn, MIT
Thank you, Dave! Have some of those, will acquire the rest. Good list.
Excellent stuff, as always. I am a software engineer with one foot in human centered design (product, UX etc.). I recommend XP and DDD to non-engineering designers. They contain a lot of insights into design thinking and design process, outside of software. Similarly, I recommend Don Norman's Design of Everyday Things to software colleagues.
Thanks for the tip!
I just bought Design Patterns earlier today as a Christmas present to myself! XP Explained and DDD are also on my shopping list for another time. Pragmatic Programmer, Clean Code, Refactoring, and K&R are already on my bookshelf.
I caught myself cheering for DDD while while Dave was reading his list. This book is simply awesome. Every software developer should read it.
It would be better to read Vaughn Vernon's book, Implementing Domain-Driven Design. Evans book is good as an encyclopedia, but is bad at helping you understand how to apply the principles taught. Vernon's book tells you what to apply and in what order. He also includes Domain Events that Evans forgot.
+1 to Rapid Development, so good I bought it twice. Quite old now but still a lot of good stuff in there.
Knew about Domain Driven Design book for years but have never gotten to actually getting it and reading it. Am not familiar at all with the number 2 book. The rest have read at least once more than 15 years ago. Am a big fan of Peter Coad. Loved his Object Modeling books which I embraced dearly for all my software projects for over 20 years now. Will check out the DDD book this year. Thank you for the recommendation.
Thank you Dave.. My fave channel on UA-cam! You're a wealth of knowledge.
Very welcome
As a junior developer,I have read just a few book(mostly design books). But as i read more,i more discover that DDD is so valuable.Althought i just focus the former few part ,there is still so many great idea in it. And almost no conflict concepts or doutable content that i sometimes found in other books.
Shout out to "Programmer's Guide To The IBM PC" by Peter Norton. It was a fantastic book in the 80's that taught me a lot about the generic IBM PC. If people don't know, the Norton Antivirus software and the Symantec Products that carry the Norton name are named after the great Peter Norton.
This is a prompt to actually checkout my shopping cart which has had three of these sat waiting to be bought for a few months (and of course your new book!)
Heard you on a podcast a while back and couldn't find it again. So glad I came across your channel. Subscribed. Thank you for your sage advice, eloquently delivered. As a new programmer, I find your wisdom guiding and comforting. I wonder if you realize what a significant impact you are having on people like me. Thank you, sir.
Gene Kim's book "The Phoenix Project" is one of the most interesting books I've ever read. Kent Beck's "Smalltalk Best Practice Patterns" is also great. Just a few recommendations by authors already on the list.
I just get better after every video. Good takeaways guaranteed always. Thanks mate
Thank you for suplimenting my technical reading road map! Great content
Felt like I hit the jack pot! On page 100 odd of DDD started reading a week ago. Our founder has been coaching us around a lot of DDD and I figured let me work on and through the source! Awesome video! Fantastic follow on from your conversation with Gojko. It was super apparant how much you both read and that just validated and affirmed my own view on how valuable reading and reading the right material can be to your and all the people, processes, etc within your sphere's development and advancement can be.
Great recommendations, I always look forward to your uploads. I've been reading Clean Code and The Pragmatic Programmer recently - excellent books full of useful, well-written advice. I'll keep in mind to check out the others soon.
For me it would be design patterns, domain driven design and the mythical man month.
I'd have the michael feathers book on working with legacy code in there, its still totally applicable.
Mike is a friend of mine, I confess I should have mentioned WWLC!
Great Video, thanks so much for sharing your experience with us.
Nice video 👍 thank you, subscribed!!!
Thanks Dave for listening to the comments. Just wished you went into how continuous delivery and modern software engineering differ (if at all) at the end of the video. Like concepts that exist in one that the other doesn't cover.
They are clearly related, through me, and I think that CD is an important part of an engineering approach, and describe how, and why, in Modern Software Engineering, but they are very different books talking about different, but related, topics.
Dave, congrats for your awesome channel, by far the best channel on software development I´ve found!
Thank you for the positive feedback!
It will be soon 20 years since DDD book is written, but scary thing is that the book is even more relevant today than 20 years ago!
Fantastic video, thanks for making this content and sharing your wisdom.
"There are some deeper truths that are more durable over time"
Me: "It's the DDD book isn't it, just say it"
When will we get an audio version of your book? Would be awesome and very much appreciated!
It is not down to me I am afraid, the publishers, Pearsons, are talking about it I think, so lobbying them may help 😉
@@ContinuousDelivery It would be so great! Must admit I very rarely bu paper copies without hearing through it in the first place. Take the pragmatic programmer, which you recommend, it has the by far best audio book experience in the genre of "programming books" - easy buy and recommendation for every single book shelf. Would love to say the same about yours, very curious!
No mention of "Structure and Interpretation of Computer Programs"?
Great video, thanks!
My personal favourite:
A Philosophy of Software Design // John OUSTERHOUT
I'm amazed you mention Eric Evans book but don't mention Vaughn Vernon's book Implementing Domain Driven Design which Evans recommends himself.
While I generally like your recommendations as well as the recommendations of others (esp Michael Feather's book). Modern architecture has moved on and I would say Martin Kleppmann's, Designing Data-Intensive Applications would be my first choice. (Anything Humble writes is golden IMHO).
What about The Phenix Project/ Unicorn Project as an easy holy day ready?
I haven't read the Unicorn Project, I liked the Phoenix project, but didn't really learn anything new from it, I was already well down that road by then. Nothing against it, it just wasn't one of those books for me.
Wow! What a coincidence! I started reading Domain Driven Design 3 days ago )
I like the ending 'My only problem now is finding time to re-read these fantastic books' The End. I just like you channel already
Amazing list. And I like the head nods to classics like TAOCP and K&R!
In my experience most developers lack an understanding of how software works (interpreters, compilers JITs, happens before-ordering, etc..) . I think books like SICP and the dragon book would help bridge this.
It could be argued most drivers don't know how cars work and they couldn't be helped reading books about engines. Sorry, M8, couldn't resist.
Effectively learning new things is part of being a software developer, this does not apply to most drivers.
The SICP book is great but a hard slog.
@@michaelnurse9089 Professional drivers understand how cars work, though.
@@michaelnurse9089 Wrong analogy. Driver = user. Developer = Car engineer.
fantastic final note on the ephemeral nature of every specific technology... i am looking forward to the death of Java, html, css and js and to see who comes out at the other end :)
Thanks a lot Dave. This is very much appreciated.
Thank you for your very helpful recommendations!
Code Complete is my favourite of all time!
Hi, i'd like to know, how you recommend we read a technical book? I were much more on the practical side of programming and too few on theorical/reading, i'm starting to read some books now and the 2 i have are "Introduction to algorithms" and "Clean architecture", the 2nd is easier but still is not just a reading book, i get most of the idea and actually changed how i think on some things that helped me improve as a developer but it feels like i'm missing something, things that i know from the book but i can't remember, if you can tell how we can properly get the best out of reading those technical books i'd be very glad. Cheers from Brazil!
Saved 🙂 definitely need to build a book shelf
Even tho this vid is 1+ years old, its still amazing. Thanks for the great recommendations!!!
Glad you enjoyed!
Great recommendations! Pleased to report I have all 5 plus some of the others you mentioned.
Still waiting for your new one to arrive though! Pre ordered it on Amazon ages ago 👀
Totally agree with what you said about Extreme programming explained. I read it a couple of years ago and it was a revelation. It's quite frustrating it never really became mainstream (unlike fake scrum for instance).
But did you read them? :P
@@KulaGGin ha, the only one I've yet to read is the pragmatic programmer. But I could do with re-reading DDD
Both great books, but old, try Phoenix Project and Lean Enterprise as well as Data-Intensive Applications.
Thanks Dave for the fantastic content.
Working with legacy code is one I personally add to this list.
My only regret is the time I took to get to it after I was recommened this
Thank you for sharing. Right on winter time, relaxing in your snuggery with a new book.
(I only can add Code Complete, 2nd Edition by Steve McConnell)
And I thought I was the only person who still read.
You're not old chap
@@loutrea That makes me feel warm and fuzzy. I remember dial up but do not remember a time before DSL; maybe I shouldn’t project onto any other generations. Very fair, and very nice monogram. 👍🏼
Thanks so much for that list! Half I owned (had read) of the (more than) five books you mentioned, and I would rate Code Complete higher than you did, but I think that's due to when I read it during my career. I now own another two books to read; I think I shall hold off on Donald Knuth.
could you make a video about the best books junior Software Developer can
read to help them with their careers?
Great content 👍 great t-shirt 👍
I'm really looking forward to reading all of those books, but I wonder there wasn't any mention of Clean Architecture and The Clean Coder.
Clean Architecture has always been my No. 1 recommendation for my peers because it is a great introduction into the quality aspects of software in general, and introduces the Clean Architecture Pattern. It's very opinionated, but I think that's a good thing for beginners.
Clean Architecture is great, surprised it wasn't on the list
The Clean Coder is a great, great book. Much better than Clean Code, in fact.
Thanks so much for this list, Dave! Since you mentioned non-programming books at the end, I wonder if you've ever read "Gödel, Escher, Bach: An Eternal Golden Braid", by Douglas Hofstadter? I read it in college and still find the need to go back to it sometimes.
I never have, but remember one of my colleagues raving about it. I think that some of the way that we sometimes track projects have the "self referential systems problem" in spades.
Also, I'd be inclined to suggest a good algorithms book. Any suggestions? Two that spring to mind that I have are Cormen's "Introduction to Algorithms" as well as an ancient book from Niklaus Wirth ("Algorithms and Data Structures")
Competitive Programming by Steven & Felix Halim
How about "Peopleware: Productive Projects and Teams" by Tom DeMarco?
I confess I have never read it.
What, no mention of SICP?
Another great to watch, thank you. I wish more people would follow your advice and read books like these. They're far more reliable than hand-me-down advice from Co workers!
Yes, I also don't like clean code.
Best t-shirt yet!
Well... I have only read two books on the actual list but several of the honorable mentions...
Hi Dave,
very nice list of books.
I recommend that GOF Design Patterns should be bought with Head First Design Patterns.
Head First Design Patters was the first book in Head First Series.
I was amazed who it treated the complex subject in simple, funny and engaging mannaer.
With Regards,
Vikas
Duckies!
@Kulagin :)
I couldn't comprehend the GoF until I had learned Design Patterns elsewhere. Then I [re]read the GoF, and I could appreciate their insights. Design Patterns are probably my favorite topic.
@@jimhumelsine9187 I agree. I always took the intent of design pattern and implemented my way. I was implementing design pattern in VB6 which was hardly a fully qualified OOP language. I feel that I used to pretend to be a designer before my exposure to Design Patterns . Every time I read the book again, I find it more illuminating.
While I appreciate that Mythical Man Month has some value, it is a horrible read. Aside from the ideas is expresses, it is an interesting insight into an era; one that I am very happy I wasn't a participant in. The design patterns book helped me to tune my mind into recognizing design patterns in everything from biology to industrial design and engineering. Thanks for this list.
I find "Patterns, Principles, and Practices of Domain-Driven Design Kindle Edition by Scott Millett" more accessible for beginners.
I love books. Especially those timeless. But not only. Books give you the depth of knowledge that no other resource can give you, maybe except reading official documentation.
However I found out recently that many people prefer video courses (e.g. Udemy) which I'm not fan of. But I understand that it can work for UA-cam generation.
What's your opinion on this?
I think people learn in different ways. For some things I like to read books, for others, video works fine.
My self-study training courses are consciously a mix of written content and video, in part for this reason.
I have to admit a vested interest, as I publish content in both book, and video form 😉
Pink Shirt book! I still leaf through mine on occasion. It’s mostly for nostalgia at this point though. Mythical Man Month is, unfortunately, a daily conversation I have with my engineers and clients. I’m shocked at just how poor the (fairly simple) ideas from the book have penetrated the mindshare of the industry.
Shoutout to Clean Code by Robert Cecil Martin
I kind of missed Peopleware in the list, it's amazing if you ask me... (Honorable mention?)
Dave, I want your shirt. In fact, I need this shirt. Thank you for this video. :)
Awesome video Dave.
Great video! As a tech lead who shares mentorship advice on my channel, I know how important it is to continue learning and growing as a developer. Reading is a great way to do that, and I'm always on the lookout for new and interesting books to add to my reading list.
I'm glad you included "The Pragmatic Programmer" in your recommendations. I've heard great things about that book and I'm sure it will be a valuable resource for many software developers.
I'm sure your audience will find this video valuable and informative. It's always helpful to get recommendations from experienced professionals, and I'm sure your viewers will appreciate the opportunity to learn from your expertise.
Keep up the great work, and thanks for sharing your insights with your audience. I'm sure they will find your recommendations helpful and useful as they continue to grow and develop as software developers.
You speak a lot about the importance of TDD, does any of these 5 books mention it?
Have you read Test-driven Development, Kent Beck?
Yes, I think that most of them mention it in some context. Extreme Programming explained, is the book that introduced the idea of TDD and CI to most people.
I love the t-shirt.
The ‘K’ in Knuth is not silent. (According to Knuth himself.)
Ok, thanks.
It is very strange that the Etudes for Programmers by Charles Wetherell isn't in your list. It was a time when I didn't go to sleep without reading a chapter of the book.
Thanks for your recommendation.
Dave, amazing channel. I love to listen to battle tested programmers i am considering you are. Can you tell me when you find time to read so much books?
🤣I am very old 😉
@@ContinuousDelivery But i mean, when you had a job as a programmer what was the time you used to schedule some reading?
@@EEEEMMMMKKKK I have always been a reader, I don't really "schedule reading" I read in my spare time.
"Send me your resume if you have read the whole of Knuth's Art of Programming"
My answer to that would be: well, that's the only thing that's going to BE on my resume.
:-D
Trying to find Modern Software engineering as an ebook, cannot find one.
When will it be released?
It is generally available on Amazon, depending where you are in the world. Try this link ➡️ amzn.to/3DwdwT3
14:19 Number 1
I found "Design Patterns" very hard to digest. For me, "Design Patterns Explained" was much better, as well as "Dive into Design Patterns"
Hey Dave! Awesome video, as always. Have you read “A Philosophy of Software Design”? If so, what do you think of it? For me it was an awesome read.
No, I haven't read it.
@@ContinuousDelivery thanks for your reply! It would be awesome knowing your opinion.
Robert I. Sutton's "The Asshole Survival Guide: How to Deal with People Who Treat You Like Dirt", Penguin, 2018. - If you're a developer it won't be long before you need this book. If you want to be treated reasonably and with respect then development is not for you.
You didn't have to hit me in the feels like that
@@jangohemmes352 You have to be intelligent to be a dev but unfortunately people assume that you're not streetwise, or naive or autistic. It's exhausting when they do that.