When you first start a new application, adding new features is quick and easy.
There's no existing code, and everything is written from scratch.
As the project progresses, you need to account for and, in some cases, work around the existing code - ensuring the existing functionality continues to work.
Even if a sole Developer is working on the project, inconsistencies start to be introduced.
One feature was implemented in one way and the next in a different way.
One follows a particular design pattern, and the other does not.
There is code within the application that isn't used and is no longer needed but hasn't been removed - creating confusion and uncertainty.
It can't be removed, just in case it does something and removing it breaks something elsewhere.
A task that would have taken hours to complete when the application started now takes days, weeks or longer.
Having automated tests, using tools like static analysis, and minimising technical debt helps to minimise this, as does having written technical design documents, ADRs or flow charts to ensure consistency and to document the "why" for future Developers.
P.S. Is your New Year's resolution to deliver better software faster? I have availability for team coaching starting in January 2024 and can help you avoid issues like this in your applications.
- Oliver
Was this interesting?
About me
I'm an Acquia-certified Drupal Triple Expert with 17 years of experience, an open-source software maintainer and Drupal core contributor, public speaker, live streamer, and host of the Beyond Blocks podcast.