Software architecture as a chess game, with yourself

chess-810x538-1

My current favourite metaphor for software is that it’s like a game of chess. You start out fresh, and doing a strategy. Making some moves, building up a strong position. But then, something on the other side, out of your control changes things. Suddenly you need to change strategy.

But here’s the thing: even if you realise immediately that you need to change, and do so, immediately,  you cannot move your pieces to where they now need to be. You must make small moves, and even though you know where you need to be, it takes you much time to make those changes.

But sadly, while you are doing this, you will realise, some pieces are irrevocably committed; you can’t bring them into the new strategy even if you tried. So even though you moved instantly between 2 strategies you will inevitably end up with a half-baked in-between that you just have to make the best of.

But really, there will be many changes in the life of a piece of software, and probably your understanding will evolve over time; while you are in the midst of moving from plan A to plan B the other side start executing their plan C (v1.5). Take heart. They don’t know what they are doing either. There will always be things that you are pushing ahead with, and parts of it left behind. You will be just moving on from plan C to plan D, and there is still a bit that is still doing plan A and you just. Can’t. Get. Rid. Of. It.

So you think that you’ll start a fresh game, and things will be all new? Probably not! There’s not time to learn all the possible strategies, you have to go with what you know! So the next game you start, you might start with a clean board, but You start with preconceptions and the half-remembered plans of last time… really you are playing a continuation of that same game!

This is why software isn’t really like architecture (even idealised architecture where you draw a plan and built it and it looks like the architectural sketches); there’s nothing planned about it.

It’s OK though. That’s what makes chess, and software fun, every game is slightly different, even when you play it the same.

But when we look at someone else’s system and say it looks a mess… be careful! All tech that is LUCKY enough to survive converges on one architecture, one style, one plan: compromise and complexity.

As the skeleton said to the young man: I was like you, you will be like me.

Leave a comment