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!