One time a client asked for a new feature. In order to create the feature that was requested, a lot of code had to be backtracked and redone, because it wasn’t set up to be done properly in the first place. This was a site that we had taken over, and there was a lot of code that needed to be fixed.
What a Foundation Actually Means
The foundation is the structure, how it’s built. Is it built on a real database? I will check to see what CMS it uses and find out what issues it might have. Is it loading slowly? How’s the layout? Does it have great navigation? Can people find their way around without getting lost? Is it obvious? Is the SEO set up properly and up to date?
If it needs anything added, does it need to be bolted on? Do you need to use tools like Zapier to make workflows work? Do you have to rebuild the website every time you want a new feature?
Can you make changes in one place and have them carry through everywhere? If I change the color of something, the color for that goes everywhere. If I change a description of something, that description shows up on every page that it lives.
The Feature Trap
People keep adding features instead of fixing what’s underneath because they don’t know any better, or they’ve been told that that’s the fastest, easiest way to do it. Maybe the lowest cost at that time, but it ends up costing them in the end. And yes, I’ve seen what it can cost them. It costs a lot more money to rebuild the house than it does to build one.
When Foundation Work Is the Right Investment
Telling a client it’s time to fix the foundation first really depends upon what the foundation is, how it’s built and what the problems are. Can they keep building features while that happens? I would say not, because you need to get the foundation fixed first, then add your features. Now, if the foundation weren’t a problem, features could be added at any time.
Where to Start
If they come to me with a list of features, I would have to know what they’re building on top of and how that’s built to start with. I would need to assess what it would take to add on to their site, and what their site actually has. If their site were in Drupal, I would know the answer to that question.
Frequently Asked Questions
How do I know if my website needs its foundation fixed before adding features?
It depends upon what foundation your website is built on to start with. Does it have a true database back end? Is it accessible? Does it have the ability to add on the functionality that you’re looking to add, without bolting things on?
What is platform modernization?
Platform modernization just means bringing everything up to date. That’s making sure any pieces and parts, modules, plugins, anything like that, are up to date and all security patches have been applied, and making sure that it’s working well and accessible. The point is a site that’s ready for new things and has the ability to add on to it.
How do I make the case for fixing the foundation before adding features?
You can explain that adding features without fixing the foundation is going to cost probably more upfront and possibly more in the long run. It’s also not going to be as smooth a transition or work as well as it should. Each new feature will take longer than the last one, and the risk of something breaking goes up every time something gets bolted on.
What is the difference between technical debt and a platform that needs modernization?
Technical debt can come in the form of poor code quality, or from a site that wasn’t put together well in the first place. It usually comes from a need to get things done quickly, or to have things done right now, so you take shortcuts. Shortcuts lead to either bad code or doing things in a way that shouldn’t be done, like using outside solutions for what should be an inside fix. Technical debt accrues interest, because as more and more things get added on, or more patches get missed, or more years go by, the more technical debt there is. A platform that needs modernization most likely has a lot of technical debt. They are intertwined. The difference is that even a well-built site needs modernization as its software ages.

