Software takes time and it can be quite unpredictable. I built the first version of noebs, a PoC that basically does nothing but acting as a reverse proxy to ebs in less than a week. It took some years later to add some functionalities that we initially created issues for them in ~ 2019. That doesn’t mean we necessarily spent the 3 years just trying to fix that– simply we shifted our priorities to other issues, or topics.
software is an iterative process
Programming is inherently complex, you just cannot make a release and call it a day. You will always have to make new features, make new fixes and so. Business requirements also changes and quite a lot too. To reflect that it is a must to make amends. Business and I sometimes even project management people don’t necessarily understands that, it is the responsibility of the head of software to be assertive when communicating such delays or change of plans to the management.
Technical debt is imperative to every decision developers will make. It is much better to clearly document it, that will make it easier for future maintainers to understand the tradeoffs that were made and build on that. Business and management don’t necessarily understand such tradeoffs.