Migrations tend to get stuck. While migrations seem to start off with good effort, This does not eliminate the risk that it can get “stuck in the mud” over time. Two things can help engineering team to come out and move forward. This blog follows the previous blog. Introdution to migration what
- Ruthlessly prioritize. Prioritizing is easier said than done when working with highly autonomous teams.
- Matured engineering culture A company’s engineering culture is going to play a big role in how the [migrations being stuck] problem is perceived.
While technical leaders may start with the ideal assumption that business stakeholders understand that existing systems and approaches require upgrade as part of growing adoption of the solution. The assumption may not always be true for software and architecture upgrades, while the business leaders are happy with upgrades to cope with extra load, more use cases, or more constraints.
In the process of an accelerated pace, be open to the possibility that both business and engineers forget to prioritize the requirement to migrate/evolve old systems or old approaches to a new one on a continual basis.
Planning as engineering team.
While engineering teams start to plan how migration needs to happen, their first step is to Influence and impress the business team about the importance of migration and get their buy-in to develop migration POC.
Prior to the start of migration, every stakeholder should agree on the priority and relative importance of the migration project and when potential downtime periods are feasible. Negotiate as required
Present migration as a new project to business for budget approval before the engineering team invests high efforts. Spend time to bring business on the same page by making them understand risk and efforts and uncertainty related to migration. For me, it is a great start for migration when product and business stakeholders actively engage with engineering teams on migration and facilitate the curation of product backlog.
When an engineering team is composed of multiple sub-teams, setup creating a communication channel from day one to enable easy collaboration across teams earlier, to eliminate and discuss more risks at the planning stage..Over time, one team can offer other teams live office hours to support debugging. Assume the presence of debugging logs.
Presence of automated tests helps to identify gaps and reduce pain of migration gaps. If automated tests are absent or existing tests fail to provide sufficient test coverage, it is better to demand more budget to the business team for writing automated tests. I would prefer the engineering team demand even prior to the start of migrations.
When teams start automation and migration, life is easier. When things proceed at a fast accelerated pace, it is quite possible that more tests will fail.
In a 150 member large team, observed changes made by one team broke (unit tests pass) integration tests with other modules. One can evaluate based on organization context
- Plan for a central mechanism to Run CI tests on a daily basis and notify results to teams on a daily basis
- Influence leadership to sets goals for all the team that failure of integration tests needs to be fixed quickly.
This means migration demands additional efforts be invested on a continuous basis to provide migration efforts higher priority in their execution. Yes migration efforts are less of a priority to support production or customer field issues or the support required for new customer on-boarding.
Engage product teams in Planning
While migration work has been considered to be engineering heavy, it becomes more simple when engineering teams get product managers to get involved in migration and create a win-win plan of migration that is owned by the organization, in addition to the engineering team.
A product manager, who is curious to learn and be aware of technical challenges of migrations, treats other engineers involved to perform migration work as customers, not just as fellow developers.
Product Managers can
- influence engineers to adopt a much-needed customer-centric approach that is always observed to be missing when engineers only have to perform heavy lifting of migration.
- Think about the impact of migration on the solution offered to customer, measure and evaluate the impact on regular basis and have all teams to be on the same page
- Think about whether migration impacts vary across multiple user personas and the impact on product operations and customer success teams, gather feedback and communicate value.
- Participates in engineering discussions to create customer centric migrations road-map and influence priorities on backlog items. The more migrations plan gets discussed in the early stage or ahead of time, engineers gets benefit to visualize which migrations are scheduled for earlier and which gets scheduled or future quarters and plan development work better
Here are few ways to start visualizing how product managers can facilitate the engineering team and influence with respect to migration
- Understand how the team decided to build a new system and facilitate the migration strategy by setting migration goals.
- Enforce test of migration code, scripts and procedure before roll-out. Alpha and beta tests are common with migrations, just like they are for products.
- Create training programs, where it makes sense. Work with engineers to create training resources and programs.
- Explain the value of the migration to customers. Each migration communicates the values of this migration, often with the help of product marketing managers (PMMs).
- Connect with customers’ pulse. PMs know customers and do things like segment customers and schedule migration based on segments and risks.
- Present a competitive angle to customers about migrations by creating right positioning for migrations.
Product manager can think deep about challenges die to migration for product operations and customer success team and can bring that perspective to engineering teams
- Create as many automation scripts and approaches as possible, to be leveraged by operation teams to enable smooth customer migrations.
- Engage operation teams, to discuss the best casein worst case scenario that is envisioned by the customer success team wants. Should customers be informed about upcoming migration or when they should be informed of the same? What type of documentation are required for the customer success team to support successful migration?
- Discuss whether the customer success team perceives scenarios where rollbacks may be required. If required in future, have you planned how to perform rollback with less impact on the customer
When engineering teams are siloed, we need to acknowledge human bias that engineers may notice that something is going wrong with migration at early stages only when this rollout is already midway. Here is where rollback mechanisms may be required.
Some pointers for engineering teams to ramble based on their organization context. Feel free to discuss these pointers with product team and make them your partner in migration.
Do we need this to feel safe about migration? If there is a need to pause migration or something unexpected props up, can we allow for a rollback to happen ? This can be complex and tricky as the roll-out and rollback need to be synchronized on the client side and on the server side. To put the question another way, Do we need a kill switch created as part of the migration? When the kill switch is activated, a full rollback to the pre-migration state occurs.
Kill switches need not be completely automated. It can be a set of documented steps that can make the impact of kill switch happen.
There can be staging servers for new system post migration where engineering teams migrate data from the old system. Some customers can even connect and verify all is well before asking all customer end-users to move to the new system.
In banks and financial institutions, the life cycle of processes runs for years and it may be decided not to migrate all data from the old system to the new one, when a new system replaces the existing system. One way is to provide the end-user access to both new and old system, and allows end-users to view new transactions in new system and continue to view old transactions as part of old system
Do we need migration to be observable?. How will product managers identify when regression in business metrics occurs during the migration? Do we measure conversion rates during the migration.?
Do we need migration to be measurable? reduces the number of decisions made by the team in a state of uncertainty and ambiguity and acts as data-driven guardrails in place for migration. This removes the guesswork done as part of engineering planning for migration roll-out milestones. Better to ensure that there is clarity on when the next ramp up in migration efforts is required and how much unplanned increment in migration efforts can be supported confidently.
How much to share about migration to business teams The objective is to raise migration to be an organizational initiative, rather than a silo-ed attempt of the product and engineering team. if product manager is engaged with migration efforts, he can facilitate this communication of migration updates to business teams.
The engineering and product team can adopt processes to provide regular migration progress related updates to product operations, customer success and business teams. When you share with a business team, it helps to enlist the help of customer success teams and operations teams to get early feedback.