Bleach In The Washing Machine - Bleach In The Website
The Quick Fix Is Swell Until It Obscures The Bigger Problem
We understand the temptation very well here at Solspace. You are pressed for time on a deadline. You need to just make the website problem go away. You promise to come back and invest more time and money later to fix things properly. You never do. You can apply quick fixes and obscure the bigger problem for a while, but you will eventually have to face reality.
Bleach In A Washing Machine
We have an awesome front-loading washing machine. It's Ferrari red and gorgeous. We have kids, dogs, and a horse, so the poor machine is constantly running; filling, draining, spinning. It has a nifty little lint filter as part of the drain assembly. Instead of clogging your pipes, the filter catches the muck and makes it easy for you to remove crud.
It's a chore to clean this filter. You have to carefully drain the excess water from the machine before you can take out the filter and clean it. This requires either a ton of towels or your handy wet/dry vac. Either way, it's some work.
When the filter is clogged it gets stinky. You can smell it with every load of laundry. It stinks so bad that you are very motivated to clean out the filter and set things right.
We learned a few months ago that you can run a bleach load through the washing machine. The bleach kills the stinky gunk in the filter. The stink goes away for a while. The clog is still there, but you forget about it.
Last night the washing machine stopped working. It just froze and issued a weird error code whenever it would try to complete a drain cycle. I thought, "Oh No! I have to call the repairman. And It's going to cost as much to fix as the machine costs to buy." Thankfully I remembered the filter. I put the kids, dogs, and horse to bed, got all the gear from the tool shed, drained the tub, and removed the filter. It was full to the tippy top with unmentionables. These went in the trash. I had the machine working again shortly thereafter.
Bleach obscured the problem temporarily, but it only delayed the inevitable. The full maintenance had to take place at some point, stink or no stink.
Your website is complex. The more we all move into the digital revolution that we're embedded in, the more complex web technology gets. Problems with your website go right along with this increase in complexity.
My washing machine is simple by comparison. But it demonstrates an important point. A moderately skilled web developer can patch things and apply quick fixes to website issues or architectural mistakes, but these just obscure underlying problems. The problem expands when you start building things on top of this patched software. You can run a bleach load through your machine whenever the smell signals a deeper problem. You can obscure that deeper problem for a while. But at some point, you will see a full failure. It will happen at the worst time.
I appreciate the temptation. You just need something fixed so that you can focus on a bigger goal or deadline or launch. You're delaying the inevitable and making your problem worse. Someone will eventually pay to fix all of this.
Delaying Problems = Amplifying Problems
Back when the washing machine drain filter was stinky, I fixed the problem quickly. I don't want to stink up my house. I fixed the problem quickly and kept my family months away from the inevitable failure of the washing machine due to a clogged drain. Notice what happened when I kicked the can down the road. The failure was much bigger. Stinky turned into totally non-functional.
We've seen this phenomenon on the web. You can delay fixing something. When you do, that fix is not just put off for a few weeks. Instead, the delayed fix accumulates more problems on top of it. I was lucky that my wet/dry vac was in good order with a fresh filter. It was ready to go as soon as I wanted to fix the washing machine. But what if my wet/dry vac broke and I postponed fixing it? And what if, since my washing machine was broken, I had no clean towels to help with the job of cleaning the filter? My postponing magnified my problems. Now I really have to call an expensive repairman, wait days for that person to show up, and in the meantime wash clothes at the neighbor's house?
Postponing the fixes on your website seems to attract more problems which compound on top of the first. At some point, someone in charge asks why this money-making website has been so sorely neglected. You're losing money now. You didn't have to.
Engineering To Allow Problems To Be Stinky And Obvious
The engineers who designed my washing machine surely did not plan for it to stink when the filter got clogged. But they also did not engineer that problem out of the system. That kind of bug is good for the health of the system. When you get sick you feel tired and sore and deflated. These are good signals that something important about your body needs attention.
Your website is like this, or it can be. As web developers, we know how to obscure error conditions and problems in the application flow. We can write code that absorbs user errors, API failures and the like. But when we take this too far we regret it. Nice, obvious error states can be very helpful in web development.
A lot of web developers push error conditions into the system logs. This is good. These logs help us track down and sleuth out complex problems. But web developers also sometimes rely fully on these logs and do not allow errors to bubble up to the users in helpful ways. Bleach is great. Just don't overuse it.
We've seen e-commerce systems where shipping and fulfillment problems could have been made obvious to the user placing an order, but the error states were obscured into the system logs instead. This was no doubt a quick fix to help make the QA process go quickly in order to meet a deadline. These developers planted some seeds that would eventually pop up into the sunlight.
Committing To Long-Term Excellence
A better approach is to imagine your future self. Be charitable toward your future self. At Solspace, we build and launch sites, but we stick around to maintain them for years to come. We build our websites so that we avoid obscuring problems during QA. We try to do the job right the first time since we know from experience that it's much cheaper and more efficient this way.
Pursuing excellence and craftsmanship is its own reward. It's pleasurable to be excellent at something. It's wholesome and sustainable. But that reward is not necessarily felt by our clients. When we launch excellent web software, our clients are proud of the excellence. But when are they really happy? It's the months and years later when the excellent work is easy to maintain and build upon.
Maturing Into Experienced Stewardship
When we first bought our washing machine and it started to stink, we had no idea what was going on. It took a while to figure out that the filter needed to be cleaned regularly. Then we learned the bleach trick and figured out how to postpone the icky job. This postponing turned into a much bigger problem. The machine failed.
Now we're seasoned washing machine veterans. We can now see into the future and behave charitably toward our future selves. We have matured through experience and we know how to make life easy for the long term. We've become good stewards.
We're the same way about our web development. We know how to engineer systems so that they stink a little bit before they completely fail. We know how to build with excellence and we appreciate the value of it.
There is such a thing as website ownership maturity among our clients as well. We have some clients who have a complex website that makes a lot of money, but they didn't grow gradually into it. It happened quickly. They didn't have time to mature into properly owning such a website. They can still sometimes fall prey to quick fixes and bandaid solutions. We have other clients who matured into website ownership the hard way. They built their web businesses over many years. They full well how important it is to avoid obscuring important problems, though they may appear small.
We work hard to help our clients, wherever they may fall on this maturity spectrum. It is often hard to win a contract in a competitive bid with another agency that is promising quick, fast, cheap. Money isn't free. You have to earn it. And when your website is responsible for making money, being a seasoned and mature steward of it turns into more money in the long term. We help our clients reach this happy state by helping them understand the importance of 'keeping the filters clean.'