Software migration, whether holistic or occurring in parts, keep the system resilient and in working order, even if the technology was at one point state of the art.
When first implementing a system, it satisfies all the known needs of users and is probably modern tech, Hava Babay-Adi, software engineer and tech lead at Google, said during a Virtual Grace Hopper Celebration 2021 on-demand session. "However, as the years go by, it's possible that the technology that you're using becomes legacy."
For many organizations, the pandemic and shift to remote work sped up modernization and escalated the legacy tech problem. Legacy applications became unmanageable, and smooth software migrations are necessary to the business.
"Legacy technology is any technology that makes it difficult for organizations to change their application systems to support changing business requirements," Anne Thomas, distinguished research VP at Gartner, said in an email to CIO Dive last month. "And, therefore, it impedes business agility."
But software migrations can be tricky. Any successful shift depends on carefully planned steps that account for the end user and business continuity.
Learning from the mistakes and opportunities of others helps avoid common mishaps along the way. Babay-Adi shared eight lessons learned from software migrations that IT leadership can apply to current projects.
1. Migrations should bring new value
The first step in migrating an existing system is understanding how users engage with the software, according to Babay-Adi. With those insights in mind, the IT team can better understand where value can be added.
"The needs of your users today needs to be satisfied by the new system and those needs can be very different from the needs they had originally when the system was introduced," Babay-Adi said.
2. Understand latency and volume requirements
To avoid downtime, the software migration team needs to accommodate existing usage of the program from the get-go. "The new system need[s] to be launched and support the existing amount of data from day one," Babay-Adi said.
Babay-Adi recommends asking about latency and the volume of data that needs support from the start, planning stress tests for the new system.
3. Carefully plan out the data migration for quality control
The legacy system in place prior to migration likely accumulated a large amount of data that needs to be sifted through and transferred to the new software.
"You need to make sure that existing data does not get corrupted," Babay-Adi said. "This is mainly relevant in migration project[s] that [involve] converting data for one schema to another or from one storage layer to another."
Existing data may include records that have become invalid, for example, and will need to be transferred to a compatible format.
4. Place buffers around the migration
It's unlikely that the migration will go exactly as planned, and making room to pivot from the original idea to better meet user and company needs improves the overall quality of the project.
During a migration Babay-Adi worked on, the engineers that originally implemented the software no longer worked at the company and the team discovered new use cases and features. The discoveries changed the timeline of the project with additional features or need for clean up.
5. Get the end user involved in the process
"It's very beneficial to have real production traffic on the new system as soon as possible," Babay-Adi said. "My recommendation here is: Let users use features when they are implemented and not wait until the entire system [has been] implemented."
Babay-Adi advises regular meetings to solicit feedback and have users suggest new features.
6. Prioritize business continuity during migrations
The software migration team should build in a process to roll out and, if necessary, scale back software features without disrupting necessary functionality, according to Babay-Adi.
"Your users are using the system for their day-to-day job," Babay-Adi said. "You need to make sure that their ability to perform their tasks is not being affected by the migration." The business should be able to return to the legacy system at any point just in case.
7. Understand users will hesitate to change systems
Users aren't keen on moving to a new system or embracing migration, according to Babay-Adi. They're more comfortable using the legacy system.
Babay-Adi suggests a beta version in which users can test out new features, but continue relying on the legacy system until they're comfortable with making the switch.
8. Put proper analytics in place
"You need to have analytics in both the old system and the new system so you can track your migration," Babay-Adi said. Metrics include performance, error rate and usage rate to understand where there's room for improvement.