Buildings tend not to fall down (people notice when they do)

When significant renovation is required, the first thing that goes up is scaffolding. Sometimes to allow easy access, but often to provide temporary structural support.  Why?

Because we don't want buildings to fall down.  People notice when they do.

But what do we do in IT when we want to embark on structural renovation?  What do we do when we need to re-write that creaking extract, that flaky interface, that complex pricing model .....  ?

Standard practice falls firmly into two camps..

1) Do nothing, change nothing.  It might be ok if we just leave it.  (or alternatively, I might not be around when it comes crashing down)

2)  Let's go for it., let's re-write it and hope for the best.  It might be ok.  (or alternatively, I might not be around when it comes crashing down)

As a result... software tends to fall down a lot.  People notice when that happens.

Building Without Scaffolding Considered Harmful

I gather a lintel is something that holds up part of a wall above a window or a door.  I am reliably informed that before you take one out and put a new one in, you need to provide some temporary support; some scaffolding.

If you don't, things tend to fall down.  People notice when that happens.

But in software, we do it all time.  We set about changing something and we break it.  We remove software "lintels" and walls come down.

People notice when than happens.  

But we do it anyway.

Automated Regression Tests as Scaffolding

We need to recognise that regression tests (particularly automated regression tests) are our scaffolding.  Before I start major restructuring I want the safety that the tests provide.  When I'm done, I want to stand back and know it won't all come crashing down.  My regressions tests are my scaffolding and I wouldn't attempt major change without it.

Leave the Scaffolding Up

Unlike real scaffolding, I don't take it down when I'm done with the job. I leave the scaffolding (automated regression tests) in place.  They continue to provide the support day in, day out.

So before you start the next major software re-write, take a lesson from those other engineers/architects.... put some scaffolding up first.