There is no question that technology is at the heart of what enables retail organizations to thrive in today’s markets. It empowers essentially every discipline that contributes to the success of the business, whether it’s payment processing in physical stores or online, image hosting services, marketing software for design and distribution, inventory management systems – you name it. In the year 2020, and forever moving forward, retail companies are also tech. companies. Considering that fact, and the speed at which modern technology is ever evolving, organizations must also have the agility and adaptability to evolve along with it in order to succeed. One critical part of that evolution is how best to spend time and resources maintaining these increasingly complex systems on which our vital business processes rely.
Conventional wisdom around maintenance has generally been that time spent towards maintaining existing systems is time taken away from delivering revenue boosting objectives. While typically recognized as a necessary endeavor, its priority is regularly sidelined in lieu of developing a new feature-set, integrating with a promising new vendor, expanding an existing delivery pipeline, etc. This mindset is often a biproduct of that work being viewed as non-essential. When it comes time for designating priorities for the next quarter or work cycle, it’s understandably hard to justify a significant chunk of time spent on a solution that has already been delivered and is currently providing value. Therefore, we can no longer afford to view these tasks as separate, but instead as integrated into our regular work cadence and critical to our overall metrics of success. Once that mindset is fully adopted, the countless benefits become clear and will start to compound.
An extreme example of what can happen when software isn’t regularly monitored and kept up to date is new production coming to an unexpected halt due to a key component or system reaching a tipping point. A drastic instance would be a legacy system crashing due to finally being overloaded, whereas something more subtle is the need to take on rework part way through development due to a prior solution that turns out to be unwieldy or impossible to manage/extend. The common trait amongst these is that they’re unexpected and inevitably push back delivery dates, which can have cascading effects financially and operationally. They also have another very similar trait, as do the examples that follow – they’re completely avoidable.
Another case that can be much more elusive, and arguably more detrimental depending on the circumstance, is the unaddressed degradation of an environment over time. This is a difficult issue to quantify, and easy to overlook, because the consequences are rarely noticeable at a glance and the negative effects are felt over the course of months and years as opposed to all at once. In the software realm, this often takes the form of mounting tech debt (a term for technical solutions that are built for quick delivery and narrow solutioning vs. quality and scalability) where the time is never taken to go back and pay down that debt, whilst additional software is built on top of already flimsy foundations.
These instances don’t have to be directly related to software either. They can consist of a bloated catalog with hundreds or thousands of skus that are no longer used, CMS (content management systems) that are rarely cleaned up over the course of a year or longer, or reporting tools that aren’t regularly tweaked/updated resulting in decisions being made based on skewed metrics. The similarity between these examples, whether it’s directly related to software or otherwise, all result in a steady decrease in productivity across the board. A couple analogies that may drive this point home are trying to find a small piece of equipment in a messy office/workspace or remodeling a home on top of an already unstable foundation. You’ll accomplish what you set out to do, but it will take 2 – 3x longer, and in the latter case, will have a significantly shorter life expectancy than if it was regularly maintained. In an enterprise environment, those impediments can quickly add up and become very costly.
There are virtually countless examples that can be explored regarding out of date and unmaintained systems, but there is one more that is especially important in the retail ecosystem. This has to do with security. In short, the vast majority of all security breaches are preventable if there is a proper focus and priority given to keeping secure environments. This consists of having properly trained associates regarding the of handling sensitive information, but it also includes regularly scanning and fixing software vulnerabilities. The breaches from well-known retailers in recent years are just a few examples of the terrible effects having security vulnerabilities can produce. The cost of a company’s reputation and customer trust is too great to not take these issues seriously.
Now, all of this is in no way meant to suggest that maintenance should ever get in the way of revenue-driven priorities. The point is if this work is approached correctly, that’s not a decision that will ever need to be made because they contribute to the same end goal. All it takes is a portion of time spent every work cycle, whether that’s every 2 weeks or 2 months, dedicated to maintaining those systems and environments on a consistent cadence. That could be 10-20% of development time spent towards updating external dependencies, patching security gaps, and paying down tech debt. It could also be 5-10% of a product team’s time spent keeping their environment organized and easy to work with. By baking maintenance into all the teams’ delivery goals and success metrics, not only will it avoid numerous pitfalls before it’s too late, it will ensure their ability to react quickly, accurately, and confidently to every situation moving forward.