Stepping Stones

(from a progressive political position) My husband and I shouted at each other over Obamacare this morning. “It’s progress!” I said. “It is not!” he felt. Later he calmed down and admitted that Obamacare has helped some people some. But what we need is single payer.

Even if everyone in the government agreed that single payer healthcare is better, the way to get there is not BAM! Change the rules. Healthcare companies, out of business. Doctor offices, change operations. We don’t get from here to there in one decree.

We need stepping stones. Where we are today matters. How the system works today determines where we can go in the near future. Obamacare is a small step. Change the system, let it adjust. Change a bit more, let people move. Provide transitional support at each step. Sometimes it takes generations for opinions and skillsets to shift.

Even in tech, when we talk about “disruption,” we don’t mean BAM! change everyone right now. We mean: add a new option to the system, which alters people’s preferences, and then the system changes itself.

In software systems, where we are today matters. Once software is in production, change is hard. It’s incremental, or it’s dangerous. Each step needs transitional support. Customers need time to adjust, APIs need backwards compatibility.

In developer tooling, where an organization is today matters. The latest new open-source deployment system looks cool, and could be less work than maintaining the one we have now, but getting from here to there is far more work than either. It means making the new tool support everything we currently do. It means keeping today’s UI working, running both systems for a while, as we train teams in the new way. It means migrating production services gradually.

Aysylyu Greenberg gave a great talk about implementing a new distributed build architecture at. The majority of the work went into transition. 

Standing up the new system is easier than moving from the old to the new.

There is no “just rewrite it.”

Improving systems (software and people) can be orders of magnitude harder than building them from scratch. Yet when we’re not starting from zero, our work has guaranteed impact: everyone now participating in the system will benefit. I like this kind of work, but it takes a lot of patience. At least in software, we can work faster than government. Releases are faster than generations.