I have been working with integrations between legacy systems and "modern" layers for more than 20 years now. A more recent experience for me is to build an extension to my old house. Since you tend to use your prior experience when you take on a new challenge I would say that my integration background have been of great value during the building project. How and Why? Here I will try to compare in a few chosen areas and maybe provide some insights how to handle the problems of system integration along the way.
Analysis & Design
When building an extension you have to connect the structure, foundation and bolts between the new and old parts. Which are the bearing walls? Is the old foundation strong enough to support a second floor? It would be of great help to have updated blueprints when doing this analysis. Sorry to say, I did not have any blueprints of my old house, I had to run around, measure, knock on walls to guess if they are bearing etc. This took a lot of time and I could not really be sure that my reengineering produced correct blueprints.
And this was the easy part in analysis.
Next part, finding out how to connect the infrastructure (plumbing, electrical cables, pipes for water heating and tap water) between the old and new structure turned out to be a real headache. For some parts I really had do give up because there was no way to know where the cables was without tearing down some of the interior walls. So we said we would somehow fix it during implementation.
This scenario, we know "what we want", but only have a vague idea "where" and "how" to do it before we start implementation, have been a common pattern when I have been involved in system integration to legacy systems. So what have I learned from that? It's really simple: don't spend too much effort in analysis and specifications, a rough sketch is enough, since you will more than likely need to do considerably changes to your design when you start to tear down the walls.
Implementation & Test
Ok, time for implementation, or building it. The difficult part here was to get the right skills on the team and get the team to actually work as a team. More than once one of the team members need to reverse or change their work when another team member tried to do their part. Some round words were heard in several languages.
This is a very common scenario for me when trying to integrate between systems in general and with legacy in particular. The simple trick here is to try at some point in time to get everyone in the same room and plan together, including a short risk analysis activity. So to integrate systems you normally need to integrate the team or participants first. Nothing new, but still forgotten from time to time.
Ok, pretty soon this project will close, but first it's time for UAT. As sometimes also in system development projects the UAT tend to focus more on the visual aspects. Like color of tiles, format and feel of switches. The stuff that I had put most of my effort in, high quality infrastructure, gets no praise whatsoever. But I know, sometime in the future when next phase of house extension project starts, we will get more rewards from the high quality infrastructure than the coloring of the tiles. Quality is never out of fashion, some colors are.
Senior Integrations Architect Enfo Integration