My recent work requires coordinating teams to build their own pieces of a larger puzzle. Weโ€™re going to replace old system ๐’‚ with new systems ๐”, ๐”‚, and ๐’›, and that means each team needs to land their contribution on schedule.

But in my heart I know that software hates schedules! Weโ€™re inventing as we go and all kinds of risks can wreck the timeline. Hereโ€™s some recent ones that impacted my team:

  • A critical team member left the company.
  • A Java 8 bug blocked feature development โ€™til we upgraded to Java 11.
  • Random packet loss between our datacenter and AWS blocked migration.

How do we coordinate anything done with so much uncertainty?!

This clarified things for me: Deadlines arenโ€™t predictions; theyโ€™re constraints. Software projects are elastic in scope. Replace โ€œwhen will the whole thing be done?โ€ with โ€œhow much can we land by April?โ€

Iโ€™m still uncomfortable going more than a few months into the future. Thatโ€™s when the risks compound!