I’ll be honest: I had never heard about Second System Syndrome before Thursday. It was the MCR Tech Connect meet up and the first talk was by Filip Banasiak. His talk was on this thing called the Second Systen Syndrome and I really wasn’t sure what he was going to be telling us about!
In fact, it turned out to be quite interesting. And while it was front-end/React focused (an area I’ve pretty much moved away from since coding bootcamp) I can see how it can be related to areas I work in.
So the first question: What is Second System Syndrome?
Second System Syndrome is what can happen when the system is put into place after the success of the first place. It is a risk because teams can tend to abandon the first system – which can be allowed to fall down of its own accord, while the second system can become bloated as a team can try and keep building on it.
Where did it come from?
The term was apparently first introduced in 1974. ‘The Mythical Man Month‘ by Frank Brooks. His definition of Second System Syndrome is:
It refers to a condition that occurs after a first system has been implemented. When it seems to be working well, designers turn their attention to a more elaborate second system, which is often bloated and grandiose and fails due to its over-ambitious design. In the meantime, the first system may also fail because it was abandoned and not continually refined.Fred Brooks, The Mythical Man Month
Why does this happen?
We all love working on shiny new projects. Legacy projects can become boring, cumbersome and generally too difficult to work with as code has been added in a way of just ‘getting things done’ with no logic and thought about how easy it will be to use in the future.
So instead what will happen is that when the idea of a second system is introduced – a team will jump on it. And if there is a shiny new toy to play with, how many engineers will volunteer to stay with the legacy product?
Especially if it is something that will eventually be thrown out?
If an engineer is forced to stay on the old project then there’s a risk they will resent it and eventually move on to a new team or company where they can also work on a new project.