Taking Ownership of a Legacy System
Sr Director of Engineering at FanDuel
My team's most recent project involved taking over a massive system and codebase where we had little experience. There was a more extensive reorganization within my company where senior engineers were moved to new products, and my team acquired the legacy business. I struggled to manage this system, in which I had to take control of support and ownership while setting my team up for success. Our new platform consisted of code and systems that were unknown to my team. We had to identify all the moving parts and unknowns and set ourselves in a position to maintain this system long-term.
The first step my team executed was an audit of the existing system. During the audit, we identified the current services and processes in place. We connected our findings with information from experts from the last team to try and understand the architecture, documentation, tech debt, and known problems within the system. Unfortunately, many senior engineers who previously worked on this platform were moved to complex, fast-moving projects. Because of this, my team tried to be as efficient as possible when interacting with the experts and expanding their understanding. When we could connect with a critical subject matter expert, I tried to specifically get a level of commitment to be a resource for my team. Afterward, they were present in ad hoc meetings to consult on future projects.
After creating a foundation of knowledge, we reviewed the existing architecture with the business, product, and engineering teams. We tried to adhere to Conway's Law, where the org structure and architecture align. To do so, we mapped out the function we knew the system was supposed to do and how this related to products and features. This information was organized in a logical way in which we wanted to deliver value in the future. From there, we worked to find well-reasoned team groupings that would best support our outcomes. Lastly, my team assigned clear ownership of those areas and used it for the organization moving forward.
Establish what it means to own a portion of the system with your teams. Even if it is ambiguous, understanding who is responsible for something moving forward will bridge the distance between knowledge gaps. The outcome was a clear map of all the functionalities and products that our team was responsible for. These functionalities are aligned with business and product and separate from the audit of the existing software systems. From there, we clearly understood what logical grouping owned each of these areas and who was in leadership roles.
- Don't be stuck on the current structure you are in right now. Align with business and product on how you want to deliver value in the future.
- When taking over any legacy systems, associating with the existing subject matter experts, plan on creating clear commitments on what level of support your team can expect.
- Clarify what it means to be responsible for a portion of a system with your team. By doing so, your team will understand the requirements to act like an owner.
- Establish explicit dependencies between the teams. Especially as teams take over areas they do not understand, they will be less knowledgeable about all the potential hidden dependencies. Examples of this can be stakeholders or other departments a team needs to interact with to achieve an outcome.
Connect and Learn with the Best Eng Leaders
We will send you a weekly newsletter with new mentors, circles, peer groups, content, webinars,bounties and free events.