I Love TestBench

One day a handful of years ago, hanging out after work with coworkers, our typical anything-goes, no-holds-barred conversations turned to test frameworks. The consensus: We don't like any of our test frameworks choices. »

Story Points Are Obsolete: Use Time Range Estimates Instead

We started doing point estimates 20 years ago in response to conditions of software projects in the late 90s. Arguably those conditions haven’t existed for many years. And like continuing to use crutches longer than needed to recover from an injury, continuing to use point estimates creates new weaknesses and obscures approaches to estimation that could make us even stronger and healthier. »

SAGE: Early Warning System for Design Mistakes

SAGE is a design quality assurance technique that can keep your work from becoming more difficult and complicated than it should have been. Looking at your software through the lens of SAGE quadrants can keep you safe from the most common setbacks and slow downs in software projects. »

Afference: The Silent Killer

Afferent coupling, or afference is the vice that holds your design in place and keeps it from changing. It’s like cement poured around your code and allowed to harden. It calcifies your codebase, keeping you from the productivity you know you should have. »

Science Denial and Software Development

Software development decisions are often not scientific. We make technical decisions, and we often mistake the technical for the scientific, but our decision-making process is usually one that often reflects ideological machinations and adherences rather than the objective assessment that requires us to question the things we’ve chosen to cling to. »

Happy Birthday, Nathan!

Join me in wishing Nathan a happy 1st birthday. The first birthday after escaping death by grace of some inconceivably small margin. »

Software Cancer

Software doesn’t go bad over night. Like cancer, a whole tumor doesn’t just materialize in the body in an instant. An entire system isn’t pervasively compromised in a single spasm. »

Subtle Knowledge and the Limits of Knowledge Transfer

One of the great frustrations with acquiring subtle knowledge is that it can’t be materially transferred. »

Design Is Subtle Knowledge

There’s a spectrum of things you can hold in your head, from crude knowledge to subtle knowledge. Things like tools, frameworks, and patterns are on the crude side of the spectrum. Design principles and design qualities are on the subtle side. »

Subtle Knowledge. Crude Knowledge.

Every mistake that you’ve made in software development was already a well-known mistake before you made it. Every mistake you’ve made in the past that continues impeding your ability to make progress at the pace you’d expected was known at the time you made it. »