Skip to content

Dealing with legacy software, AI may help in unconventional ways

2023/11/07

What if I told you that the biggest obstacle to companies digital transformation might be the software you're currently using?

Working with legacy software is a pain.

Even if I love the 8-bits nostalgia, assembly code or hacking with a 6502, there is a whole class of legacy software that no longer does the job.

But what job exactly ?

Does it works ? Remember the old saying: "Don't fix something that ain't broken".

Is it broken ? I'm not talking about bugs: these can always be fixed (often at great costs). But should we invest time and money to fix them ?

How useful software becomes legacy then obsolete ?

When I say legacy software no longer does the job, I mean: It no longer meets user expectations.

User expectations change over time.

User needs change over time.

Any user-facing software should meet at least the following:

  • I expect determinism: If I run several times the same scenario, I expect the same results.
  • I expect easy deployments. The App Store did set our expectations.
  • I expect performances: I always find myself waiting for the computer to complete its task.
  • I expect an efficient user interface: Beautiful UI ? Yes, but this is optional. What I hate is to click 20 times throughout 15 menus to perform actions. Give me shortcuts, a command palette and tool tips on strange icons I don't know the meaning of.
  • I expect integrations: I expect data to be available through an API or a mechanism to build integrations

The list could go on, you get the point.

Software becomes legacy once user expectations are no longer reachable within weeks of development (core product or via integrations).

Then it's time for a change.

How to reduce risks by planning data and features migrations separately

I find that the most difficult part when migrating away from legacy software is getting buy-in from stake holders (Banking systems still using COBOL, go figure). One strategy I use is to first capture back data from legacy systems and only then build up features.

However, the devil is in the details: Features. Large legacy systems are filled with business rules that can be very complex to understand. Edge cases on top of edge cases.

One strategy I use is to build up features (develop in-house + integrations with other software products) on top of the data it-self. I prioritize the most useful features for the largest number of users (it can be as simple as producing Excel spreadsheets from the data). It always ends up being the export and integrations features first.

How AI can help migrating away from legacy software

Printing yourself out, 1 PDF at a time

AI technologies such as LLMs and Computer Vision can help a lot when it comes to retrieving, parsing, extracting data out. For example, if you can print your data out to a PDF printer, LLM+Vision systems are able to parse and rebuild the data structures.

This is an extreme case but I used this technique to extract data out of a reluctant CRM software: The database was proprietary system and no API access was available. The client did manage to generate printouts of the most important data (touch points, messages, history).

Then, to deal with hard-coded business rules, LLM are very powerful when it comes to infer what the code is doing and why. Pairing a semi-automated analysis with actual human experts greatly reduces the time needed to understand and collect functional requirements.

Note that using only AI may not be sufficient, the use of other tools and professional services are often required.

A short recap:

  • Extract data with multi-modalities models
  • Extract business rules and/or analyze code with LLMs
  • Migrate data
  • Build-up features

One last note: when choosing the AI tech, be sure to assess the confidentiality requirements.

But you already knew that.

Advanced Stack