I gained a lot of value from a post by Kellan Elliott-McCrea — who was the CTO of Etsy, and has a long history in complex web projects — regarding technical debt. Here’s the money quote at the end (though the article itself has many good insights):
The first step to addressing any problem is understanding it. When we conflate these 5 different phenomena we confuse ourselves about possible solutions. When we take it a step further and turn these conflations into a judgement on the intellect, professionalism, and hygiene of whomever came before us we inure ourselves to the lessons those people learned. Quickly we find ourselves in a situation where we’re undertaking major engineering projects without having correctly diagnosed what caused the issues we’re trying to solve (making recapitulating those issues likely) and having discarded the iteratively won knowledge that had allowed our organization to survive to date.
The two most common solutions both often make the problem worse:
- Declaring bankruptcy and rewriting from the ground up.
- Papering over the issue with a layer of indirection/proxy/wrapper
Rather if you are addressing a problem you understand and have correctly diagnosed you can put together a reasonable strategy for iterating and measuring your way to improvement.
It’s an excellent read for anyone that works in any large projects, or has an interest into reasoning behind decisions in WordPress core, which this article applies very well to.