Learn eight principles to simplify your code and become a more effective (and successful) programmer.
Most software developers waste thousands of hours working with overly complex code. The eight core principles in The Art of Clean Coding will teach you how to write clear, maintainable code without compromising functionality. The book’s guiding principle is reduce and simplify, then reinvest energy in the important parts to save you countless hours and ease the often onerous task of code maintenance.
Bestselling author Christian Mayer leverages his experience helping thousands perfect their coding skills in this new book. With expert advice and real-world examples, he’ll show you how
The Python-based The Art of Clean Coding is suitable for programmers at any level, with ideas presented in a language-agnostic manner.
To be honest, I was expecting more from this book. The book touches many areas of Software Development focusing on the simplicity; but unfortunately a bit shallow for an experienced programmer. In the first three chapters; the author touches complexity, 80/20 and MVP. Although the arguments are sound; the caveats are not mentioned mostly; so these chapters oversimplify the related concepts.
In the next two chapters; Clean Code and Premature Optimization concepts are explained. Although I agreed with the arguments stated in these chapters; I see them as a brief summary on the exiting literature (e.g: Clean Code or Refactoring) without adding significant value.
I liked the Chapters 6,7 which elaborate on the concept of "Flow" (i.e: reducing context switching for a programmer) and the Unix Philosophy.
Chapter 8 focuses on minimalist design. Similar to "Clean Code" chapter; it is a good intro for beginners; but does not provide too much details.
In general, I view this book as a good roadmap for beginners and it serves as a brief summary of other books focused on different aspects of Software Development. But the book does not add up a lot of value if you have a few years experience in the area.
This is an amazing book packed with advice and techniques to become a better programmer. The insights on the 80/20 principle are particularly enlightening and applicable to all aspects of life, sparking my interest in exploring this topic further.
Here are a few impactful quotes from the book:
"At the end of your life, you won’t judge whether you’ve led a meaningful life based on how many emails you’ve replied to, hours of computer games you’ve played, or Sudoku puzzles you’ve solved."
"The majority of effects come from the minority of causes."
"Increasing your productivity leads to superlinear improvements in your income, happiness, and joy at work."
"For all practical purposes, you should start your success habit: write more lines of code every day now."
"The most transformative application for you will be to become an 80/20 thinker; that is, you constantly try to find ways to accomplish much more with much less."
"Read more books in your industry."
"Smile. It’s surprising how simple some consequences are. If you’re a positive person, many things will be easier."
"Don’t do things that reduce value. These are things like smoking, eating unhealthily, sleeping little, drinking alcohol, and watching too much Netflix. Avoiding things that drag you down is one of your biggest leverage points. If you skip doing things that harm you, you’ll become healthier, happier, and more successful."
"For an idea to succeed, it takes a person to push it into reality."
"Work on fun projects that fulfill your purpose."
This is a book to read multiple times over, as its lessons are both profound and practical, providing guidance that extends beyond programming into broader life philosophy.
Mayer’s book is revealing and enlightening, but only if you have some experience coding and understand the syntax of Python and similar languages. That’s not a criticism: this isn’t a book for a beginning coder. It is a book for someone who’s written some software and wants to improve their skills. I haven’t written any code in a long time, but have been involved in helping organizations improve their program management and development processes. Obviously, high quality and high productivity coding—through writing clean code—can help. Mayer includes many code snippets to illustrate key points, but the reader will need to understand some of the syntax of Python, the concept of libraries, and other code-writing specific concepts. Like any book or article about software development this book assumes the reader will understand the software jargon. Those last elements are why this book isn’t for beginners. It’s an excellent book in that it clearly defines clean code. More importantly, it defines the philosophies about how to write it. If you’ve been programming for a while, I recommend this book…and the many references in the book that provide support for writing clean code.
This author needs to take some of his own advice. Some of his own recommendations that he did not follow are: 1) Avoid redundancy. 2) Avoid unnecessary complexity. 3) Use well defined variables (or in the case of his book: use well defined terms)
This book is redundant, unnecessarily complex, and he assumes you know a bit of software jargon.
Mayer doesn’t mention avoiding contradiction, but he ought to work on that in his next edition. Contradictions are a reality, but I believe they ought to be explicitly stated in an organized fashion. On page 55, Mayer recommends using libraries. However, Mayer offers a contradiction to this on pages 109-110. Tackle the pros and cons of libraries in one spot.
If you’re going to read this book, I suggest reading only chapters 4 and 5.
The most useful moment in this book was: “Can you improve the data structures? Some common easy solutions include using sets instead of lists (checking membership, for example, is much faster for sets than lists) or dictionaries instead of collections of tuples.” As a newer programmer, I needed the whole book to be more specific like this.
I picked this book up as a programmer. In addition to programming, it gives some general advice. The chapters:
1. How complexity harms your productivity - we tend to make things more complicated than they need to be 2. The 80/20 principle - focus on the 80% which is important 3. Build an Minimum Viable Product 4. Write clean and simple code 5. Premature optimization is the root of all evil - we tend to spend a lot of time optimizing stuff that doesn't even get used 6. Flow - get into a zone (similar to Deep Work by Cal Newport) 7. Do one thing well and other Unix principles - this has some great discussion on functions doing just one thing, write a bunch and string them together (ie, microservices) 8. Less is more in design - once again, we tend to overcomplicate 9. Focus - similar to Flow
The book reads easily. If you're looking for a deep programming book, this isn't it. However, it offers some great insights into both programming and life.
The Art of Clean Code is a concise overview of some general principles that programmers can use to hone their craft and take their skills to the next level. I think the author did a pretty decent job of choosing the most salient points to make; however, I think some of the examples that he chooses do the reader a disservice by being far too simplistic and obvious. Borderline examples, where there could be some question as to the right approach, or ones where the right approach might not appear to fit the guidelines at first would be better to help the reader hone their instincts around these guidelines. Although a little lightweight for my taste, I would still highly recommend this book to any programmers who are stuck trying to up their game.
I thought that the book was important for me to read. It helped shift my mentality on the industry of software by teaching some principles which can be applied both to the practice of coding and the habits around it, like what focus is and it’s importance. At times I found the book to be boring, lacking significance in the message it was proposing and restating something which I believe could have been expressed more succinctly. Despite these brief moments, I would recommend this book to others learning computer science or programmers as it draws upon basic requisite knowledge to teach valuable lessons.
This book touches on many principles of software design and serves as a starting guide to incorporating simplicity in coding. It explores a variety of topics, including the 80-20 principle, psychology (e.g., Flow by Mihaly Csikszentmihalyi), UNIX principles, and UX design principles, among others. While the author attempts to connect these concepts with programming, I found these connections not particularly compelling.
Overall, I appreciated the concept of the book and found a few key takeaways, which the author has conveniently summarize in the cheat sheet ( mentioned in the after note ).
I didn't expect to learn about the principles of minimalism in a programming book. The author advocates for focus and simplicity throughout the book, and then discusses how to apply this in different aspects of programming.
I like the first few chapters where the author lays out the case for staying focused. But later chapters, except for the one on flow, are a bit repetitive and quite boring. That being said, I'd still recommend a quick read just for those first few chapters.
The book is not boring and can be read easily even when I am exhausted after a full workday. I liked the most the presentation of Pareto distriburions that are so frequently found in software engineering.
Clear and straightforward, but I think that its message boils down too easily to a cheat sheet: Omit the unnecessary in your design, implementation, and workflow.
Nobody would argue with the concepts but the devil is in the details.
Of course, this is not a new concept, but the author made all the concepts in this book with a lot of graphics. It's easy to understand for the beginner, though maybe the examples are the basic ones.
Easy reading, if you have a programming background. Most advice obvious & general, but sometimes useful (depending on level). Worth finding in a public library than buying.
The advice contained within this book is invaluable, yes, but it's not exceptional. It's also not as specific to computer science as I initially thought.