Application Modernization is a term that I’m almost positive you have heard of by now. Generally it is considered to be part of the broader definition of Digital Transformation. On it’s surface, App Modernization is simple. You have aging, legacy software, you need to update it. In practice, it’s much less simple. There are a myriad of things you need to take into consideration for a successful foray into App Modernization. I’ve put together a list of things that, I feel, are necessary things to do before and during any App Modernization project. This isn’t meant to be an end all, be all, but should give any one who is thinking about App Modernization a baseline to start thinking about what’s involved.
“It’s Not Broken, Why Would I Fix It?”
I’ve had this conversation more times than I can count. It generally revolves around the fact that a 20 year old software product has been running just fine pretty much forever. How could I possibly suggest that the they throw away money ‘fixing it’. This response is usually the start of a great conversation. While I am a huge proponent of taking a pragmatic approach to anything I do, I think it’s important for organizations to take the time to think about these things seriously.
Start weighing the application’s importance to the business against the risks that the technology will not be supported forever. Add to that the fact that finding people to work in aging technologies can be very difficult, and prohibitively expensive. The cost of Modernization is suddenly far less than the cost of the supporting the application over time.
Rome wasn’t built in a day. Likewise, your software portfolio took a significant amount of time and planning to build up to the point where it is today. I would recommend not attempting to modernize your entire organization’s portfolio all at once. The task would be overwhelming for one, more importantly mistakes will be made when modernizing. Inevitably, you will try some things that make sense up front only to realize that they didn’t work out. That’s fine, good even. We’re humans, we make mistakes, we learn, we iterate. If we’re touching our entire code base all at once, those iterations are more costly and frustrating.
One approach to App Modernization is called Rip N’ Replace. Basically, it just means to rewrite, verbatim, an existing application on a new platform and/or using new technologies. There are times when this approach makes sense. There’s a tendency for organizations to start here, but I generally don’t.
One of my personal axioms is to always be able to answer the Why question in everything I’m doing. Everything we do as software developers needs to have a purpose. It’s this line of thinking that naturally leads me down the path of needing to define what value the application provides to the business.
Many times, we’re talking about software that was written 10-20 years ago. I find it hard to believe that there haven’t been significant changes to the business, either in operation or in the market, in that time. Now is the time to modernize not just the technologies this application uses, but modernize how this application serves the business today and for the near future.
I touched on the idea of Rip N’ Replace in the previous topic. There are actually 4 approaches to modernization. Modernizing any application should result in two things. Stability for the future and cost savings of utilization of new technologies and platforms. With this in mind, know that each of these approaches present a set of value propositions. Generally, the more you invest today, the more you’ll reap in benefits in the future. Think about these approaches and select the one the makes the most sense based on:
The technical side of software development is just one piece of the puzzle. The trends in software development over the last 5 or so years has shifted to talk about software as a gathering of tools, technology, people, and process. App Modernization should certainly include modernization of the software development process and the DevOps stories. Implementing Agile and CI/CD goes hand in hand with building modern software. Use this time to level up all of these capabilities.
Tesla has recently been in the news because they have, after years of set backs, managed to bring their production of the Model 3 to 5,000 units per week. This is a great milestone for them, and reason to throw a huge party in celebration. However, it’s not all smiles over at Tesla. Turns out, making that many cars means you have to deliver that many cars. This is a cascading challenge.
As we improve aspects of our software development practices, we create bottlenecks that weren’t there before. For instance, developing features more quickly often puts unmanageable pressure on QA. Developing features more rapidly without upgrading the DevOps story that accelerates the releasing of those features means that valuable software (business value) sits “on a shelf” gathering dust rather than being recognized by the end users.
With some intentional and thoughtful planning, and the support of an experienced partner, these challenges can be accounted for and avoided entirely.
Rapidly evolving web technologies, expanding cloud solutions,service offerings, and adopting agile delivery practices – these are all things that can be new to companies as they begin modernizing. An experienced partner will have valuable experience in all of these areas, will be able to help your team to avoid the gotchas, and will point the project in the right direction from the start.
I can provide ideas of how to partner up, if you have questions about how to get started on your own App Modernization journey. Reach out to me on twitter @devgush or at Kevin.Fitzpatrick@PolarisSolutions.com.