11 min read

As with clothes and hairstyles, software can go out of fashion. But the risks of outdated software are far greater than big 80s hair. Outdated software can cause massive customer churn, cost unnecessarily high amounts of money to maintain, and put both business and customer data at risk.

This is why every year, thousands of companies take on software modernization projects to update the products they offer customers as well as their internally developed systems for customer management or business processes.

In this guide, we put our experience updating software for large corps and government agencies to work for you.

We cover the top reasons to modernize your software, a warning to ensure your project is successful, and multiple strategies and hiring options to help you begin your modernization project on the right track.

What’s in this guide:

What is software modernization?

Software modernization is the practice of rewriting or rebuilding legacy software systems and applications in order to experience faster innovation, fewer bugs, and better performance. Modernizing an application not only improves the quality and experience for users, but for your development team as well.

By rebuilding your application with developer-favorite frameworks like Laravel and Vue.js, you can improve developer satisfaction. Developers can become frustrated with old applications that consistently break and require fires to be put out, when they’d rather get to innovate new features.

Top reasons to undertake software modernization

Software modernization projects are undertaken frequently, not just by companies whose products are decades old but also by companies with products just 8 to 10 years old, because best practices can change and scale issues can come on quickly, especially for fast-growing startups with seemingly overnight success.

The most common reasons for undertaking a modernization project are:

What most companies get wrong when modernizing their legacy systems

When you’re modernizing a legacy system or application, you’re not just modernizing the software. You’re also modernizing the processes that got you to where you are currently.

If you forget about the second part (processes), then you run the risk of failing to keep up with innovation yet again.

To address your processes, make sure to choose one or more of these approaches:

3 examples of software modernization

These software modernization examples can help inform and inspire your own project.

1. US Ski and Snowboard Team

In this example, the US Ski and Snowboard Team, needed to modernize their legacy systems for storing internal data, on both Olympic athletes as well as sports club participants. The US Ski and Snowboard Team supports 450 sports clubs across the country and over 30,000 members.

Their membership application wasn’t integrated with their core systems, and there were risks to the data as well.

They worked with DevSquad to connect their e-commerce, membership application, and other operational systems and to build a custom API.

usski

The end result was a fully integrated operational system that saved hundreds of hours a month, while also providing the opportunity for revenue generation through e-commerce.

2. Shopify

Founded in 2006, Shopify owns 33% of the US ecommerce platform market (the biggest market share of all competitors).

Shopify was dealing with the fallout of 3 million lines of code and one of the biggest monolith applications in the world:

The application was extremely fragile with new code having unexpected repercussions. Making a seemingly innocuous change could trigger a cascade of unrelated test failures. For example, if the code that calculates our shipping rate called into the code that calculates tax rates, then making changes to how we calculate tax rates could affect the outcome of shipping rate calculations, but it might not be obvious why. This was a result of high coupling and a lack of boundaries, which also resulted in tests that were difficult to write, and very slow to run on CI. 

Kirsten Westeinde, Senior Development Manager at Shopify

You may have read that a common form of software modernization involves breaking down a large monolithic architecture into smaller microservices, but this just causes even further complexity as well as a slow, inefficient architecture. When modernizing their applications, Shopify decided to use a modular approach, rather than build microservices that break their application down too far. They only broke down the components into natural parts of the system for both development and testing.

shopify dependencies diagram
Source: Shopify

The end result was an architecture that allowed teams to add new features “as fast as ever” without the same amount of breaks as before.

3. QuickBooks

Founded in 1983, QuickBooks has remained the top accounting software in the US by continually modernizing their products. With nearly 40 years of history, the company provides countless examples of software modernization.

But here, we’d like to focus on their ability to own different segments of the overall accounting market, from large enterprises to solopreneurs. They’ve achieved this through their rapid adoption of cloud-computing, even launching their first cloud-based product as early as 2001.

The company has also excelled at re-building their accounting products for new customer demands and for new audiences. If you take a look at their website today, you’ll see that there are 9 different products. The user must select the right one to login to, as they all are completely different.

qbo

While this might seem overwhelming at first glance, it actually prevents feature bloat and customer overwhelm. QuickBooks offers invoices, purchase orders, multiple accounts, and other advanced features in their QuickBooks Online product for enterprises and SMBs, while QuickBooks Self-Employed is really intended for small LLCs and DBAs needing to file just a schedule C.

Sometimes, modernization can look like modernizing one product (the enterprise solution) while creating a separate product from scratch (for solopreneurs). Of course, this is only advisable if your core product is so complex, that scaling to new niches and markets is impossible, given the target audience.

5 important strategies for software modernization

Software modernization projects will be unsuccessful if they’re not using wholistic strategies. Companies need to put users first, ensure alignment with business goals, and ruthlessly research competitors’ products.

Here are the most important strategies to employ when undertaking software modernization:

1. Business alignment

The first strategy that we must mention is business alignment. Are the projects’ goals and proposed solutions truly aligned with the business? For example, if affordability and ROI matter above all else, a company that is rebuilding internal business systems may find that they’re able to utilize existing SaaS solutions, such as Salesforce’s Government Cloud for scalable data management or Smartsheet for construction and facilities management. The custom development might look more like assessing and integrating solutions, rather than building all functionality from scratch.

There are endless ways that business goals could affect the approach for a software modernization project. Make sure to work with stakeholders to determine the top goals and requirements, so that all proposed solutions can later be evaluated properly.

2. User research and testing

User research is another key strategy. Too often, businesses will focus only on the essential architecture modernization and feature dependencies while forgetting to take the time to really understand what users would want out of a newly updated product.

Make sure to conduct UX interviews and listen to all of the grievances that users have about the way your software is currently designed.

Then, when you redesign the UX, create a high-fidelity prototype that will look and feel almost exactly like your updated product. Then, conduct UX interviews again and have your users give you feedback on the prototype.

We go into more details on these steps below, but however you tackle this, just make sure that user research is a huge part of your strategy. You can learn about desired features in addition to UX feedback.

3. Competitor research

At the start of your software modernization process, be sure to conduct competitor research.

Here are some things to review:

By understanding your top competitors’ features and UX, you’ll make better decisions of what to rebuild, cut, and add for your own product.

4. Using developer-favorite frameworks and processes

When modernizing your software, make sure to survey your development team about the process improvements and frameworks they would like to see.

If you’re modernizing your software in-house, your team will of course be making recommendations, but make sure to talk with more of the team across a variety of roles so you can get everyone’s input.

If you’re working with a product development firm, they should guide you on modern frameworks that developers love, so you’re able to easily takeover the product in-house if and when the time comes.

5. Risk management

Risk management must be a core element of your system or application modernization. This should include managing the risks of your current application, the migration process, how the modernization process with affect the customer experience, and any potential risks associated with your new application’s architecture and data management.

9 steps to legacy software modernization

To modernize your software, follow these key steps. We’ve honed our process of modernizing software for small SaaS businesses and large government agencies.

DevSquad Blog 17 Software Modernization Examples Strategies and Steps Infographic v1

1. Architecture Audit

Always start with an architecture audit. The Shopify example mentioned above is an excellent example of this because they assessed how features impact each other in order to break their monolithic structure down into a few core modules (with no need for microservices).

Atlassian provides a useful software architecture review template.

review

You should also use Figma or Lucidchart to draw out the current structure and label problem areas or connections.

2. Code Audit

The next step is to audit the code. Code audits are performed regularly to find glitches that unit and acceptance tests may have missed, review security vulnerabilities, and assess performance. In this instance, a code audit is very similar to this regular process, except that you’ll need to review all of the most important code (rather than just new code for a current sprint).

You should review the code that’s making up the most important features. This will help you discover any issues that are causing the software to appear and behind in an unmodern way. You’ll also find code that can be refactored.

3. UX Audit

Next, conduct a UX audit that will help identify the problem areas and outdated elements of your user interface design. Make sure to determine your criteria for a quality experience (both quantitative and qualitative), and then collect both types of data, review it, and format your findings.

For example, you might uncover quantitative data on freemium-to-paid conversions, feature usage, NPS ratings, and average weekly or monthly usage. And for qualitative data, you can describe anecdotes from customers in terms of challenges, frustrations, and feedback. You should also be sure to include your own opinions and recommendations about the design.

ux audit how to conduct 1

During this stage, you can also conduct a UX and feature audit of your competitors’ products.

4. Product Strategy

Now that you’ve reviewed the current application’s architecture, code, and UX, it’s time to determine the product strategy.

Here are some questions your documented strategy should be able to answer:

You can document your product strategy using a template like this one from Amplitude.

amplitude

Share it with all stakeholders and get buy-in before moving on.

5. UX Design

Before you move on with modernizing the application’s infrastructure and code, you need to plan the UX design. Create a high fidelity prototype that you can use to get feedback from both stakeholders and users. Be sure to work with an expert in modern UX design so that your new product truly connects with users and is easy to learn. Without amazing UX, users can’t achieve their desired outcomes.

6. Refactoring

The next step in the software modernization process is to refactor the code. Refactoring is the systematic process of improving code through editing and cleaning up previously written code.

You might also need to write new code for any new features that are being added to the product. However, you might wait to add new features until the original software is modernized (see Step 9).

7. Performance Testing

Now it’s time to test the performance. This is a critical step during software modernization, because many projects have performance as their number one goal.

During this phase, you’ll test:

You should discover the root causes of any performance issues and identify bottlenecks within the system.

8. Quality Assurance

The next stage is to run comprehensive quality assurance of your new application or system. You should both scripted testing (test plans, steps, and criteria) as well as exploratory testing (using a software more naturally) in order to find the most amount of bugs.

During this stage, you might also write some automated tests of critical functions in order to run automated testing during future sprints.

9. Ongoing Roadmap Planning

The final step is a continuous, never-ending process: roadmap planning.

Add new features and updates to your roadmap to continuously prioritize important releases and track new ideas.

This roadmap example from Frill is public to users so they can comment on upcoming features and add their own ideas. This helps product managers more accurately identify requirements and success criteria based on real user needs.

frill

Hiring options when modernizing legacy software

The above steps are critical when modernizing software, but who will do the work?

Below, we assess different options for hiring and outsourcing the work.

Re-build it in house

Many large enterprises with modern development teams choose to handle software modernization in-house. But government agencies, enterprises with outdated skillsets, and small businesses will struggle to do this in-house and may waste precious time and resources and put their organization further at risk.

Work with a product development firm

Assuming you choose an experienced, high-quality firm, this option can be a great way to mitigate risks. You’ll be working with a company that has done software modernization for dozens or even hundreds of products before.

Right for you if: You want to future-proof your product and achieve modernization success without risks to your product, customers, or budget.
Wrong for you if: You have all of the expertise needed in-house and your team has enough time to take on the project themselves.

Hire and manage freelancers

This is one of the most risky options because so few company leaders have the time and expertise to really pull together a successful modernization project.

Right for you if: You’re an expert in product management, you know how to get all collaborators working seamlessly together (PM, developers, UX design, DevOps, QA, etc.), and you have the time to manage everyone’s individual contributions.
Wrong for you if: You either don’t have experience managing products, don’t have the time, or would rather manage potential risks by outsourcing development to a fully managed product development firm.

Purchase a new SaaS solution

Sometimes, you’re able to purchase a SaaS solution rather than build something from scratch. However, development work might still be required to implement and integrate the new solution.

“By leveraging modern technologies, agencies can quickly deploy secure, customer-centric applications in weeks, instead of months or years. But to achieve this, they’ll need to prioritize IT modernization efforts that focus on their platform, integration and security. When evaluating IT platforms, it is vital for government leaders to understand the holistic platform, its capabilities and how it will meet an agency’s needs.”

Paul Tatum, Executive Vice President of Solution Engineering at Salesforce

Right for you if: Your needs can be easily satisfied with the right available technology, and the solution passes your requirements for stability, security, integration, etc.
Wrong for you if: You’re building a product for external (customer) use, or your internal needs don’t match any available solutions.

Software modernization is a complex process, but with your eye on your users and the right talent on your side, you can modernize your product faster than you think.

Ready to modernize your product? Learn more about DevSquad.

Leave a Reply

Your email address will not be published. Required fields are marked *