O.C. Tanner recently completed a business technology overhaul to generate revenue from software subscriptions instead of products. CIO Niel Nickolaisen shares what they learned on the journey.
We had a party a few weeks ago. It was a big, remote, socially-distanced celebration of the delivery of our fully modernized business platform. It has been a six-year journey driven by the following goals:
- Change our entire business model to generate revenue from software subscriptions rather than manufactured products.
- Be able to change things – and quickly.
- Operate and enhance our legacy systems while building their replacements.
As we sorted through our options, we made mistakes, recovered from them, and learned a lot, but in general, we pulled it off and pulled it off well.
Lessons Learned on Our Modernization Journey
A couple of months ago, a member of my team asked me to summarize what we had learned and that motivated me to assemble what I call our “Rules of Business Technology Modernization.” These are:
1. Define a target architecture and implement that architecture at every opportunity.
One of the ways we balanced maintaining and enhancing our legacy while also building our future was to have our target architecture in place. Whenever we had to fix or enhance our legacy systems, we fixed them in a way that fit with the target architecture. We did not have to replace everything we had – in some cases we evolved what we had with each legacy fix and enhancement. Everything new adhered to the target architecture.
2. Ensure the target architecture is based on replaceability.
I used to feel strongly that reusability should we our primary design goal. After all, it saves time and effort if I can reuse something rather than build new each time. But, knowing that nothing (and I do mean nothing) about the future is certain, the best way to plan for certain uncertainty is to make sure that everything is easily replaceable (with reusability being a close second). With replaceability as our design goal, we naturally defined an API-centric, loosely-coupled, micro-services-based architecture. We also extended API and loose-coupling to the external world.
Our philosophy is that platforms should be able to connect to other platforms, so we “opened up” our systems with a set of external connections. We have already benefited from these decisions. When a technology changes, our switching costs are low. When we need to replace something, the replacement costs are low. When we need to connect to a new service provider, the mechanism is in place.
3. Define and use a set of common, core services.
Our legacy environment had lots of duplicated services – multiple ways to authenticate, different paths to get to the same destination, and identical data spread among many applications and components. One of the first things we did was to define the common components that most of the other services required: things like order processing, report visualization, core data, authentication, event-handling, items and item catalogs, user experience / design templates, etc., and have just one, solid, stable core service for such things. This dramatically simplifies what we have to build and support and allows us to focus on what truly makes our company and its products unique. Are we more competitive because we have seven ways to log in? Is that why the market chooses us? Certainly not. So why wouldn’t we simplify and standardize such things?
4. Leverage the innovation of others.
Many of our legacy systems were home-grown applications, such as commerce and order processing systems. To be honest, we are not the experts in those areas so our home-grown versions were not very good. As a result, they required lots of time, effort and people to maintain and enhance. Why not buy such technology from market leaders who will maintain and enhance them? That is precisely what we’ve done, which allows us to focus on what makes our company and our products unique and special (which it is not commerce / order-processing!)
by Gunjan Goel
5. Master data management is a key to current and future success.
One of the things we did right was to define the core, common data that fueled the majority of our systems and decisions, and treat this as master data. We put it in one place and provided access to this core data by everyone and everything else that needs it. This replaced having data scattered around a massive number of applications with the associated issues of synchronization and management. Application-specific data resides in the applications, or it can reside with the core data.
6. Get good at agile, lean and DevOps.
When we started, we did infrequent, large-scale releases that were high stakes and high risk. We set the crazy, unrealistic goal of a daily production deployment and then asked (and answered) the question, “What must be truein order to get to a daily deploy?”. We trained everyone on iterative (aka agile) methods as well as lean (in order to reduce waste) and then applied those to our processes. Applying agile and lean to our deployment process meant we got really good at DevOps and can now do multiple, successful production deploys each day.
7. Change the leadership model in all of IT.
There is a culture that supports modernization. That culture includes trust rather than control, experimentation instead of change resistance, and a sharp focus on outcomes rather than methods. In order to achieve such a culture, we have spent a lot of time training and mentoring our leaders and extending the idea of leadership to everyone in IT. After all, if we are going to modernize the company, everyone in IT needs to exert influence on every person in their lives – and influencing others is what leaders do.
Running on this modernized platform, we are now much better prepared for our future. We have explained to the company (and continue to reinforce) that our platform is not a destination but the starting point for what comes next – focused innovation that happens much faster with much lower risk. And, the entire team can feel great about having delivered something that is taking our organization to the next level.