This post was originally featured on Forbes
In my previous article, we talked about the cultural problems caused by an unwillingness or the fear of modernizing monolithic applications. After all, cloud-native architectures built on microservices offer compelling value—and are exciting for developers to work with.
However, even if organizations recognize these facts and decide to actively pursue application modernization initiatives, problems still emerge. Why? Modernization projects often fail because, to get the full value of the shift to the cloud, the application needs to be refactored, and refactoring isn’t easy. The common view of refactoring is that the manual process takes months or years, costs millions and there isn’t anyone around to do it.
If you ask any organization about application modernization initiatives, there’s a constant need for critical talent. Anyone tasked with leading an initiative to refactor Java or .NET applications has a difficult set of personnel challenges ahead.
Problem No. 1: Your existing team might not be the right fit for a modernization initiative.
Imagine you are an IT leader managing a team responsible for a critical, internally developed back office application that’s old. Your team of developers test, debug, maintain and even add a new feature once every six months. Your team, organizational structure and application are stable.
Then, your leadership team decides to drive a critical new customer experience initiative, and your stable application has to be refactored, turned into microservices and moved onto a hybrid, multi-cloud infrastructure to support agility, scale and resilience. Your team is expected to deliver continuous application improvements to support the new initiative.
Problem No. 2: Can your team do the job?
While familiar with old monolithic architecture, they’re not experts on refactoring, microservices, the complexities of cloud-native infrastructure or DevOps. At best, they’ll have a substantial learning curve. You’ll be organizing training initiatives on top of planning modernization and day-to-day duties. At worst, the new initiative will put pressure on a team that doesn’t have the necessary skills.
To make matters worse, the team isn’t structured to build an app with microservices, test it or maintain it. To move forward, you have to restructure your team to effectively deliver the project. Not only will the team have to deliver a new application on an unfamiliar architecture, but they’ll also have to do it within a new organization.
Problem No. 3: Finding and hiring the right talent.
After days of evaluating skill sets and increasingly anxious pushback from your team, you realize that you’ll need additional talent. So you put out a request for developers experienced with:
- Refactoring monolithic applications
- A 14-year-old version of Java
- Cloud migration
After reviewing resumes, you come to a realization: only three developers are eligible.
Most developers concentrate on new languages and platforms to keep skills fresh and marketable. Few developers are able or willing to strike a balance between old platforms and new ones. The four parameters set in your recruiting initiative excluded 90% of the market.
Many modernization initiatives, which have to analyze millions of lines of code, lack access to sufficient talent, thus resulting in a hard stop to a project.
Problem No. 4: The people you find are costly.
Following this disappointment, you have some good news. After weeks of searching, your recruiter found three candidates with the required skills and expertise. You interview, want to make offers and discover a painful truth: Specialized skills come with a price. You’re budgeted to pay these developers $120,000 a year, which according to Glassdoor is more than the market average.
The candidates want between $180,000-$210,000. After all, you’re not the only organization trying to modernize business-critical monolithic applications. Finding front-line developers with refactoring expertise in older languages isn’t easy, and a small talent pool means lots of competition.
Unfortunately, you need three new developers but can only afford two.
Problem No. 5: Staffing challenges impede progress.
You’ve hired two new developers. One of your existing developers is working on reskilling and you have enough personnel to start mapping out the modernization initiative.
However, you’re dealing with new limitations.
- Recruiting took longer than expected.
- Instead of three new developers, you have two.
- Instead of reskilling two current developers, you have one — who will take months to get up to speed.
Your modernization initiative is delayed and engineering velocity isn’t accelerating as quickly as you’d like. Your team is starting off overworked, and, due to the manual process of refactoring, you anticipate spending over two years to modernize applications and get to the cloud.
That’s not good. Your leaders expect a modernized application and to deliver on cloud mandates by the end of the next year. You’re already wincing about that unpleasant conversation.
First, give developers access to automation.
Shifting from monolithic applications to microservices is complex. Anything that can streamline the modernization process takes pressure off your team. ML and AI tools are proven to help organizations automate and streamline modernization efforts by sidestepping or limiting manual refactoring. They also offer a way to:
- Reduce or eliminate human error
- Remove emotion and politics
- Accelerate time to value and hit critical metrics
- Deliver results with less staff
Second, leverage existing talent. The members of your team have many of the right skills, but they need support to properly leverage them. Refactoring leverages existing code, allows you to reuse the language and gives you the ability to extract the embedded business logic, which current developers and architects should know quite well. Third, build a training model. Whether your team needs training on microservices or DevOps, there are organizations, online training and other approaches to leading your team from the status quo toward new success. Finally, commit as an organization to a continuous modernization and improvement strategy. This commitment sidesteps technical debt over time and makes your organization a more appealing place to work as your staff gets new, sustained support for innovative activities.
In conclusion, combining these approaches can not only improve morale but empower the team to do more with less, move faster than before and manage modernization risks. In other words, these approaches can be foundational resources for delivering better business outcomes, helping to solve the personnel challenges of application modernization.