We don't need a maintenance agreement.
Code doesn’t break. It’s not like a car or plumbing. It does what it does. It might have been buggy from the beginning, and those bugs may take some time to reveal themselves. But the code will not degrade or spring leaks or fall apart. In theory, this means that a maintenance agreement should never be necessary. However, every client has had the experience of having their digital properties suddenly and unexpectedly break. So what gives? Here are a few possible explanations: 1. The environment changed. Recently we built a web app for one of our clients. Everything went well for several months and the clients declared themselves very satisfied. Then one day it just stopped working. Turns out, Google had published a tiny revision to Chrome that disabled something in the front end of our web app. By examining the error logs, we were easily able to see what wasn’t working and tweaked the code to work with the latest version of Chrome. These little updates happen more frequently than most people realize since Chrome automatically updates and every one can potentially mess with code that has been written for the older version of the browser. 2. The spec changed. We once built an ecommerce platform for a client. We asked them how many SKU’s they were planning on having. “Never more than twenty.” Naturally, we built a system that could handle a couple hundred SKU’s. A year later, the client called to tell us that the site “had broken”. We checked the site. There were thousands of SKU’s. No exaggeration. The site still worked but it was slow as hell. 3. Shared hosting. Like most things in life, you get what you pay for in a host. If you go with a cheap host, they are making their money through volume. As they add more and more customers, performance starts to deteriorate. Clients see their site slowing down and assume that it’s the code. It isn’t. 4. No security updates. Hackers are very creative people. Seriously. They’re always figuring out new ways to compromise systems. That’s why most platforms post regular security updates. If you don’t install the updates, you may be hacked. A clever hacker will hide the hack in order to exploit it. An unclever hacker may alter the code in a way that breaks the site. 5. Bad reception. Mobile is awesome. Mobile is the future. But if your mobile app needs to pull information off the internet, it will occasionally not work. The code isn’t broken. You just don’t have a signal. It’s amazing how often people forget about the “phone” part of their smartphone. 6. Human error. I once had a client tell me that the image upload feature of a website we had built was broken. Turns out that rather than trying to upload a photo, he was trying to upload Photoshop. This. Stuff. Happens. All. The. Time. 7. A bug. Code is funny. It can work fine for months and even years, just waiting for a weird confluence of factors that will cause it to suddenly stop working. I’ve seen bugs that only emerged if you clicked on certain inputs in a certain order and then hit the back button. No amount of Q/A could have revealed the bug. It required thousands of actual users doing all the weird things that actual users do to allow that bug to emerge. “We don’t need a maintenance agreement.” I hear this all the time from clients. I warn them that we will charge them an hourly rate for fixes after the grace period. They smirk and nod their heads. And then the browser updates or the spec changes or the server gets overloaded or they get hacked and they always want to blame the developer. Sorry, but the code didn’t break. The code is static. But entropy is going strong all around it. If you’re confident that absolutely nothing will change in the world, then by all means, forego the maintenance agreement. I will personally guarantee that in an absolutely static environment, our code will continue to perform to spec. However, if you think that change is possible, or even likely, perhaps we should discuss a low cost maintenance plan.