Essays

Longer form writing covering various software engineering topics.

Distribute Design Authority with Architecture Decision Records
Introducing Architecture Decision Records (ADRs) to a team takes time and dedicated practice. In our experience, ADRs help teams improve their design practices and eventually learn how to distribute design authority.
Harvesting Mob Programming Patterns: Observing How we Work
Teams who use mob programming can improve the effectiveness of their mobs by reflecting on how the mob naturally operates and harvesting patterns that can be intentionally applied in the future.
Headwinds to Redesign
Teams that plan to redesign later nearly always face business, technical, and social forces--headwinds that prevent them from initiating a redesign effort.
Making Metaphors that Matter
Extreme Programming's system metaphor can be an effective design tool, if you follow a few simple guidelines for creating good metaphors.
Nudging Toward Change in your Organization with Process Affordances
Software engineers can use what they know about software design to apply the theory or affordances to improve team processes.
Put It to the Test: Using Lightweight Experiments to Improve Team Processes
Running scientific experiments is an inexpensive and effective way to resolve team disagreements and drive process improvements. Also, pair programming is an absolute super power (and we learned this by running an experiment).
The Psychology of Architecture Decision Records
Architecture Decision Records (ADRs) are more than just documentation; they are also a powerful tool for transforming a team's culture.