Second System Syndrome

Second System Syndrome is the curse by which a simple system is doomed to be replaced by an excessively abstract, over-engeered, or bloated successor.

You hack together a small simple program to solve a problem.

Congratulations! It's wildly successful. Now you have a community, and the limits of your hasty work are starting to show. Time for a rewrite!

You've been keeping a list of all the features you would like, limitations you would like to surpass, and you want to avoid getting boxed into a corner again, so you design a super abstract architecture.

Fast forward a few weeks, and you're tangled up in abstractions. The features you have built out don't add up to a product-market fit. You're still weeks away from a finished product. Hmm.

The phrase was first coined in the book The Mythical Man-Month.

How do you avoid it? Start with a toy, and modularize later.

See also: second system effect on Wikipedia, Gall's Law, design patterns.