Here are 81 books that Clean Code fans have personally recommended if you like
Clean Code.
Book DNA is a community of 12,000+ authors and super readers sharing their favorite books with the world.
The art of computer programming is a lot like the art of writing: It's not just about what your program says but about how it says it. One of the reasons I like the C and C++ languagesâwhich I picked up in the late 1990s and haven't put down sinceâis that, as compiled, non-sandboxed languages, they promise total control over the machine. Show me where you want each byte of data to go in memory; show me the machine instructions you want; and I can make C++ do that for you.Â
Every "computer person" should read GEB at least once. Preferably in high school, when you still have the free time to dive deep into all the recreational math exercises. If you're already working 40-hour weeks and wonder who has time for Hofstadter's 750-page "metaphorical fugue on minds and machines," all I can say is: Better late than never!
Douglas Hofstadter's book is concerned directly with the nature of maps" or links between formal systems. However, according to Hofstadter, the formal system that underlies all mental activity transcends the system that supports it. If life can grow out of the formal chemical substrate of the cell, if consciousness can emerge out of a formal system of firing neurons, then so too will computers attain human intelligence. Goedel, Escher, Bach is a wonderful exploration of fascinating ideas at the heart of cognitive science: meaning, reduction, recursion, and much more.
Magical realism meets the magic of Christmas in this mix of Jewish, New Testament, and Santa storiesâall reenacted in an urban psychiatric hospital!
On locked ward 5C4, Josh, a patient with many similarities to Jesus, is hospitalized concurrently with Nick, a patient with many similarities to Santa. The two argueâŠ
As a computer science professor and educator, my teaching motto is Rigor and Vigor. I believe that the only way to learn something deeply, whether it's an abstract mathematical argument or a complex computer system â is building the thing from the ground up, from first principles. That's the rigor. The second requirement â vigor â comes from the need to make this learning experience captivating, rewarding, empowering. I spent much of my career developing books, courses, and games that help learn computer science and mathematics with gusto. I am pleased that this work has had an impact, and that it resonates with many students and self-learners around the world.
This popular book takes a broad perspective that surveys the main physical and logical layers from which all digital devices are made.
I like the accessible writing style, aimed at lay readers, and the bookâs companion website, where one can experiment interactively with many of the artifacts described in the book. The second edition includes a new section that focuses on a functional subset of Intel 8080, the microprocessor that ushered the personal computing revolution, and the instruction set used by many PCs and servers today.
What do flashlights, the British invasion, black cats, and seesaws have to do with computers? In CODE, they show us the ingenious ways we manipulate language and invent new means of communicating with each other. And through CODE, we see how this ingenuity and our very human compulsion to communicate have driven the technological innovations of the past two centuries.
Using everyday objects and familiar language systems such as Braille and Morse code, author Charles Petzold weaves an illuminating narrative for anyone who's ever wondered about the secret inner life of computers and other smart machines.
I love to expand my knowledge and learn not just about new technologies, but how things work. I find it fascinating to dig deep into computer programming, technology concepts, and really geek out on things. Thatâs why I love software development or programming books that arenât just about some technology and how to do something, but rather books that really make you think and teach you not just programming skills but critical thinking about problem-solving skills. As a software developer for over 15 years and a person who teaches software developers, I have learned that if someone isnât entertained, they arenât learning. Thatâs why I put together a list of fun, entertaining and useful books.
Even though this book is a bit older, I had a ton of fun doing the programming problems in this book. This book really makes you think outside the box as a programmer and try to solve various problems in different ways depending on what you are trying to optimize for.
I really learned a lot about not just solving a problem, but solving a problem for a specific set of goals. Overall it made me a better programmer and made me think more deeply about programming problems.
If you want to improve your problem-solving skills and have fun doing it, I would definitely recommend this book.
When programmers list their favourite books, Jon Bentley's collection of programming pearls is commonly included among the classics. Just as natural pearls grow from grains of sand that irritate oysters, programming pearls have grown from real problems that have irritated real programmers. With origins beyond solid engineering, in the realm of insight and creativity, Bentley's pearls offer unique and clever solutions to those nagging problems. Illustrated by programs designed as much for fun as for instruction, the book is filled with lucid and witty descriptions of practical programming techniques and fundamental design principles. It is not at all surprising thatâŠ
Stealing technology from parallel Earths was supposed to make Declan rich. Instead, it might destroy everything.
Declan is a self-proclaimed interdimensional interloper, travelling to parallel Earths to retrieve futuristic cutting-edge technology for his employer. It's profitable work, and he doesn't ask questions. But when he befriends an amazing humanoid robot,âŠ
I love to expand my knowledge and learn not just about new technologies, but how things work. I find it fascinating to dig deep into computer programming, technology concepts, and really geek out on things. Thatâs why I love software development or programming books that arenât just about some technology and how to do something, but rather books that really make you think and teach you not just programming skills but critical thinking about problem-solving skills. As a software developer for over 15 years and a person who teaches software developers, I have learned that if someone isnât entertained, they arenât learning. Thatâs why I put together a list of fun, entertaining and useful books.
Wow! This book is exactly what every programmer has always wanted to know or even felt guilty about not knowing and itâs all presented in an extremely simplified and fun way.Â
This is one of those books where you get excited in the morning when you wake up because you know you are going to be able to read more in the book and you are hoping the book will never end.
Itâs rare to find a big book that I enjoyed reading so much and felt so short. This book covers almost everything you ever wondered about computer science. After reading this book, I felt like I finally understood everything a programmer was supposed to know and I no longer felt that nagging feeling of being an imposter.
Iâm a software engineer because Iâm a builder at heart. I have always had a profoundly curious mind, and always enjoyed tinkering. So at one point in my life, it became evident that I was going to be an engineer. I consider teaching the final step of learning, so whether this means writing an article or giving a talk, or simply sharing recommendations, I make a final effort to share with the community of like-minded people what I have learnt. For this reason, I hope you enjoy reading my book and the ones I recommended.
I've found this book enlightening in many key areas of software development, and as I was reading it, I felt connected with the author (even though I've never met him, I could imagine us having a conversation about software engineering, and agreeing on pretty much everything).
It was a revealing book for me, in the sense that it gave a formal framework to several ideas I've noticed as a practitioner over the years. In that regard, I wish I'd come across this work way earlier in my career.
Widely considered one of the best practical guides to programming, Steve McConnell's original CODE COMPLETE has been helping developers write better software for more than a decade. Now this classic book has been fully updated and revised with leading-edge practices-and hundreds of new code samples-illustrating the art and science of software construction. Capturing the body of knowledge available from research, academia, and everyday commercial practice, McConnell synthesizes the most effective techniques and must-know principles into clear, pragmatic guidance. No matter what your experience level, development environment, or project size, this book will inform and stimulate your thinking-and help you buildâŠ
Iâm a software engineer because Iâm a builder at heart. I have always had a profoundly curious mind, and always enjoyed tinkering. So at one point in my life, it became evident that I was going to be an engineer. I consider teaching the final step of learning, so whether this means writing an article or giving a talk, or simply sharing recommendations, I make a final effort to share with the community of like-minded people what I have learnt. For this reason, I hope you enjoy reading my book and the ones I recommended.
I have to be honest here: when I was reading this book on a trip to New York, I found myself quite surprised because I had seen so many praises for this book, yet I did not particularly agree with most of the topics I was reading about. In particular, I found several points that contradicted those in Clean Code and Code Complete.
I know thereâs a debate going on between the authors on a distribution list, but besides some of these points on which I respectfully disagree with the author, I can see is a book of immense value, and there are tons of other great points made about great software design (for example, âmodules should be deepâ). And the explanations are crystal clear.
A final reason for recommending this book is that itâs always enriching to expose oneself to a different viewpoint.
This book addresses the topic of software design: how to decompose complex software systems into modules (such as classes and methods) that can be implemented relatively independently. The book first introduces the fundamental problem in software design, which is managing complexity. It then discusses philosophical issues about how to approach the software design process and it presents a collection of design principles to apply during software design. The book also introduces a set of red flags that identify design problems. You can apply the ideas in this book to minimize the complexity of large software systems, so that you canâŠ
Nature writer Sharman Apt Russell tells stories of her experiences tracking wildlifeâmostly mammals, from mountain lions to pocket miceânear her home in New Mexico, with lessons that hold true across North America. She guides readers through the basics of identifying tracks and signs, revealing a landscape filled with the marksâŠ
Iâm a software engineer because Iâm a builder at heart. I have always had a profoundly curious mind, and always enjoyed tinkering. So at one point in my life, it became evident that I was going to be an engineer. I consider teaching the final step of learning, so whether this means writing an article or giving a talk, or simply sharing recommendations, I make a final effort to share with the community of like-minded people what I have learnt. For this reason, I hope you enjoy reading my book and the ones I recommended.
The marvel of this book is that it's a rare one: most of the books focus on the construction part of software, all the design and preparation. But what happens once the system is out there, launched? Release It! focuses on the software architecture aspects that entail designing a platform to make it reliable once itâs been released.
It touches on concepts like logging, locking, circuit breakers, and itâs written from the authorâs experience with real-life examples (and even code snippets). As someone who has worked on several different types of software products (and been on-call), Iâve enjoyed reading the author tell us about things that went wrong in the past, and what lessons were learnt from them.
A single dramatic software failure can cost a company millions of dollars - but can be avoided with simple changes to design and architecture. This new edition of the best-selling industry standard shows you how to create systems that run longer, with fewer failures, and recover better when bad things happen. New coverage includes DevOps, microservices, and cloud-native architecture. Stability antipatterns have grown to include systemic problems in large-scale systems. This is a must-have pragmatic guide to engineering for production systems. If you're a software developer, and you don't want to get alerts every night for the rest of yourâŠ
Iâm a software engineer because Iâm a builder at heart. I have always had a profoundly curious mind, and always enjoyed tinkering. So at one point in my life, it became evident that I was going to be an engineer. I consider teaching the final step of learning, so whether this means writing an article or giving a talk, or simply sharing recommendations, I make a final effort to share with the community of like-minded people what I have learnt. For this reason, I hope you enjoy reading my book and the ones I recommended.
I've found this book to be instrumental in my career as a software engineer, especially because it's full of useful and practical advice on how to be effective and productive on a day-to-day basis, but it also includes actionable advice, and helped me a lot on thinking about my career long-term.
Straight from the programming trenches, The Pragmatic Programmer cuts through the increasing specialization and technicalities of modern software development to examine the core process--taking a requirement and producing working, maintainable code that delights its users. It covers topics ranging from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse. Read this book, and you'll learn how to
Fight software rot; Avoid the trap of duplicating knowledge; Write flexible, dynamic, and adaptable code; Avoid programming by coincidence; Bullet-proof your code with contracts, assertions, and exceptions; Capture real requirements; Test ruthlessly andâŠ
Iâm a professional software developer for more than 22 years now. Iâve used many programming languages, platforms, frameworks, etc. throughout my career. However, the only constant for me personally was the practice of Test-Driven Development. Iâve never stopped learning about the principles and practices behind it, and it paid huge dividends throughout my career. Iâm very humbled and grateful to be able to learn from all those amazing people over the years, that I decided to write a book on the topic. Giving back some of the knowledge that I gathered about TDD throughout 18+ years.
During the early years of my career as a software developer, I regularly developed very small programs that would exercise parts of the system that I was working on back then. I realized very quickly that those small programs would save me a lot of time figuring out whether the changes that I made would actually work or not. Until at some point a colleague mentioned the concept of Test-Driven Development. I first did some experimentation, dipping a toe into the water to feel the temperature. It wasnât until the first time I picked up this book that I jumped right in. From then moment on, it all made sense. Although this book was published back in 2002, for me it still is the book when it comes to the subject of Test-Driven Development.     Â
Quite simply, test-driven development is meant to eliminate fear in application development. While some fear is healthy (often viewed as a conscience that tells programmers to "be careful!"), the author believes that byproducts of fear include tentative, grumpy, and uncommunicative programmers who are unable to absorb constructive criticism. When programming teams buy into TDD, they immediately see positive results. They eliminate the fear involved in their jobs, and are better equipped to tackle the difficult challenges that face them. TDD eliminates tentative traits, it teaches programmers to communicate, and it encourages team members to seek out criticism However, even theâŠ
The Bridge provides a compassionate and well researched window into the worlds of linear and circular thinking. A core pattern to the inner workings of these two thinking styles is revealed, and most importantly, insight into how to cross the distance between them. Some fascinating features emerged such as, circularâŠ
Iâve been doing large-scale software development at great US businesses from the introduction of the PC to the cloud explosion. From my earliest successes (online banking at US Bank in 1985!) to my biggest failures (Wells Fargo âCoreâ disaster in 2006), Iâve always sought better ways of doing things. These five books all were important to my learning and remain highly relevant, and I hope you find them useful as well.
This book helped me set my initial approach to software development and I still periodically return to it for grounding.
An MIT project theorized that new-fangled PC software developers knew something mainframe and mini-computer makers didnât. MITâs research revealed something else entirely: Microsoft had uniquely effective ideas on how to build complex products in rapidly evolving competitive markets. Here is âagileâ before it was put into the Manifesto in 2001, in a more complete form. Ever wonder where the idea of a team comprising functional specialists with overlapping roles, united by a common goal, came from? Or incremental feature evolution with periodic synchronization and constant testing? Early brilliance still of foundational relevance, in a coherent and engaging form.
Drawing on observation, interviews, and confidential data, the authors reveal Microsoft's product development, marketing, and organizational strategies.