



Review: Short and to-the-point - As an experienced software engineer, I liked this book a lot. It's short, fairly general and high-level, much of the content seems like common sense, but it's still very helpful to have it clearly set down. The author emphasises the benefits of trying to stay in Technical Credit rather than Technical Debt (without using those terms). There is also a refreshing absence of fashionable methodologies. Review: good for design guidelines - I think this book is excellent for design guidelines, which is something I find scarce in many software books. The book is short in length, which means the good stuff isn't buried under bloat, and being well written is quick to read.
| Best Sellers Rank | 22,743 in Books ( See Top 100 in Books ) 11 in Software Design & Development 12 in Computing & Internet for Professionals 38 in Computing & Internet Programming |
| Customer reviews | 4.4 4.4 out of 5 stars (2,529) |
| Dimensions | 16.51 x 1.14 x 20.32 cm |
| ISBN-10 | 173210221X |
| ISBN-13 | 978-1732102217 |
| Item weight | 290 g |
| Language | English |
| Print length | 196 pages |
| Publication date | 26 July 2021 |
| Publisher | Yaknyam Press |
C**D
Short and to-the-point
As an experienced software engineer, I liked this book a lot. It's short, fairly general and high-level, much of the content seems like common sense, but it's still very helpful to have it clearly set down. The author emphasises the benefits of trying to stay in Technical Credit rather than Technical Debt (without using those terms). There is also a refreshing absence of fashionable methodologies.
D**G
good for design guidelines
I think this book is excellent for design guidelines, which is something I find scarce in many software books. The book is short in length, which means the good stuff isn't buried under bloat, and being well written is quick to read.
R**T
Good engineering book
I'm stuck between 3 and 4 stars. As others said, it's a good book overall. There are some design principles that make a lot of sense and also, in retrospective, explain why some Java libraries are so bad ( you can figure it out for yourself after reading it ). However, I couldn't get over the fact that a substantial part of this book is mostly about comments - got to a point where I was so fed up, I was legit skipping pages to get to more meaningful content.
W**Y
An excellent book about software design principles, a must read for all software engineers
I discovered this work by first watching John present his material at a Google Talk series on software design. When he said he had tried for years to find a book that encapsulated key software design principles and failed, I really resonated with his approach. I have been looking for ages for a standard text to refer to my mentees, and this book really encapsulates all the key design principles I have spent years fine tuning myself. I wish I had had this book when I was starting out! I particularly like John's writing style, it is as clear and concise as the software design principles he advocates. The Book is a print on demand book with a simple but effective design, printed on quality paper. I read it from end to end in a week of lunchtimes, because each chapter focuses on one design principle and is only a few pages long, and while there are small examples for everything, it is not over cluttered with intricate detail. It is just the right level for a beginner or an expert to benefit from alike. The examples are well chosen from a knowledge-base of hundreds of student and industrial projects that John has direct involvement with, and every example clearly supports the principle being presented. I will be recommending this book to everyone that I mentor and support, and I recommend that you buy it too. If you are a beginner, it will give you much to think about and practice as you grow into your career. If you have been developing software for a few years, it will make you re think some of the things you do and adjust your style for the better. If you are experienced, it will encapsulate succinctly all the principles you have spent years perfecting, and give you an easy way to pass on these principles to those around you that you mentor.
F**S
Finally a clean code book that justifies itself.
A book that falls in the same category as "clean code", except it gives better advice with actual justifications. Unlike "clean code", this book actually tells you why a certain way is better rather than just stating it as some biblical truth. It also presents overarching theory that all the concepts sit on and with which you can take to make actually day to day decisions that aren't based on hard rules. The main concept presented is the idea of complexity, reducing the complexity that is exposed to developers by abstracting it away into parts that can be used as a black box and is seen by few. The book is good for both junior and senior engineers and will make you rethink how you and your team work, in particular constantly improving the code base rather than just looking to address tech debt at some future point in time. At the very least you will come out with a different opinion on some topics, refreshed some good practices, and learn good terminology to describe difficult concepts. People who complain that this book encourages long functions and classes really miss the point. The point is that functions and classes should do one thing in isolation. That's the goal, not to make it short. A lot of the time functions are shorter as a result of following that objective, but you are optimizing for things doing one thing not shortness within itself. Separating functions out into blocks that do nott stand alone as independent units just makes things harder to understand and read as you have to jump about in the file, or into other files. If you look at some of the before and after examples that do this in clean code, they are actually worse a lot of the time after. If you have this opinion, when you read this book be open to changing your mind. If your argument is "functions should be 20 lines long at most because that's what I read in clean code and anything else is wrong" you are really limiting yourself and hurting the people who read your code. It was also very refreshing to finally hear a counter argument to the dogmatic application of TDD. To conclude, if you would like to learn how to write clean code with actual generalisable theory over using hard rules such as never comment, a function should be x lines long, and classes should be y lines long, then this is the book for you.
I**N
Too general
The book gives general advices without enough good examples. It could be helpful for very junior/intern developers. I was surprised by the big number of pages written about writing comments in the code.
J**N
How to design good software
This is an excellent book by an author who clearly understands software design. He gives an excellent set of principles for software design. He carefully explains how he's come to this conclusion after many years of software development, and he gives alternative approaches explaining the trade-off between different approaches. The actual software examples he gives come from operating systems. I have not worked on operating systems myself, so the examples were not entirely relevant to me. However the principles he is describing make a lot of sense and are very useful.
C**N
Mi pareja compró este libro para leerlo, tal y como ha hecho con otros libros. Sin embargo acaban decorando una estantería.
S**L
Possibly my favourite tech book ever. Unlike other "clean code" books, it's not just a collection of advice, it unfolds a real theoretical framework that embodies the perks it touts in good design: simplicity, concision, consistency and pragmatism. It felt like the author somehow found just the right abstractions to describe what we pursue in good code. All served by spot on mental models (deep modules, information leakage), simple yet precise language and telling examples.
A**O
It's an amazing book where you get insights about how to build and maintain a software design. It's technical, but not a heavy reading, which makes it even more enjoyable.
K**A
The book's examples are mostly from programs running on an OS, with significant iron underneath. I mostly work with embedded systems, which are severely resource contained, often running on bare metal with a limited thread scheduler. Still, I found the book being generic enough to be applicable for that niche as well. I completely agree with Prof Ousterhout regarding shallow methods, variable duplication and the like being red flags. He repeatedly re-iterates the importance of hiding implementation details, which is actually one of the stated goals of OOP, The book tries to drive a point through: your system's long-term manageability depends on its abstractions, how you partition the task at hand into self-contained chunks with minimum, or preferably no interdependence between them. Yes, it cost a a lot of design time without cranking out any code, but this investment will be paid back during the actual implementation, and, more importantly, during the lifetime of the project (which with embedded systems is often decades). I especially like his talking about commenting the code and how comments provide meta-information that the code does not convey. The code should be obvious, sure. You read it and should know what it does. But will you know why it does it the way it does? Often the code is written on a particular way to accommodate peculiarities of the underlying hardware, and it incorporates a lot of knowledge/mathematics of a completely different field that the device services. You might have it all in your head when working on the project, but expecting the next guy (or even yourself a few years later) to know it all is not realistic. Comments can point out all those externalities and provide a rational for particular, possibly counter-intuitive, design choices employed in the code. Overall, I think the book is an eye-opener, at least it should make you think about abstractions, interactions, separation, generalisation, and, the most important message of the book, minimising complexity.
A**W
Must read for software developers
Trustpilot
Hace 2 semanas
Hace 2 días