Too Much Snow Has Accumulated On The Roof Of Your Website
The Roof #
There's an old Persian saying that goes like this: "The larger a person's roof, the more snow it collects."
That old saying can be read as a caution against an indiscriminate acquisition of property. Never being satisfied with the size and elegance of one's home creates conditions of suffering. The more house you have the more things can go wrong.
I like to consider this saying at the detail level. Sometimes you need a big house. Maybe you have a lot of kids. Sometimes you can't help but have a large roof. There are things you can do, mental habits you can develop, to help keep the accumulation of snow on that roof to a manageable level.
The Roof Of A Website #
I'm a web developer by day. I help companies develop their property. Their property exists in the ether, on the internet, as websites and web apps. The roofs I build are the roofs of a website. For many of my clients, a small roof is not an option.
Many of our clients have websites that are responsible for hundreds of thousands of dollars of revenue per month. Some of these websites are straight e-commerce sites. Some are lead-generating websites for organizations providing complex professional services or complex, big-ticket industrial products. In all cases, the websites support a complex sales cycle. The needs of the customer, before they can sign a contract or issue a PO, are complex and in need of a high degree of web-based sales support. The roofs on these websites are big, necessarily so. There's a lot of kids living in these big houses.
The Conditions Of Collapse #
The Persian proverb cautions against large roofs, knowing that they accumulate more snow and are more subject to collapse. I'm drawing a comparison between website collapses and roof collapses. So what's a website collapse?
This line of thinking works both for web development projects where something new is being built as well as existing websites that collect little bits and pieces of bugs and technical debt over time. In both cases, something accumulates slowly, gradually, almost imperceptibly. That something can quietly and peacefully collect on a website or website project and then suddenly destroy the website or project.
Project Collapse #
A website project can collapse when you enter the downward spiral of 'just a little more time' or 'just a little more money.' Just a little more snow is collecting on your roof. How do you know when the point of collapse will be reached? How do you know when these steady accumulations of budget overages and timeline slips are almost over? Can the project be completed before things have gone too far?
A web development project collapses when timeline slips cause you to miss other fixed and important deadlines. A web development project collapses when you run out of money or when those approving budgets decide you are out of money.
Technical Debt Collapse #
Once launched, websites are supposed to run, nonstop, all the time, quietly doing the job of making money for the organization that owns them. But websites are no longer individual, discrete, static entities unconnected from the rest of the web. These days websites integrate with multiple other systems, API's and other websites to perform their functions. These other systems are always changing, improving, and advancing. Our website has to keep up.
Additionally, modern websites are dependent on a vast array of other underlying technologies from servers, server software, caching systems, code libraries, plugins, and the like. Our website must be constantly updated to keep up with updates in the other related and underlying technologies.
Finally, a much larger and inexorable force is at work pressuring websites to be constantly augmented, modified, updated, and expanded. Much of the world's business activities continue to drift further and further into the digital realm. You've heard of Digital Transformation. This is an ongoing and seemingly irresistible force, much like the movement of a glacier, though the speed is much more like a rushing river.
All of these things are very much like snow accumulating on a roof. As the website owner, you can put things off. You can kick the can down the road. You can choose not to knock accumulated snow off the roof. But you do so at your peril. The accumulated effects of what we call technical debt will outrun you, even though they seem to move more slowly than you can perceive.
Technical debt collapse is when a website's ongoing care and feeding needs are neglected to a point where the other supporting technologies outpace it to the point that the website fails to work on newer technologies. Other software and server providers will not support old technology forever. They too face pressures to move forward and improve. At some point, procrastination about keeping your website up to date will result in it going completely offline or not being capable of functioning on currently available technologies. This is a technical debt collapse.
A related type of technical debt collapse occurs when an organization gradually needs more from a website than it is capable of offering. Imagine your organization decides to implement a new single sign-on system, one that is more up-to-date with modern web and identity security. If your website has fallen too far behind technically, you will not be able to implement this new and improved technology. The collapse occurs when the website fails against too many new requirements and must be thrown out.
How To Prevent Collapse #
The types of collapse indicated above are preventable. Of course, some web projects are destined to collapse and fail for reasons not discussed here. And some websites get to a point where it's just cheaper to throw them out and start over. These examples aside, most websites and web projects can be successful especially when the snow on the roof problem is well managed. Here are some useful tools to prevent unnecessary collapses.
The sixth sense of collapse
Experience is the foremost tool that can help prevent the kinds of website and web project collapse indicated above. The reason why this problem is so difficult is that the problem is amorphous, silent, and stealthy in nature. You need an experienced expert who over years has developed a sixth sense that can 'feel' when too much snow has accumulated on the roof. They can sort of hear it. They can almost smell it. They can't describe how they know that things are going sideways with a project or website. They just get an itchy feeling, a fidgety uncomfortable feeling whose origin they understand from past experience. This sixth sense of collapse is the best defense.
The snowflake bucket
Another useful tool that is not as hard to define as the sixth sense above is the Snowflake Bucket. You can name this tool whatever you like, but the gist of the Snowflake Bucket is that in your project budget or ongoing web maintenance budget you have a dedicated category for those tiny little things that accumulate and add up over time.
In a web development project, you'll have budget areas for strategy, planning, and design. You'll have budget areas for technical discovery and component builds. You'll have budget areas for QA and code refactoring. But you cannot have budget areas for each little tiny unexpected change or modification that creeps in on a project. They're tiny little snowflakes. They are nearly impossible to individually predict. You can barely see them. But you can predict their accumulation. With experience, you know that every project accumulates these tiny little scope changes or shifts in the budget estimate. Create a budget area for these. As your team proceeds with development, have them log these tiny little bits. The accumulated effect over a few days or weeks will be visible. If you're not far enough into the project and you have already filled too much of your snowflake bucket, heed the inherent warning and regroup. This is your chance to stop what you're doing and sweep some snow off the roof.
With an existing website, the same principle of the Snowflake Bucket can apply. In this case, you don't use a budget area for tracking. You instead use a technical debt list. Add items to this list when you find little or big areas of the website where friction is accruing. If you had to work around some part of the system to deal with a problem that pops up one day, log this. Watch this list. Once it gets to a predetermined length, you and management need to get real about some sort of an overhaul.
Use time as an indicator
Above we used money as a reality check. You created a bucket to track money spent on those tiny, incremental scope creeps. The individual items are invisible and too small to complain about, but their accumulation has meaning.
Time can be a useful indicator for the problem of accumulating too much snow on the website roof. On a project, you have a big deadline. The big deadline is supported by smaller deadlines for the completion of component parts of the project. Missing these deadlines serves as an excellent indicator that perhaps some snow is accumulating and leading to project collapse. Be rigorous about allowing deadline drift. Missed deadlines in themselves are not that big of a deal, but what they point to are big accumulating problems.
With ongoing websites, time is also a useful tool. Does it take more time to make a simple update on the website than it used to? How many instances can you name where 'a little more time' was needed. Log these in a technical debt list. The expense of tiny extra increments of time has meaning when the accumulation can be observed.
Maintain goodwill through high touch communication
If all else fails in preventing project collapse, what can still succeed is goodwill. Websites are maintained by developers on behalf of their clients. Web projects are conducted by developers on behalf of their clients. Both parties want a good result. Their goals come from the same place. If nothing else can prevent a project or website collapse, a strong vendor/client relationship bolstered by goodwill can be the salve.
Websites and web projects will fail. When the failure takes place inside of a larger, honest, mutually respectful relationship the failure can be overcome and learned from. Developers don't allow snow to collect on the roof maliciously. They don't allow it to happen out of incompetence. It happens because it is quiet and insidious. Humans are scarcely wired to sense and avoid this phenomenon. A mutually respectful and trusting relationship can bridge the divide when a collapse occurs.
Awareness #
Perhaps the most important and useful defense against the phenomenon I outline here is the simple awareness that it exists. We sometimes encounter clients who have not experienced a website or project collapse. When we do we are careful to talk with them about this phenomenon in advance. We insist on having the Snowflake Bucket in the budget. We insist on being real about the sub-deadlines in a project. But we also get a feel for whether we are working with someone with whom we can develop a respectful relationship based on goodwill.
Awareness that there is such a thing as snow quietly accumulating on the roof is the first step in preventing the roof's collapse.