My 30 years of experience with bad code says 1) figure out what code is supposed to do 2) write out specifications 3) write new code 4) delete bad old program. In the long run, it takes less time to write new code than correct old code.
I really feel the same. Most of the time (in my experience) the old code is either amateurish or been written for far simpler requirements that is impractical to extend. So it comes down to either basically rewrite a lot of the old code or start from scratch with a better foundation
FWIW Grokking Algorithms has an update coming out later this month (March 2024). Thanks for the list. It's been a while since I've read any software engineering stuff so now may be a good time to revisit the topic.
If I didn't see this comment, I might have bought the first edition. Thanks ,this comment was helpful! :) Although I'm still on the fence since the Amazon reviews are pretty mixed
1. Grokking Algorithms by Aditya Y. Bhargava 2. Refactoring by Martin Fowler 3. Understanding Distributed Systems by Roberto Vitillo 4. Designing Data Intensive Applications by Martin Kleppman 5. The Signal and The Noise by Nate Silver 6. The Art of Statistics: How to Learn from Data by David Spiegelhalter 7. The Hundred Page ML Book by Andriy Burkov 8. Deep Learning by Ian GoodFellow 9. AIL A Modern Apporach by Stuart Russel & Peter Norvig 10. Designing ML Systems by Chip Huyen 11. Engineering Management for the Rest of US by Sarah Drasner 12. Software Architecture: the hard Parts by Ford, Richards, Sadalage & Dehghani 13. Software Engineering at Google by Winters, Manshrack & Wright 14. Deep Work by Cal Newport
Man I like this list of books much more than the one from last year! I've read some of the ones mentioned here and from last year's now and I feel like this list really captures a concise list of valuable books in all these areas. One other suggestion I would like to add is The Effective Engineer by Edmond Lau. It's a really great book condensing soft skill development and growing personal impact, supported by many interesting anecdotes from accomplished software engineers.
Love the bit about Clean Code/Clean Architecture. Too many projects end up following that approach and ending up with all this extra work for an app that serves like three pages... it's rife in the .NET ecosystem. Thanks for the DS/ML recommendations. I've been looking for really solid books to add to my list for the better part of a decade.
Thank you Utsav. I appreciate your way of video making and your book suggestions. Keep making these kind of videos. You never know what impact they have on different people. If possible, take some topics and try to explain it in simpler words. - Raghav
Utsa, hello. I'm Oscar and I greet you from here in Peru. I'm a last year student of Software Engineering. I want to thank you for taking the time and recommend us the right books that every Software Engineer should read in this 2024. Really, they are interesting. I will tell you that neither web nor mobile development is my forte. I am more interested in Artificial Intelligence, Cloud Computing (AWS or Azure), software architecture and DevOps. I am researching about how DevOps methodology is applied in Startups to keep offering high value software to their customers and how this methodology makes Startups much more competitive than others. So, wish me luck!
There is no such thing as “have to know”. You could have a scoped in job and do just fine just writing embedded systems for your entire life. But my recommendation to still have some knowledge about majorly emerging movements in the space so that it gives you the adaptability you may want in your career. :)
Hi Utsav! I just wanted to let you know that I agree with all the book recommendations, and I’ve actually bought a few of them recently. However, I wanted to suggest a book that I believe would be a great addition to the list. It’s called "Unit Testing: Principles, Practices, and Patterns" by Vladimir Khorikov. I found this book to be very helpful in understanding the importance of unit testing, and it really expanded my knowledge on the topic.
System Design Interview (Volume 1 and 2) by Alex Xu & Sahn Lam are the closest I've found to a perfect book on a topic. I think I like them even more than "the red book", but they don't go into quite the depth. But for anyone visual learners out there, these books are invaluable at providing a very solid understanding of system design since the information is provided via realistic examples with plenty of graphs, charts, etc. They are kind of similar to Grokking Algorithms in their style, but with more real world examples.
Alex’s books are really good for interviews and surface knowledge. They don’t quite cover the depth for more detailed knowledge. But agree, those are great options for contextual knowledge in the area.
Solid book recommendations, but I completely disagree with 100-page ML book. 100 page ML covers a wide array of topics in ML, it's not to be used as an intro to ML. It's a small and almost complete reference book to review the ML concepts learned elsewhere. For those new to ML, take Andrew Ng Machine Learning Specialist course online to fully understand the basics of ML algos and how machines learn. Afterwards, books like 100-page ML book will make complete sense and can be used ad a desk reference to reinforce your core knowledge of ML.
I was looking for the books for software engineers and bang on I find this video.... All the books suggested are pretty awesome and good according to their use case you can try them out before criticizing. Great work Utsav... :)
Just got back on route, I have bombarded myself with a lot of stuff to learn. But this video really made me stop and organize my way. As these books seems awesome and as represented in order makes sense. Thanks for this beautiful video and very calming background of your setup that also acutely keeps me engaged. 😄
There are a bunch of books that you missed: mythical man month, the dragon book, sicp (they just released a JavaScript edition), death march, the pragmatic programmer etc. I revisit those books all the time. Especially SICP and pragmatic programmer.
Thank you. I wasn't aware of the new JavaScript version of SICP. I hope the charm of using Scheme isn't lost in this version, but I welcome the opportunity to revisit this classic.
Thanks so much for the awesome book recommendation Utsav! I noticed that the author for "Grokking Algorithms" book has a new edition, would you recommend getting this edition or the one you recommended in the video?
I have yet to find a book or site that proposes the order of development. I always first define the foreseeable risk areas and set out to deal with those first even if it requires multiple prototypes, or does not create a usable app. Then I can move on to grinding the grunt work needed to get a usable first version to iterate upon.
Interesting how you dropped the clean code related books. Over time I've come to see abstractions as a powerful tool that doesn't have to be used all the time, they can add a huge overhead (pre and post implementation)
The thumbnail said all the titles and this was still worth a full watch. Thank you. Also, have you read Naked Statistics? I really enjoyed naked Money and Naked Econ, but haven’t read that one yet.
I would propose that M Feathers brilliant text working effectively with legacy code if more important than Fowler on refactoring. Being as it is a guide for the practical applications of Fowlers ideas to a more realistic legacy codebase. Otherwise a great list thanks for your insights.
I feel like there's a massive disconnect between these industry books and any practical application. There's also the assumption that authors are experts. Anyone can publish a book. Most of the content is the same. Maybe roughly ~80% of the material in a fixed genre (i.e. clean code, algorithms, distributed system) mentions and covers the same content. Are authors really providing insight that's actionable? Take a reading list of algorithms, clean code, distributed systems. Could that person now write a concurrent, 32-core Sudoku solver, a fast parser for a language, or a distributed key-value store with automatic sharding on resource contention? These are not crazy examples. It just seems there's a massive divide between these books and deliverable value that even the authors aren't aware of.
Nice recommendations. For people who hate Java like me, there is „Refactoring Ruby Edition”, with the same content but examples in Ruby :p I’m sure there is one for your language of choice as well
Hi. Thanks for the recommendations, but I couldn't find any case studies in "Software Architecture the hard parts". The book is mostly architectural theory and recommended patterns IMO.
Can you recommend some easy to understand books (like grokking algo and understanding distributed systems) about operating system and networking concepts.
Nice recommendation. Anything for designing the DB schemas? Maybe even the use cases, examples would be useful. What to put in columns, where to split another table etc.
2nd edition of Grokking Algorithms is coming out soon. I'd wait to purchase the 2nd edition as it looks much more comprehensive than the first edition.
What illustrative book like "grokking" do you recommend for data structures? Grokking is good but the content is limited. Not wanting any heavy books like CLRS. Thanks!
Check out Tidy First? by Kent Beck. The Pragmatic Programmer should always be recommended and The Unicorn Project is a very nice novel about good software development.
Bang on these books are very helpful to me. my peers are giving me imposter syndrome with their knowledge on distributed systems and large scale applications building just being 2 yrs experienced
i read half a book on stats few months ago. im glad i used a proper text book ! very noisy book, too much stuff at the back of chapters for ex. however, i really valued the overview of where each concept fit in. Elementary Statistics. A Step By Step Approach 10ed 2018 by Mc Graw Hill
Great video again, Utsav! These books are gold, no doubt. But I have a general question✋ Times have changed and there are thousands of online courses in the market. The course content may vary depending on the price and the hosted platform. They may provide a high-level overview to an in-depth explanation of niche topics. Life has become more fast-paced. Technologies change more rapidly these days. In this era, would you still advise experienced software engineers to learn first from technical books OR go for MOOCs and keep the books as a ready reference?
@@EngineeringwithUtsav Yes, you're correct. If I could reformat my comment, that would be what I was looking for. When to use books and when should we go for MOOCs? What do you suggest?
Thanks for the recommendations. I was wondering where does the book "Structure and Interpretation of Computer Programs" fit in? Who is it suited for if at all in 2024?
Pick up a book that teaches the basis with any language. Then pick up a book that teaching data structures and algorithms (preferably in JS), then pick up a book that dives deep into the nitty gritty of JS.
Grokking algorithms is terrible. Why do people keep recommending this book? It's very shallow and inaccurate in some places. It was written by someone who took up coding as a hobby.
Because it’s digestible for beginners. The point isn’t to learn everything from it… but to have a relatively easy point of entry, then move on some something more technical like CLRS or Skiena.
My 30 years of experience with bad code says 1) figure out what code is supposed to do 2) write out specifications 3) write new code 4) delete bad old program. In the long run, it takes less time to write new code than correct old code.
I really feel the same. Most of the time (in my experience) the old code is either amateurish or been written for far simpler requirements that is impractical to extend. So it comes down to either basically rewrite a lot of the old code or start from scratch with a better foundation
I am sorry, but if possible, could you let me know what is meant by specifications here. Thank you
Can u suggest me Best book for c++
I'm 21 year old and want learn c++
FWIW Grokking Algorithms has an update coming out later this month (March 2024). Thanks for the list. It's been a while since I've read any software engineering stuff so now may be a good time to revisit the topic.
If I didn't see this comment, I might have bought the first edition. Thanks ,this comment was helpful! :) Although I'm still on the fence since the Amazon reviews are pretty mixed
1. Grokking Algorithms by Aditya Y. Bhargava
2. Refactoring by Martin Fowler
3. Understanding Distributed Systems by Roberto Vitillo
4. Designing Data Intensive Applications by Martin Kleppman
5. The Signal and The Noise by Nate Silver
6. The Art of Statistics: How to Learn from Data by David Spiegelhalter
7. The Hundred Page ML Book by Andriy Burkov
8. Deep Learning by Ian GoodFellow
9. AIL A Modern Apporach by Stuart Russel & Peter Norvig
10. Designing ML Systems by Chip Huyen
11. Engineering Management for the Rest of US by Sarah Drasner
12. Software Architecture: the hard Parts by Ford, Richards, Sadalage & Dehghani
13. Software Engineering at Google by Winters, Manshrack & Wright
14. Deep Work by Cal Newport
Man I like this list of books much more than the one from last year! I've read some of the ones mentioned here and from last year's now and I feel like this list really captures a concise list of valuable books in all these areas. One other suggestion I would like to add is The Effective Engineer by Edmond Lau. It's a really great book condensing soft skill development and growing personal impact, supported by many interesting anecdotes from accomplished software engineers.
A Philosophy of Software Design by John K. Ousterhout -- super underrated
Love the bit about Clean Code/Clean Architecture. Too many projects end up following that approach and ending up with all this extra work for an app that serves like three pages... it's rife in the .NET ecosystem.
Thanks for the DS/ML recommendations. I've been looking for really solid books to add to my list for the better part of a decade.
@alex this is why I like the minimal API feature it helps with prototyping a lot I find myself using it often for quick coding
Thank you Utsav. I appreciate your way of video making and your book suggestions. Keep making these kind of videos. You never know what impact they have on different people. If possible, take some topics and try to explain it in simpler words. - Raghav
Thank you for your kind words :)
perfect timing. Thank you Utsav Dai.
Utsa, hello. I'm Oscar and I greet you from here in Peru. I'm a last year student of Software Engineering. I want to thank you for taking the time and recommend us the right books that every Software Engineer should read in this 2024. Really, they are interesting. I will tell you that neither web nor mobile development is my forte. I am more interested in Artificial Intelligence, Cloud Computing (AWS or Azure), software architecture and DevOps. I am researching about how DevOps methodology is applied in Startups to keep offering high value software to their customers and how this methodology makes Startups much more competitive than others. So, wish me luck!
I'm a simple man, I see Utsav i give upvote. Thanks for all you do, bro. You've made the Dev part of my devops journey pretty smooth.
Thought this video seemed really weird since 2 videos ago you said books are a waste of time. I'm glad you addressed that at the beginning 👍
:)
Thanks for the list! Especially on DS/ML! Cannot disagree more on the necessity of SDE to know about AI moving forward
There is no such thing as “have to know”. You could have a scoped in job and do just fine just writing embedded systems for your entire life. But my recommendation to still have some knowledge about majorly emerging movements in the space so that it gives you the adaptability you may want in your career. :)
Hi Utsav! I just wanted to let you know that I agree with all the book recommendations, and I’ve actually bought a few of them recently. However, I wanted to suggest a book that I believe would be a great addition to the list. It’s called "Unit Testing: Principles, Practices, and Patterns" by Vladimir Khorikov. I found this book to be very helpful in understanding the importance of unit testing, and it really expanded my knowledge on the topic.
I use to have about 400 books on it stuff, about 11 years ago…
High quality books from companies like Addison Wesley etc.
The fact that most of the book in this vid looks brand new gave me mind peace.
System Design Interview (Volume 1 and 2) by Alex Xu & Sahn Lam are the closest I've found to a perfect book on a topic. I think I like them even more than "the red book", but they don't go into quite the depth. But for anyone visual learners out there, these books are invaluable at providing a very solid understanding of system design since the information is provided via realistic examples with plenty of graphs, charts, etc.
They are kind of similar to Grokking Algorithms in their style, but with more real world examples.
Alex’s books are really good for interviews and surface knowledge. They don’t quite cover the depth for more detailed knowledge. But agree, those are great options for contextual knowledge in the area.
Solid book recommendations, but I completely disagree with 100-page ML book. 100 page ML covers a wide array of topics in ML, it's not to be used as an intro to ML. It's a small and almost complete reference book to review the ML concepts learned elsewhere.
For those new to ML, take Andrew Ng Machine Learning Specialist course online to fully understand the basics of ML algos and how machines learn. Afterwards, books like 100-page ML book will make complete sense and can be used ad a desk reference to reinforce your core knowledge of ML.
I was looking for the books for software engineers and bang on I find this video....
All the books suggested are pretty awesome and good according to their use case you can try them out before criticizing.
Great work Utsav... :)
Bookmarked this. I love it. Thanks Utsav.
"Not every principle applies to every situation" is a very good point. Great video and I will add some of these books to my list 🙂
Just got back on route, I have bombarded myself with a lot of stuff to learn. But this video really made me stop and organize my way. As these books seems awesome and as represented in order makes sense. Thanks for this beautiful video and very calming background of your setup that also acutely keeps me engaged. 😄
There are a bunch of books that you missed: mythical man month, the dragon book, sicp (they just released a JavaScript edition), death march, the pragmatic programmer etc.
I revisit those books all the time. Especially SICP and pragmatic programmer.
Thank you. I wasn't aware of the new JavaScript version of SICP. I hope the charm of using Scheme isn't lost in this version, but I welcome the opportunity to revisit this classic.
Adding the missing README to this list as well as philosophy of software design 💪🏼
Thanks so much for the awesome book recommendation Utsav! I noticed that the author for "Grokking Algorithms" book has a new edition, would you recommend getting this edition or the one you recommended in the video?
I haven’t read the new one yet… so hard to say. But generally, newer editions are better :)
I have yet to find a book or site that proposes the order of development. I always first define the foreseeable risk areas and set out to deal with those first even if it requires multiple prototypes, or does not create a usable app. Then I can move on to grinding the grunt work needed to get a usable first version to iterate upon.
Interesting how you dropped the clean code related books. Over time I've come to see abstractions as a powerful tool that doesn't have to be used all the time, they can add a huge overhead (pre and post implementation)
Great list of books for software engineers….thanks for sharing Utsav 😊
Great video, and thoughtfully presented ... thank you!
Refactoring is a great book. I'll check out some of the other ones. Thanks.
What do you think of the pragmatic programmer? I see it been recommended a lot.
Great list, definitely reading them!
Great and modern recommendations
Thanks Utsav
Just checked last year's list and this one looks much better.
Thanks for such a great work!
Just came across your channel and this wsa such a refreshing set of books to be recommended thank you. By the way I subscribed to your channel
It s so cool to have the ocean wallpaper on your screen.....
Have some in digital, woukd buy some in physical so I can rummage through then and make notes on the physical pages too
Great Recommendation, Will make a note ❤
Good information. Thanks. You just earned a subscriber.
Thank you for this video.
The thumbnail said all the titles and this was still worth a full watch. Thank you.
Also, have you read Naked Statistics? I really enjoyed naked Money and Naked Econ, but haven’t read that one yet.
What a Gem of a Channel.
Thank you for the video Utsav ❤
I would propose that M Feathers brilliant text working effectively with legacy code if more important than Fowler on refactoring. Being as it is a guide for the practical applications of Fowlers ideas to a more realistic legacy codebase. Otherwise a great list thanks for your insights.
I feel like there's a massive disconnect between these industry books and any practical application.
There's also the assumption that authors are experts. Anyone can publish a book. Most of the content is the same. Maybe roughly ~80% of the material in a fixed genre (i.e. clean code, algorithms, distributed system) mentions and covers the same content. Are authors really providing insight that's actionable?
Take a reading list of algorithms, clean code, distributed systems. Could that person now write a concurrent, 32-core Sudoku solver, a fast parser for a language, or a distributed key-value store with automatic sharding on resource contention? These are not crazy examples.
It just seems there's a massive divide between these books and deliverable value that even the authors aren't aware of.
Nice recommendations. For people who hate Java like me, there is „Refactoring Ruby Edition”, with the same content but examples in Ruby :p I’m sure there is one for your language of choice as well
Hi. Thanks for the recommendations, but I couldn't find any case studies in "Software Architecture the hard parts". The book is mostly architectural theory and recommended patterns IMO.
thank you, so much to do!!! how do u recommend getting through all these books, one by one or multitask?
Can you recommend some easy to understand books (like grokking algo and understanding distributed systems) about operating system and networking concepts.
Nice recommendation. Anything for designing the DB schemas? Maybe even the use cases, examples would be useful. What to put in columns, where to split another table etc.
DDIA has decent information on all that including sharding, etc.
@@EngineeringwithUtsavthanks
Hi Utsav
What application/tool do you use to organise your personal todos, top of mind, tracking porjects etc at work?
Mostly Notion
I wish you give us at least 2 videos weekly. I know that your time is gold tho. Thanks as always :)
I wish I could
2nd edition of Grokking Algorithms is coming out soon. I'd wait to purchase the 2nd edition as it looks much more comprehensive than the first edition.
Thanks. I'll wait, this was the main book from the list I was going to buy.
Great list 👏
i bet you like metallica... can tell by the kirk guitar.. love that guitar
What illustrative book like "grokking" do you recommend for data structures?
Grokking is good but the content is limited. Not wanting any heavy books like CLRS.
Thanks!
Love all of them!!
Check out Tidy First? by Kent Beck. The Pragmatic Programmer should always be recommended and The Unicorn Project is a very nice novel about good software development.
Where did you get the shruggy shirt?
Thank you Sir.
Bang on these books are very helpful to me. my peers are giving me imposter syndrome with their knowledge on distributed systems and large scale applications building just being 2 yrs experienced
Muh impostor syndrome
Cringe go outside
i read half a book on stats few months ago.
im glad i used a proper text book !
very noisy book, too much stuff at the back of chapters for ex.
however, i really valued the overview of where each concept fit in.
Elementary Statistics. A Step By Step Approach 10ed 2018
by Mc Graw Hill
This is a great list! Shout out to Chip Huyen, she's amazing!
Great video again, Utsav! These books are gold, no doubt. But I have a general question✋
Times have changed and there are thousands of online courses in the market. The course content may vary depending on the price and the hosted platform. They may provide a high-level overview to an in-depth explanation of niche topics. Life has become more fast-paced. Technologies change more rapidly these days.
In this era, would you still advise experienced software engineers to learn first from technical books OR go for MOOCs and keep the books as a ready reference?
Both have their place. It’s not a question of which one to use, but when to use which one.
@@EngineeringwithUtsav Yes, you're correct. If I could reformat my comment, that would be what I was looking for. When to use books and when should we go for MOOCs? What do you suggest?
whats the wrist block, is this metal??? love it
Great video, man! New sub, and buying my books via your links! Cheers!
🙏🏽
Thank you so much!
Thanks for the recommendations. I was wondering where does the book "Structure and Interpretation of Computer Programs" fit in? Who is it suited for if at all in 2024?
I think it's still a good book since many dev also recommended it, but I haven't read it yet :) What you think?
Thanks for your he Video. Good as usual 😊.
What is the normal average duration for reading a book for at least 350 pages?
I’ve read 100+ coding books…and I remember everything
ua-cam.com/video/0h_fNsGW47s/v-deo.html
This has some tips on reading technical books
I want to learn Javascript, but I know nothing about programming basics, what books do you recommend to understand the basics of how code works?
Pick up a book that teaches the basis with any language. Then pick up a book that teaching data structures and algorithms (preferably in JS), then pick up a book that dives deep into the nitty gritty of JS.
What you think about the book Database Management Systems - Ramakrishnan and Gehrke?
I know it is old, but every software developer needs to have read The Mythical Man Month.
Thanks!
Really nice books🎉
Dystopian Novel : The End Of Silence by George Ernest ⭐⭐⭐⭐⭐
Wich Monitor is it? Van you please Write the size and Name?
Benq PD3220 32”
Bro leave the book , what is the name of the keyboard in your thumbnail
what do you do for living?
No books on .NET in general?
You don't need to read all of these, it depends on the project you are working.
C++ programming by Ivor Horton is a must.
Heres the book software engineers actually need to read:
“The Careers Handbook - DK”
Since ChatGPT and Devin are about to take over.
Hey, are you interested in buying some beachfront property in Trinidad?
How abour Introduction to Statistical Methods for Data Science? It's like the holy bible for beginners? + The book by StatQuest for fun data science
Great!!
I need that t-shirt 😍 Where can I find it ?
It was a gift :)
Hey great video,
Appriiciate your efforts sir.
Can you please give me this books 🙃. This will help me.
Thanks
Still rocking your BMW M3?
Mods yet?
Some mods :)
Clean Architecture - Robert C Martin
Grokking algorithms is terrible. Why do people keep recommending this book? It's very shallow and inaccurate in some places. It was written by someone who took up coding as a hobby.
Because it’s digestible for beginners. The point isn’t to learn everything from it… but to have a relatively easy point of entry, then move on some something more technical like CLRS or Skiena.
That shirt is so nice, can you tell us where you got it from?
It was a gift from arc.dev
Nyeeees~
plz give dating tips
stack of books getting heavy every year lol
Just collect all dragon balls and wish for infinity knowledge
Room 🔥
basically all the stuff they teach you as a CS student.
Schools teach all this these days!?!? Maybe I should consider going back in for a third degree :)
good
❤❤❤
I trust my fellow nepalese
Hey, IM a software engineer in 2024! But I don’t read books…
Grokking Algorithms is full of typos and bad writing and grammar errors. Just watch youtube if you are a beginner.