QA Finds Nothing

Make Testing a Non‑Event In our day to day lives, the quality of our efforts are our own responsibility. Yet, in most software teams there’s a dedicated group of special people to take some of that responsibility away from the others. It sounds strange to hear it described that way. When there is a QA phase, then it should be the norm to hear that “Everything works.” And in those rare circumstances when QA finds a fault, the builders should ask, “What in our process let this slip?” and fix that process so that next time QA will find nothing. ...

2025 March 10

Fear Removal Button

Imagine a button that lights green if the system works and red if it breaks - and it returns results in seconds. You’d probably press it after every tiny change. That fast feedback would remove fear and makes cleaning code feel safe. When feedback is immediate, you can Refactor, Pair, and apply Simple Design without dread. The Agile practice of TDD (Test-Driven Development) enables this button: tests become the quick signal that lets builders improve the code continuously. And with that habit, the team becomes fearlessly competent and the codebase steadily gets better over time. ...

2025 March 7

Don't Let Fear Steal Improvement

One of the most common reasons systems don’t improve is the fear of change. We see ugly code and think, “I should clean it,” then we stop because we’re afraid we’ll break it — and if we break it, it becomes ours. This fear freezes teams, lets messes grow, and erodes competence. Customers, users, and managers expect fearless competence: when we see dirt, we clean it. We can make cleaning a regular routine on-going activity by reducing the risks — fast automated feedback, small safe refactors, pairing, and continuous integration. When we’re able to clean confidently the code will naturally improve. ...

2025 March 6

Keep Getting Better

Our software should improve with time. Painters refine paintings and homeowners improve houses - our software should get better, not worse, as we work on it. Continuous improvement means the architecture, code, and performance progressively mature. If we accept creeping cruft and brittle designs, we betray our users and stakeholders. Instead, let’s make daily habits of pairing, TDD, refactoring, and simple design. These practices let help us to steadily reduce technical debt, increase throughput, and make the system safer to change. ...

2025 March 5

Keep Software Easy to Change

If the software is hard to change, we’ve defeated its purpose. Customers, users, and managers rightly expect that changes are straightforward and proportionate in cost. When change becomes costly, trust and velocity evaporate. The fix is practical, not mystical. Make change cheap by practicing TDD, continuous refactoring, and simple design. Tests give us safety to refactor. Refactoring keeps the codebase healthy. Simple design prevents unnecessary coupling. Together these habits make systems that bend without breaking and let builders deliver value rapidly and reliably. ...

2025 March 4