There is no later for your customers
When building something is expensive, like a physical object, prototyping early and often becomes the obvious way to improve the product cheaply. If you’re designing a new chair, for example, it makes sense to prototype, test, and prototype again before sending the final design off to the manufacturer. The workflow of physical products is naturally separated into design and manufacturing. “Sending it off to manufacturing” means that the design is done and can’t be changed. Same with “sending it off to the printer”.
Creating software is entirely different. We can change the product at any time, redeploy, and our users will be using the new software in a very short amount of time. I think this ease-of-change has had many effects…one very important one being that we risk losing the design discipline of physical and printed goods. When sending something off to the printer is a final action it forces the designer to test, verify, and test again before taking the leap. The discipline and attention to detail is necessarily greater because you know you can’t change anything.
The ability to change anything at any time is an amazing luxury. We are spoiled rotten as software creators that we can change the software our customers use within minutes if necessary. But I fear that this ability has eroded an acute attention to detail and a discipline of refinement that exists in other production environments. If we can change things at any time then let’s just launch this as-is and improve it later. It is remarkable how easy it is to justify any release with these simple words: “we’ll improve it later”.
There is no later for your customers. The only thing that matters is what they’re using right now. They don’t give a shit about your roadmap, your brilliant feature pipeline, or your vision of a better future. They’re trying to get work done right now and they only know what you’ve already delivered. So build a discipline around your launches, knowing that your temporary, let’s get this out quickly and iterate later release is the current reality for your customers. Build up your attention to detail and force yourself to treat every launch like it is your final launch. Imagine that you’ll never be able to deploy something after this…have you done your best work?