Books every software engineer should read in 2024.
Summary
TLDRIn this comprehensive guide, software engineer Utav shares his curated list of essential reads for software engineers aiming to excel in their field, beyond mere programming skills. Covering a holistic approach to software engineering, the video emphasizes understanding data structures, algorithms, best practices in coding, distributed systems, data-driven decision-making, and machine learning. Utav highlights key books that foster a deep understanding of these areas without dwelling on specific programming languages or frameworks. Additionally, the guide touches on productivity, engineering management, and real-world case studies, offering insights into creating maintainable, scalable software and advancing career development in the tech industry.
Takeaways
- π Being a good software engineer requires a holistic understanding beyond just programming skills, including design, implementation, and deployment processes.
- π The video recommends books that focus on concepts and strategies to become a great software engineer, rather than specific programming languages or frameworks.
- π 'Grokking Algorithms' is highlighted for its simple and intuitive explanations of complex topics in data structures and algorithms.
- π§ Martin Fowler's 'Refactoring' is recommended over 'Clean Code' and 'Clean Architecture' due to the importance of improving existing code in today's rapid prototyping environment.
- π Understanding distributed systems is deemed crucial for all software engineers, with recommendations for beginners and more advanced learners.
- π Data-driven decision-making is emphasized, with book recommendations on distinguishing valuable data signals from noise and statistical literacy.
- π± The importance of core understanding in machine learning is discussed, with book recommendations for beginners and those looking to delve deeper.
- π¨βπ» Engineering management skills are essential, with 'Engineering Management for the Rest of Us' providing insights and pointers for effective leadership.
- π Case studies in books like 'Software Engineering at Google' offer real-world insights into the practices of large tech companies.
- π₯ 'Deep Work' by Cal Newport is recommended for enhancing productivity by overcoming workplace distractions and achieving focused work.
Q & A
What is the primary focus of the book recommendations mentioned in the video?
-The book recommendations focus on providing holistic software engineering knowledge, covering concepts beyond just learning specific programming languages or frameworks. They aim to teach the process of software creation, data understanding, and application of machine learning in a globally distributed setup.
Why does the speaker not recommend books on specific programming languages for software engineers?
-The speaker believes that being a good software engineer is not just about mastering programming languages or frameworks, but also about understanding the broader aspects of software creation, data analysis, and machine learning in a global context.
What book does the speaker recommend for understanding data structures and algorithms, and why?
-The speaker recommends 'Grokking Algorithms' by Aditya Bhargava, as it explains complex topics in a simple, intuitive, and fun manner, making it more accessible and less intimidating than more academic texts.
Why does the speaker prefer 'Refactoring' by Martin Fowler over 'Clean Code' and 'Clean Architecture' by Robert C. Martin?
-The speaker believes that in the current rapid prototyping environment, the act of refactoring (improving existing code) is more important than initially writing perfect code. 'Refactoring' focuses on transforming suboptimal code into maintainable and extensible production-ready code, which aligns better with modern software development practices.
What are the recommended books for understanding distributed systems?
-For beginners, 'Understanding Distributed Systems' by Roberto Vitillo is recommended for its simplicity and coverage. For more in-depth knowledge, 'Designing Data-Intensive Applications' by Martin Kleppmann (the red book) is suggested.
What is the purpose of the book 'The Signal and the Noise' by Nate Silver in the context of software engineering?
-The book 'The Signal and the Noise' is recommended for understanding how to separate valuable data signals from noise, an essential skill for making informed decisions based on data analytics in software engineering.
What are the suggested books for starting a journey in machine learning?
-The speaker suggests starting with 'The 100 Page Machine Learning Book' by Andrei Burkov for a concise introduction, followed by 'Deep Learning' by Yoshua Bengio and Ian Goodfellow for more detailed study. 'Designing Machine Learning Systems' by Chip Huyen is recommended for applying ML in software systems.
Why is 'Engineering Management for the Rest of Us' by Sarah Drasner recommended for software engineering managers?
-The book is recommended for its insights into the world of engineering management, offering practical advice, pointers, and real-world examples for effective management in software engineering.
What is the significance of the 'case studies' category in the book recommendations?
-The 'case studies' category offers real-world examples and anecdotes about successes and failures in architecting large, high-scale applications, providing insights that typically come with experience but are rarely found in generic books.
Why is 'Deep Work' by Cal Newport suggested for software engineers, and what does it offer?
-Deep Work' is suggested for its strategies on overcoming workplace distractions and achieving focused work, which is crucial for high productivity in software engineering.
Outlines
π Essential Reads for Software Engineers
This segment introduces a curated list of books aimed at broadening the skills of software engineers beyond just programming language proficiency. The focus is on understanding the entire software development process, including design, implementation, deployment, data analysis, and machine learning in a globally distributed context. The speaker, Utav, a seasoned software engineer and entrepreneur based in Seattle, emphasizes the importance of holistic career development covering technical skills, efficiency, mindset, entrepreneurship, and financial freedom. Key book recommendations include 'Grokking Algorithms' by Aditya Bhargava for its intuitive approach to complex concepts, and 'Refactoring' by Martin Fowler, highlighting the importance of improving existing code over perfect initial code due to the rapid prototyping environment in today's software development landscape.
π Navigating Distributed Systems and Data-Driven Design
This section emphasizes the critical importance of understanding distributed systems for modern software engineers, due to the global distribution of application components for improved availability, redundancy, and disaster recovery. Recommended readings include 'Understanding Distributed Systems' by Roberto Vitillo for beginners and 'Designing Data-Intensive Applications' by Martin Kleppmann for a deeper dive. The discussion also covers the necessity of being data-driven in 2024, recommending 'The Signal and the Noise' by Nate Silver for understanding data analysis and 'The Art of Statistics' by David Spiegelhalter for gaining statistical literacy. Additionally, the evolution of AI and its impact on software engineering is highlighted, suggesting books for those looking to start or deepen their understanding of machine learning.
π€ Machine Learning Essentials and Career Transition
This paragraph delves into the foundational and advanced aspects of machine learning, crucial for software engineers in the AI-dominated landscape of 2024. Starting recommendations include 'The 100 Page Machine Learning Book' by Andrei Burkov for basics, followed by 'Deep Learning' by Yoshua Bengio and Ian Goodfellow for more comprehensive insights. Additionally, 'Designing Machine Learning Systems' by Chip Huyen is suggested for engineers focusing on building ML systems. The segment also introduces Interview Kickstart's SwitchUp course, offering a structured path for professionals transitioning into AI, data science, or machine learning roles, emphasizing practical learning and job interview preparation.
π¨βπΌ Insights into Engineering Management and Real-world Case Studies
This part of the script targets engineering managers and aspiring ones, recommending 'Engineering Management for the Rest of Us' by Sarah Drasner, which provides valuable insights and tips for effective management. Additionally, the segment introduces a new category of recommendations focusing on case studies from large-scale application development, with 'Software Engineering at Google' and 'Software Engineering the Hard Parts' as highlighted readings. These books offer real-world examples and anecdotes from major tech companies, aiming to impart lessons learned from successes and failures in a way that technical concepts alone cannot.
π Maximizing Productivity in Software Engineering
The final segment addresses productivity, a key aspect of achieving peak output in software engineering. 'Deep Work' by Cal Newport is recommended as the go-to book for understanding and overcoming workplace distractions, promoting focused and efficient work practices. The summary stresses the importance of productivity in realizing one's full potential, regardless of the specific field of work. This section also encourages viewers to explore previous book recommendations and share their own, fostering a community of continuous learning among software engineers.
Mindmap
Keywords
π‘Software Engineering
π‘Refactoring
π‘Distributed Systems
π‘Data Driven
π‘Machine Learning
π‘Engineering Management
π‘Case Studies
π‘Productivity
π‘Data Structures and Algorithms
π‘Career Development
Highlights
Annual list of books for software engineers focusing on holistic understanding of software development.
Grokking Algorithms recommended for understanding data structures and algorithms in a simple manner.
Importance of refactoring over perfect coding highlighted through the recommendation of 'Refactoring' by Martin Fowler.
Shift towards rapid prototyping and the practical necessity of refactoring in modern software development.
Understanding distributed systems is imperative, recommended starting with 'Understanding Distributed Systems' by Roberto Vitello.
For advanced learning in distributed systems, 'Designing Data-Intensive Applications' by Martin Kleppmann is recommended.
The importance of data-driven decision making in software engineering, with book recommendations 'The Signal and the Noise' by Nate Silver and 'The Art of Statistics' by David Spiegelhalter.
Machine learning essentials covered with recommendations for 'The 100 Page Machine Learning Book' by Andriy Burkov and 'Deep Learning' by Yoshua Bengio and Ian Goodfellow.
Designing Machine Learning Systems for practical implementation advice in software engineering.
Engineering management insights from 'Engineering Management for the Rest of Us' by Sarah Drasner.
Case studies in software engineering from 'Software Engineering at Google' and 'Software Engineering the Hard Parts' for real-world insights.
Productivity in software engineering emphasized with 'Deep Work' by Cal Newport.
The video aims to provide a comprehensive guide for software engineers to enhance their careers beyond just coding skills.
Interview Kickstart's switchup course for career transition into AI, data science, or machine learning.
The video serves as a holistic resource for both budding and experienced software engineers to develop well-rounded skills.
Transcripts
[Music]
so every year I make a list of books
that I believe that every software
engineer should read regardless of what
your expertise is whether you are a
front-end developer a backend engineer
or you eat machine learning models for
breakfast I believe that being a good
software engineer in today's world isn't
just about being the best programmer or
a great designer a good software
engineer holistically understands the
process of creating software the
requirements design implementation and
deployment and it doesn't stop there a
good software engineer understands the
data signals and incremental
improvements through modern machine
learning pipelines all in a very
globally distributed setup So to that
end none of the books in this video will
be teaching you how to learn a specific
programming language or a framework I
even made a video recently about why you
don't need books to learn a new
programming language um this list of
books will instead teach you the
concepts and give you the tools and
strategies to become a great software
engineer from a very holistic
[Music]
approach hi folks my name is utav I'm a
software engineer based in Seattle over
the past 15 years or so I've held
diverse software engineering roles
created a few Tech startups and I'm
currently at Microsoft if you're new to
this channel my goal here is to help you
get the best out of your career by
mentoring you around five key pillars of
career development technical skills
engineering efficiency mindset
entrepreneurship and Financial Freedom
so if that sounds interesting please
consider subscribing and follow me for
behind the scenes and monthly
[Music]
q&as okay so whether you're just
starting out as a software engineer or
you are a professional already you will
need a thorough understanding of
programming Concepts like data
structures and algorithms for this my
recommendation hasn't changed from last
year the one book I would pick to
recommend is Aditya varg's grocking
algorithms the biggest reason I
recommend this book year after year is
because it explains complex topics in
data structures and algorithms in a very
simple intuitive manner don't take me
wrong very white paperish academic books
like introd algorithms by clrs or
algorithm design manual from skner have
the value but I do feel like those tend
to be unnecessarily complex and scare
away a lot of Engineers from getting
interested in complex Concepts without
interest you can't progress your
learning this book takes the opposite
approach by explaining things in a very
casual and fun manner but is more than
adequate to help you thoroughly grasp
the concepts and if you ever want a more
technical approach you can always pick
one of those more academic books as a
followup to this
one you can learn all the coding you
want want solve all the lead code
problems blazing fast and you will
probably do quite well in coding
interviews but for actually being a good
software engineer that alone won't get
you too far there is an art to putting
all your raw knowledge about coding and
design together as an extensible and
maintainable package that we call
software and this usually comes with
years of experience the learning that
you get from doing the right things and
all the wrong things the good news is
that you don't have to wait a decade to
gain some experience some books package
this information in a very digestible
and usable form as a set of best
practices one of my favorite books for
this is Martin fowers refactoring I used
to recommend clean code and clean
architecture by Robert C Martin as part
of this category but I decided to drop
those books this year I've been building
software for more than two decades now
and now more than ever companies and
teams have moved to rapid prototyping
where you build a hack together proof of
concept completely drop it if it fails
the feasibility test or Gra gradually
turn that hacky po into production grade
code if it passes the initial sniff test
in this system there's really no time to
write this perfect Enterprise level code
that follows all the best practices in
the middle of grabbing the next
opportunity and turning around a
workable demo to get Buy in from your
senior leadership team there is no time
to follow the golden route of perfect
software design and this is why the act
of refactoring which is basically
improving existing code is way more
important than writing great code in the
first place and that's what this book is
all about how to take crappy hacky
unmaintainable code whether it's yours
or someone else's and transform that
into bug-free maintainable and
extensible production ready Cod I'll
also add a note here not just for this
book but for any book that teaches you
best practices don't take them as the
Bible of coding and instead as a
supplemental information that you could
potentially apply in your scenario
because not every principle applies to
every situation and understanding that
is as important as understanding the
concepts themselves
okay if you're still wondering what
distributed systems are in 2024 you have
either been living under a giant rock or
you simply don't realize that literally
every decent application you use is a
collection of one or more globally
distributed systems simply put days of
Hosting your entire application on a Dev
box under your desk are long gone even
if your application is a monolith it
will have multiple tiers that will
eventually be distributed regionally or
globally for availability redundancy
disaster recovery and so on so it's
imperative that every software engineer
at least understands the major Concepts
behind distributed architectures I have
two book recommendations for this and
they have remained the same for a few
years now because one the space hasn't
really seen any radical changes in these
years and two no better books have come
up if you're absolutely new to
distributed systems start with Roberto
vitello's understanding distributed
system this book does for distributed
systems what bling algorithms does for
data structures and algorithms it
simplifies the concepts and makes it
easily digestible even for beginners at
the same time it covers a lot of ground
and gives you a highlevel view of the
entire space I won't go into much more
detail here but if you're interested in
the details about this book check out my
review I did a while back if you have
worked with distributed architectures
whether practically or academically then
the next step is the Holy Grail of books
for distributed systems and that's
Martin kelman's designing data intensive
applications commonly known as ddia or
just the red book uh this book takes
every concept covered in understanding
distributed systems and Dives much
deeper with implementation details case
studies and even algorithms which makes
this book also a great follow-up for the
first
one similar to distributed systems if
you're not data driven in 2024 you're
not doing it right you don't have to be
or need to be a data scientist to
understand data even a high level
understanding understanding of what
signals to look for how to collect data
or interpret your data and Telemetry in
a statistically accurate manner will go
a long way in your software engineering
career now if you're an actual data
scientist you will be reading a lot more
technical material in and around data
science but since this video is for
software Engineers I will recommend two
books that are very easy reads but will
give you deep insights into how you can
leverage data to your advantage the
first book here is the signal and the
Noise by Nate silver which as the name
suggests explores the idea of separating
signals from the noise I've seen this
happen too many times over the course of
my career where teams and even
organizations obsess over certain
metrics just because they have the data
to populate set metric and not because
the metric is actually important or
actionable so how do you decide what
data to collect how to make sense of it
and also confidently ignore a lot of
stuff that comes in as noise the last
part is equally as important as
capturing valuable data I love this book
because it investigates the idea of
making predictions by distinguishing
true signal from a ton of noisy data and
the scenarios used in this book don't
have anything to do with software
engineering there are things like
baseball hurricanes gambling and the
stock market and that is the beauty of
data it is universal which also means
that the lessons you learn from this
book are easily transferable to the
field of software engineering the second
book is about statistical literacy if
you don't understand some key Concepts
in statistics you will not be able to
make sense of data regardless of how
much noise is filtered out I remember
when I first started working with data I
realized I was a bit weak in some of the
concepts in statistics so I reached out
to a buddy of mine who's a data
scientist and he recommended the book
probability and statistics to me it was
a good reference book but I felt like I
was back in time doing College
mathematics and that's the problem most
books that teach mathematical Concepts
tend to be very academic which takes a
different mindset to read and which
isn't always fun but fear not because
the art of Statistics how to learn from
data by David Spiegel halter will help
you learn all the important Concepts and
statistics while chilling in your couch
seriously this is one of the easiest
reads in statistics that covers such a
wide breath of concept this book also
has a ton of examples where statistical
reasoning was applied to real world
problems and this anecdotal form of
teaching really helps you grasp the
concepts helping you form a mental model
of how you can interpret data to answer
the questions you
have since we are discussing the topic
of data I cannot ignore the elephant in
the room especially not in 2024 with
diffusion models like Sora that just
launched a few weeks ago we have gone
from AI generating crappy videos like
scary Will Smith gobling spaghetti to a
pristine render of a couple walking
around in Japan in less than 2 years and
with the speed and intensity at which AI
is being tagged to literally any
application in existence it would be
foolish as a software engineer to not at
least have some core understanding of
machine learning I have three book
recommendations for machine learning the
first one is the 100 page machine
learning book by Andre bof this is a
great little introduction to the world
of machine learning it covers the basics
of some of the most common machine
learning Concepts like neural networks
and deep learning which is what models
like GPT 4 are based on I would say that
this is a very solid first machine
learning book um it's not going to make
you an expert in ml obviously but it is
going to cover all the basics in a
concise and fun manner without
overwhelming you or putting you to sleep
if this book Sparks your interest then
you can always refer to a more advanced
book and that's my second recommendation
if you want to get a bit more in depth
dep my recommendation is to go with deep
learning by yosua Benjo and Ian
Goodfellow this is your typical machine
learning book that covers the details
and nuances in a more academic fashion
or you can also go for the tried and
tested route of the old book AI a modern
approach by Peter norvic and Stuart
Russell my final recommendation here is
designing machine learning systems by
chip huan since we are software
Engineers rather than being experts in
the models and algorithms themselves
chances are likely that we will end up
building systems that deal with machine
learning and that's exactly what this
book is for um it's essentially what
designing data intensive application is
for distributed systems it guides you
through the process of creating training
data feature application model retention
and a whole lot more but if you aren't
too keen on starting your machine
Learning Journey all by yourself then
today's video sponsor interview
Kickstart and their switchup course can
help you transition your career into AI
data science or machine learning look
the shift to artificial intelligence is
here to stay and all of us will have to
adapt our skills in some form to match
these emerging Trends whether it is out
of interest and curiosity or out of
requirement but maybe you're not into
learning a whole new language or a stack
by yourself or maybe you a busy working
professional who does not have time to
go through all these books and tutorials
and things like that whatever the reason
is if you are eager to transition your
career into AI data science or machine
learning interview kickstarts switch a
program is an excellent choice both
their data science and machine learning
curriculums cover the found foundations
and the essentials like Concepts in
mathematics and statistics to get you
started on the right track each course
also has a Capstone project to exercise
all your learnings along with dedicated
interview preparation time the classes
are all live focused on practical
learning and are agile with heavy focus
on job interviews and the best of all
they're taught by a combination of fang
engineers and University instructors
through the course you can also be
assured that you will receive top-notch
mentorship and one-on-one mock interview
sessions from industry professionals who
understand the hiring processes behind
some of the best companies in the world
with a strong Alumni network of over
16,000 professionals you'll have access
to referrals and Insider tips to help
you land your next job interview so if
you're interested in transitioning your
career over to AI data science or
machine learning attend interview
kickstarts free webinar to see how their
switch up course can help you the link
will be in the description below also
thanks to interview Kickstart for
sponsoring this
[Music]
video okay my next section is primarily
for engineering managers but I encourage
everyone to read this because most of us
will likely someday become software
engineering managers the book is
Engineering Management for the rest of
us by Sarah drasner this is an excellent
book that gives you an insight into the
world of engineering managers and gives
you some amazing pointers at being a
great one at that as someone who's
managed many different teams both as a
tech lead and as an engineering manager
I definitely think that this book has
some very good advice pointers and real
world examples to help you navigate your
path as a software engineering manager
or a future software engineering manager
this book explores all the key areas
that you'll deal as an em prioritization
execution collaboration escalation
feedback and culture to name a
few okay we're still not done this year
I decided to add a brand new category
called case studies to my book
recommendations look you can learn
technical Concepts from pretty much
anywhere but hearing stories anecdotes
and real world example though they
really help you grow and unfortunately
you can't really get them from most
books or generic YouTube videos that
appeal to the masses that comes with
experience but I have found that there
are a few books over the past few years
that I've released um that do a great
job at filling that void and that's how
this category was born these are two
books that share very unique anecdotes
about the successes and failures in
architecting large highs scale
applications and I think that both these
books do an excellent job at giving you
a glimpse at how it is to build large
applications at some of the biggest
companies like the likes of Microsoft
Google Amazon so on and so forth the
first book Is software engineering the
hard Parts this is a great book to pick
up because it is literally a collection
of real world examples explaining
anecdotally why large applications
especially with distributed
architectures are hard why things worked
when they worked and why they failed
often catastrophically while this book
will never replace real experience as I
said before this is the closest you'll
get to one that can give give you a lot
of information that only comes with
experience please note that this book is
not for absolute beginners you need to
have at least some understanding of how
large applications are built or at least
a theoretical knowledge of distributed
systems to fully enjoy this book my
second recommendation here is software
engineering at Google if you have ever
wondered how it feels like to work at a
large tech company like Google what
engineering practices they follow to
keep their code healthy and maintainable
or how they manage their large code base
this is a great book for you and even
though this book has stories about
Google the information here applies to
pretty much any top tier big tech
company and while this book does not lay
out the best practices like the book
refactoring does for example reading the
stories here will still teach you some
fundamental principles that involve
designing architecting writing and
maintaining
[Music]
code okay I promise this is the last
category I didn't want to make five
different videos about books trying to
milk as many views as possible instead I
wanted to make one really holistic video
that can help every software engineer in
all aspects of their work and even
though productivity isn't directly
related to software engineering per se
it's hard to leave it behind as a
category because if you aren't
productive at what you do you will never
really reach The Highest Potential
output you can actually provide now
productivity is a massive topic one that
probably warrants a video on its own but
for the sake of brevity I will make only
one recommendation here if you had to
read one book on productivity go ahead
and grab deep work by Cal Newport this
book examines current workplace culture
and the unintentional distractions faced
by employees and offers strategies to
overcome these distractions this book is
essentially divided into two parts the
idea which discusses labor Trends and
the rise of machine learning and
practical rules for achieving deep work
and the second part is the rules which
provides practical guidelines and
strategies for achieving deep work by
emphasizing the importance of training
the mind to focus and minimize
distractions software engineer or not
I'm sure anyone that reads this book
will get value out of it also check out
last year book recommendations for
additional books that I did not include
this year that still have value and if
you have any recommendations on your own
please add them in the comments so we
can all read them and definitely watch
my review of the Apple Vision Pro from a
software engineering point of view and
finally please do the usual and help out
the channel like comment and subscribe
cheers
Browse More Related Video
![](https://i.ytimg.com/vi/GDCnydDWRnM/hq720.jpg)
What is a Machine Learning Engineer
![](https://i.ytimg.com/vi/vDJq3QavcaQ/hq720.jpg)
AI Engineering with Scrimba CEO Per Borgen β freeCodeCamp.org Podcast Interview
![](https://i.ytimg.com/vi/l6hjm7kFcPo/hq720.jpg?v=63db4420)
3 Developer Roadmaps That Actually Work
![](https://i.ytimg.com/vi/-VDXBHLU8q4/hq720.jpg)
How I Learned to Code in 4 MONTHS & Got a Job Offer (no CS Degree)
![](https://i.ytimg.com/vi/JLK0Emyu2Bw/hq720.jpg)
The Ultimate Big Data Engineering Roadmap: A Guide to Master Data Engineering in 2024
![](https://i.ytimg.com/vi/nB7Lo9pGzVk/hq720.jpg?v=660c1584)
What Tools Should Data Engineers Know In 2024 - 100 Days Of Data Engineering
5.0 / 5 (0 votes)