Mitigating Complexity in Large Projects
Most major work in companies is done as part of larger project.
There is inherent complexity in the environment in which these projects take place. These projects frequently take place over months I suspect quarterly projects are the most common at a large company because they align with financial/headcount planning cycles.
, involve the work of a team of multiple people, and sometimes involve the coordination of more than one team. Organizational change, shifting prioritites, and unexpected execution challenges will further contribute to the complexity surrounding a project over a longer time period.
Managers are responsible for the efficient delivery of results within an organization Among other things like alignment, growth, retention.
. Therefore, they are responsible for reliably delivering projects and managing complexity in a variety of circumstances.
Managers can mitigate the complexity in larger projects by identifying risks proactively:
- during the planning phase with structure
- during the execution phase with rituals
Use structure during planning to identify risks proactively
A large, complicated project typically requires execution by several parties. A good project plan coordinates this execution but still can be disrupted by surprises. A good manager structures their planning to identify unknown complexity and address it as early as possible.
A structured planning process can identify potentially overlooked complexity. On the technical side, techniques like “identify the nouns and verbs in the system” or “trace the life of a request through the system” are useful for exposing hidden requirements. A framework like the 5 phases of a project can expose important organizational challenges to overcome, such as consensus building. These tools create rigor in the planning process and can pre-emptively uncover risks to the project.
Once they have been exposed, a project plan should sequence the work to mitigate any perceived risk. As a rule, riskier components should be addressed early in the project to give more time to work around any issues that come up. In addition, a simple but complete solution should be prioritized to verify there is nothing missing in the end-to-end flow. Finally, a complete solution for a high complexity use-case will ensure that the project can handle edge cases. Together, these strategies prioritise early work on known risky areas or areas with potential unknown risk.
Use rituals during execution to identify risks early
Even if a structured planning process exposes and mitigates all risks that can be possibly known at the time, a rapidly changing environment will still cause surprises that a manager has to adapt to during the execution phase of a project. The best way for managers to handle these unexpected risks is to follow regular “rituals” to allow them to detect them as early as possible.
Managers should:
- Understand the progress of individuals through daily standups. In particular, if someone provides the same answer two days in a row to “what is the next action”My experience is that people benefit from the experience of committing publicly once a day to the progress they’ll make before the next day. For more information on status updates, see the Status Madlib
, a manager should follow up to confirm that they are not blocked. - Understand the progress of the team through weekly demosWeekly demos are also super valuable for the team: they provide a confirmation the team is actually working towards the business goal. On top of that, engineers are generally motivated to work hard to impress each other or important stakeholders. I like to invite important stakeholders to observe team demos: a customer, my manager, a product manager, etc. I also like to send out a weekly email to all stakeholders and include a screenshot/description of the demo to celebrate progress
. In particular, if a team is not advancing to the next project milestone a manager should try to understand why. - Understand the perception of partner teams through a regular 1:1 with peer managersI like to meet at least every-other-week with managers of any team that my team directly interacts with. In addition to helping me learn about issues, this regular meeting builds a relationship with the other manager that makes dealing with issues much smoother.
. In particular, a manager should frequently ask how people outside the team are perceiving the team and follow up if there is room for improvement. - Understand the priorities of customers by meeting with them periodically.I like to meet at least monthly with key customers; even if a product manager is meeting with them more frequently, I like to hear for myself and maintain a relationship. This recurring sync also is useful for me to build excitement for nearly complete projects, manage expectations about slipping projects, or to learn about upcoming needs
In particular, a manager should be prepared to adjust their investment in a project if a customer is increasing or decreasing their investment in the relevant area.