I am in the middle of a rapid software development project. There is a first demo in a few weeks, and I need to add a lot more capability between now and then.
Every day I add new features, or replace old ones. Which means that every day there are opportunities for massive failure.
I keep backups at each step, so failure is never catastrophic. Still, I don’t really want to lose the bulk of a day’s work by introducing some bug that will force me to go back to a previous version.
So I’m adopting a kind of variation of the physician’s motto “First do no harm.” Whenever I add a new feature that will replace an older one, I keep the older feature in for a while.
The idea is that everything should continue to operate exactly the way it did before I added the new code. Except now there are new things you can also do if you know how.
I keep it that way until I am confident that I haven’t broken anything. Only then do I get rid of the old version of the feature.
I realize that the stakes here are a lot lower than what doctors deal with every day. Still, it’s good to have a way to work that doesn’t keep breaking anything.