I started down the road of building a content management system (CMS) as
a direct result of the experiences I had working with another custom CMS
in my day-to-day work. A handful of design decisions made at the
conception of that system years ago greatly impacted the CMS from a
development standpoint; some things worked exceptionally well, some
things needed additional love and care to achieve the results we really
wanted, and some things were outright broken. As usual, hindsight is
20/20; although the system had carried us for years, the code base was
so huge and so intertwined that rewriting it was the only cost-effective
solution. Even simple maintenance tasks and feature development were
increasingly resource-prohibitive. I set off on a skunkworks project to
create the CMS while the remaining developers kept the existing one
chugging along. It's a truly difficult decision to throw away code. A
lot of developers worked on the previous CMS over the years, and a
completely new system brings with it a unique set of challenges. I
wasn't only throwing the old code away; I was throwing away the applied
project experience, the accumulated developer-hours spent working with
it, and so on. It's the shortest path to incurring significant design
debt that I can think of, and incur I most certainly did: the CMS was
developed from the ground up over the course of approximately a year.