“Honesty in small things is not a small thing.”
This is a book about humble concerns whose value is nonetheless far from small.
We can accept for granted that responsible professionals give some time to thinking and planning at the outset of a project.
I think this is one of the base assumptions the book makes about its readers. If your routine is to hop directly into code without a thought for the overall design, you may try to change that habit.
A focus on maintenance rather than on production.
- Seiri, or organization (think “sort” in English). Knowing where things are—using approaches such as suitable naming—
- Seiton, or tidiness (think “systematize” in English). There is an old American saying: A place for everything, and everything in its place. A piece of code should be where you expect to find it—and, if not, you should re-factor to get it there.
- Seiso, or cleaning (think “shine” in English): Keep the workplace free of hanging wires, grease, scraps, and waste.
- Seiketsu, or standardization: The group agrees about how to keep the workplace clean.
- Shutsuke, or discipline (self-discipline). This means having the discipline to follow the practices and to frequently reflect on one’s work and be willing to change.
If you take up the challenge of reading and applying this book, you’ll come to understand and appreciate Shutsuke (self-discipline).
Breakdown maintenance—waiting for bugs to surface—is the exception. Instead, we go up a level: inspect the machines every day and fix wearing parts before they break.
This is how it works in other high-value engineering roles. Aircraft, ships, large buildings, are all routinely inspected with the expectation that any code violations are promptly fixed.
We should probably re-do major software chunks from scratch every seven years or so to sweep away creeping cruft. Perhaps we should update Brooks’ time constant to an order of weeks, days or hours instead of years. That’s where detail lies.
Not just to keep away cruft, but also to keep it updated with changing best practices. We've been writing code for 50 years: compared to the time we've been building bridges, cars, even airplanes, the field is in its adolescence.
We abandon our code early, not because it is done, but because our value system focuses more on outward appearance than on the substance of what we deliver.
Bell Labs Software Production Research organization.
Bell Labs was an incredible center for innovation. For further reading, look at [The Idea Factory](https://smile.amazon.com/dp/B005GSZIWG/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)
Quality is the result of a million selfless acts of care—not just of any great method that descends from the heavens.
While rework in the manufacturing metaphor leads to cost, rework in design leads to value.
It is a recommended practice in Scrum that re-factoring be part of the concept of “Done.”
Which door represents your code? Which door represents your team or your company?
Learning to write clean code is hard work. It requires more than just the knowledge of principles and patterns. You must sweat over it. You must practice it yourself, and watch yourself fail.
You must see them agonize over decisions and see the price they pay for making those decisions the wrong way.
The detail in section 2 is intense. You will have to flip back and forth between the narrative and the code listings. You will have to analyze and understand the code we are working with and walk through our reasoning for making each change we make. Set aside some time because this should take you days.
This knowledge base is of limited value if you don’t do the work of carefully reading through the case studies in the second part of this book.