The main issue I was facing this time was ineffective communication.

For example, I pressed the ACI folks a few times if there was a way for them to identify the lists that are no longer needed so that I could attempt deletion from my end. They were under the false impression that no list should be removed, whether by them or by me, so my question confused them. As a result, I did not get a straight answer, and proceeded with a questionable design of keeping lists around until the partner gets deleted.

Another example is that I told them data prefix lists should not be deleted. They assume data prefix mappings should not be deleted too, and went ahead with a design that only appends new mappings on top of the old. Again, not pretty.

In my code reviews my defense for the design was rather weak. It should be expected since it was a horrifying design to begin with.

This communication problem should be tackled with:

  • Make effort to understand how each other’s system works
    • What the other system does
    • Its general architecture
    • What this integration is about, and how it fits in their system
    • Their software components involved in the integration
    • Make a list of possible interactions between the two systems and what to be expected from their end to our end
  • Head over to have face-to-face meetings, or even work together for a few days
  • As soon as you struggle, identify the blocker and ask for manager/senior leads involvement
  • During TOI actively participate and drive the TOI. After all to know how it works is the purpose of the TOI.
  • If not sure about something, don’t assume. It’s okay to get back to them later.