I invite you to upgrade to a paid subscription. Paid subscribers have told me they have appreciated my thoughts & ideas in the past & would like to see more of them in the future. In addition, paid subscribers form their own community of folks investing in improving software design—theirs, their colleagues, & their profession. Genies give you code that’s a degraded facsimile of the mediocre code it trained on. How can we get the genie to give us valuable code? “Valuable” lives on 2 axes:
As an engineer I am constantly juggling these two dimensions so I wanted a way to visualize them. On the features axis software either works or it doesn’t (more or less) & the region of working is rather small. (Note that this puts features on the opposite axis from where it appears on Features Versus Futures. I tried it both ways & I like the layout best with the axes this way.) The other axis is flexibility—can we make changes that:
I’ve called this “optionality” or “futures” recently. Still looking for the right words. Flexibility/optionality/futures has a wider operating range than whether the software works or not. You can skimp of flexibility for a while & not really feel it. OrientationWhere was development in ancient times, you know, six months ago? Well, you had some teams who had high standards for the behavior of the system—tests, frequent integration, observability, zero defect tolerance, retrospectives. They also had high standards on flexibility—readable code, mutual comprehension (pairing, mobbing, thorough reviews). Treating the two axes as orthogonal is simplistic. If you have fewer interruptions from defects you have (or can choose to have) more time to invest in flexibility. Also, if you have flexibility you are more likely to create features that work. MuddlingMost teams weren’t in the upper right. Instead, they muddled along with mostly-working software that was quite difficult to change. (We can talk later about why folks would choose to stay in this region when they could be further up & to the right.) GenieHere’s what I’ve observed—genies naturally live down & to the left of muddling. The “plausible deniability” task orientation of the genie leaves it claiming success even though the code doesn’t work at all. And complexity piles on complexity until even the genie can’t pretend to make progress any more. |