designing software and opportunity cost
There’s no perfect design.
There is a tremendous amount of opportunity sacrificed at the altar of perfection, rather than embracing the life-long learning process of continual improvement and feedback.
Alan Watts said it well.
You do not know where your decisions come from — they pop up like hiccups. And when you make a decision people have a great deal of anxiety about making decisions.
“Did I think this over long enough? Did I take enough data into consideration?”
And if you think it through you find you never could take enough data into consideration. The data for a decision, in any given situation, is infinite.
So, what you do is you go through the motions of thinking out what you will do about this. But worriers are people who think of all the variables beyond their control and what might happen.
So instead of trying to design perfectly, I’ve learned to embrace the design+learning feedback process itself:
- Build something that you believe will improve your system
- The implementation must take less than 2 day’s work (preferably less than an hour)
- Release it
- Critically assess whether it helped, hurt, or made no difference
Repeat, optimizing for helpful over time.
This cycle is an act of trust in the process to some degree, but it is also designed to provide regular and low-cost feedback to you, which increases the rate at which you can learn.
The primary reason I use this method as opposed to detailed planning or long discussions about what should be done, is because I’ve tried it the other way for many years and it produces lower quality outcomes. Rather than trying to design our software, it is more valuable, and more effective, to let the software teach us, by having it show us the path of least resistance to progress.
great — another “process” designed to “help” me
I’m not a huge fan of formality and formal process. But I am a fan of simple process. We do need a little process, and a little formality, but preferably no more than necessary.