Here are 83 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.
It is April 1st, 2038. Day 60 of China's blockade of the rebel island of Taiwan.
The US government has agreed to provide Taiwan with a weapons system so advanced that it can disrupt the balance of power in the region. But what pilot would be crazy enough to runâŠ
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âŠ
A Duke with rigid opinions, a Lady whose beliefs conflict with his, a long disputed parcel of land, a conniving neighbour, a desperate collaboration, a failure of trust, a love found despite it all.
Alexander Cavendish, Duke of Ravensworth, returned from war to find that his father and brother hadâŠ
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.
During my career, Iâve worked on projects large and small (1 - 60+ people) in a wide variety of fields (like repair dispatch, ticket sales, and professional football coaching--the NFL kind not the FIFA kind). All of them, and particularly the big ones, were like antique clocks: they had lots of moving pieces and if any piece broke, the whole thing wouldnât work. (Unfortunately, failed software projects donât look nice on your mantelpiece.) In this list, Iâve tried to pick some books that you might not discover if you look only for programming books. Read those, too, but donât ignore the more human-oriented dimensions of software development. Hopefully youâll find these choices interesting and useful.
Software engineering involves several phases such as requirements gathering, design, programming, testing, and deployment.
This book explains techniques that allow you to build quality and robustness into every phase of the process. It discusses design, classes, defensive programming, collaboration, refactoring, and more.
The book uses many examples in an assortment of languages but the concepts apply to any programming language. In fact, the main themes like building error detection into every step of the process generalize to even non-programming parts of the development process.
If youâre an experienced developer, you may have discovered some of this bookâs ideas elsewhere or even on your own, but you only need to pick up one or two new tidbits to make the book worthwhile.
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âŠ
My first computer was an early IBM PC back when all my friends had Commodores they used for gaming. Not being able to share their games meant I had to do something else, so I read the Introduction to Basic book that came in the box. Iâve been coding, reading about coding, writing about coding, teaching about coding, and talking about coding ever since. The world of technology moves so fast that it is hard to keep up. If youâve taken one of my courses or listened to The Real Python Podcast, I hope youâve heard about my passion for the topic.
I knew how to code when I finished school, or at least I thought I did. What I didnât know was how to think about programs and how to structure the bigger picture. Over time and with practice, I learned how to think about design, but the journey was fraught and painful. I wish I had this book when I started out.
Coming to the book later in my career, I may have intuitively known a lot of what Ousterhout covers, but Iâve never seen it put so elegantly. I found myself nodding along and now often point coders at this little treasure.
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âŠ
The Duke's Christmas Redemption
by
Arietta Richmond,
A Duke who has rejected love, a Lady who dreams of a love match, an arranged marriage, a house full of secrets, a most unneighborly neighbor, a plot to destroy reputations, an unexpected love that redeems it all.
Lady Charlotte Wyndham, given in an arranged marriage to a man sheâŠ
My passion for developing production-ready, cooperating microservices began in 2008 when I first started assisting customers in creating distributed systemsâlong before the term âmicroservicesâ was coined. During that time, I faced significant challenges, including grappling with the âEight Fallacies of Distributed Computingâ. Since then, Iâve dedicated most of my career to deepening my understanding of these complexities and finding ways to address them through robust architecture, design patterns, and the right tools.
A common reason for microservice projects to fail is a lack of understanding of how to build resilient and fault-tolerant microservices.
This book was a game-changer for me, providing essential strategies to address these challenges. It taught me how to avoid anti-patterns like Cascading Failures and embrace patterns like Circuit Breaker and Bulkhead to manage temporary network issues and overload situations. The real-world solutions it offers were immediately applicable to my projects.
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âŠ
As a kid, I used to do all the math problems in my textbooks just for fun, even if they werenât part of a homework assignment. My grandchildren cringe when I tell them this. I am a researcher and educator in secure software engineering and have enjoyed a productive career in software development and management, software engineering and software security research, and software and secure software engineering education.
This is one of the first books resulting from the Microsoft security âpush,â and itâs a classic. Itâs of interest both in understanding how Microsoft went about tackling the problem of developing secure software, and as a backdrop for the evolution of secure software development practices that emerged at Microsoft and other major software vendors.  Â
Your customers demand and deserve better security and privacy in their software. This book is the first to detail a rigorous, proven methodology that measurably minimizes security bugs-the Security Development Lifecycle (SDL). In this long-awaited book, security experts Michael Howard and Steve Lipner from the Microsoft Security Engineering Team guide you through each stage of the SDL-from education and design to testing and post-release. You get their first-hand insights, best practices, a practical history of the SDL, and lessons to help you implement the SDL in any development organization.
Discover how to:
Use a streamlined risk-analysis process to find securityâŠ
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.
This is the most recent book I'm recommending, and itâs also more than just a book on Test-Driven Development. I often proclaim that Test-Driven Development and software design are two sides of the same coin. One cannot separate one from the other. So learning about Test-Driven Development also means that one has to learn about software design principles. This book teaches both. The first part of the book is all about Test-Driven Development, while the remainder of the book also touches on object calisthenics, refactoring, code smells, design patterns, the S.O.L.I.D. principles, connascence, the four elements of simple design, and much more. Whether youâre new to programming software, or whether youâre a seasoned developer, thereâs much to learn from this book.   Â
Delve deep into the various technical practices, principles, and values of Agile.
Key Features
Discover the essence of Agile software development and the key principles of software design
Explore the fundamental practices of Agile working, including test-driven development (TDD), refactoring, pair programming, and continuous integration
Learn and apply the four elements of simple designBook Description
The number of popular technical practices has grown exponentially in the last few years. Learning the common fundamental software development practices can help you become a better programmer. This book uses the term Agile as a wide umbrella and covers Agile principles and practices, asâŠ
This book follows the journey of a writer in search of wisdom as he narrates encounters with 12 distinguished American men over 80, including Paul Volcker, the former head of the Federal Reserve, and Denton Cooley, the worldâs most famous heart surgeon.
In these and other intimate conversations, the bookâŠ
Markus GĂ€rtner works as Organizational Design Consultant, Certified Scrum Trainer, and Agile Coach for it-agile GmbH, Hamburg, Germany. Markus, author of ATDD by Example - A Practical Guide to Acceptance Test-Driven Development, a student of the work of Jerry Weinberg, received the Most Influential Agile Testing Professional Person Award in 2013 and contributes to the Softwerkskammer, the German Software Craft movement. Markus regularly presents at Agile and testing conferences all over the globe, as well as dedicating himself to writing about agile software development, software craft, and software testing, foremost in an Agile context.
The second book from Gregory and Crispin brought me up-to-date on the different trends in the Agile world, ten years after having delved into their first book.
How do you share the quality mindset in a DevOps culture? What about Design Thinking? With many more examples from the industry, the two authors made me curious about some of the things that I had ignored until I read their book.
Janet Gregory and Lisa Crispin pioneered the agile testing discipline with their previous work, Agile Testing. Now, in More Agile Testing, they reflect on all they've learned since. They address crucial emerging issues, share evolved agile practices, and cover key issues agile testers have asked to learn more about.
Packed with new examples from real teams, this insightful guide offers detailed information about adapting agile testing for your environment; learning from experience and continually improving your test processes; scaling agile testing across teams; and overcoming the pitfalls of automated testing. You'll find brand-new coverage of agile testing for the enterprise,âŠ