My Authors
Read all threads
In systems design, one must constantly grapple with the tradeoff between the burden of path-dependent constraints and the temptation to throw everything out and start anew.

What works becomes invisible and is forgotten, leading one to underestimate the risks of throwing it away.
The only successful rewrites I've seen were those that prioritized the *continuity of service quality*.

These projects have:
- Accounted for all behaviors of a present system
- Specified their replacement / improvement at high resolution
- Deployed piecemeal, not wholesale
It's analogous to, after realizing your ship has a critical flaw, building a new ship alongside the current vessel, then bridging all necessary processes to this new ship as both sail together, only then leaving the first behind.

Contrast this with...
Someone arguing that you should burn your ship at the nearest deserted island and rebuild another because they see no value in it, and perhaps only focus upon the obvious negatives of the old ship.

Now you must build a new ship from scratch, *and* you're stranded if you can't.
Beyond this, you'll likely insult those who initially constructed the old ship, and instead of receiving their help as you build the new ship, and their blessing as you say goodbye to the old, you'll end up the target of attempts to undermine or sandbag the new project.
Furthermore, it's almost always the case that certain parts of the old ship, no matter how annoying, were the way they were because of fundamental issues beyond the scope of any designer's capacity to fix. Often the universe is like this when dealing with many constraints.
We may, again, encapsulate these critical systems design concepts within the idea of *continuity*.

It is not random that the entire world of software creation has converged upon the ideas of "continuous integration and deployment".

The necessity holds for systems, generally.
At the deepest level, discontinuity = death.

Some level of discontinuity is necessary, of course, but discontinuity of sufficient magnitude will dis-integrate any system.

An air bubble in your vein. Vapor lock in an engine. Violent coups.

All unsustainable discontinuities...
This is why, in times of unrest, when change for the sake of change is in the air, we must be *even more careful* than is typical to maintain the deep continuities that allow for healthy discontinuities, and therefore the timely death of more superficially outdated systems.
But, and this is absolutely essential to understand: no such stable transitions can emerge from crowds animated by rage, despite how deeply one might empathize with the source of said rage.

A system conceived in rage will achieve little beyond dis-integration and violence.
Only after we can–in one breath–acknowledge the accomplishments and the sins of the past will people feel free to let go of that which is obviously dead, that which is not conducive to future Life.

On that day, we'll have demonstrated sufficient wisdom to design anew, together.
Missing some Tweet in this thread? You can try to force a refresh.

Keep Current with Matthew Pirkowski

Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!