- BOSS: OK, we have system test coming up next Tuesday.
- MGR1 (sweating): We're on track for Tuesday (thinking: if a miracle happens).
- MGR2 (avoiding eye contact): 90% complete; we'll be done next week.
- MGR3 (to MGR2): But my guys tell me the API isn't even checked in yet! You were supposed to have that 2 weeks ago! With just a week to go, it's not possible...
- BOSS (looking around): So when can we enter system test?
- MGR3: Two weeks after his (indicating MGR2) APIs pass unit test.
- MGR1 (silently): (Whew! I have 2 more weeks now!)
- BOSS (to MGR2): So you'll be ready next Tuesday, right?
- MGR2: Thursday
- BOSS: But you said you'd be ready for system test next Tuesday, which was the system test deadline
- MGR2: I said "next week".
- BOSS (to himself): How can I get these guys to quit lying?
Before we can figure out how to get rid of it, we have to start with "where did this come from?" Here are a few observations.
- #1: How did BOSS (or whoever) decide the system-test date? Why are we talking about dates in the first place? In other words, one issue is the whole focus on "meeting" a milestone.
- #2, #3: MGR1, MGR2 make completely unverifiable (and unfalsifiable) statements! Note that BOSS doesn't challenge them. Information about who's really not finished won't surface 'til system test actually starts -- or when it doesn't.
- #4: This is the first objectively true or false sentence that's been uttered. These accursed milestone meetings are filled with lies, but hardly anything falsifiable.
- #4 again: Why are we only talking now about something that's 2 weeks late? Shouldn't this conversation have happened 2 weeks ago?
- #7: Why does MGR1 think he has more time just because MGR2 is late? Why has BOSS trained him to think so?
- #8-#11 Deliberate deception! Probably driven by an overly competitive atmosphere
- #12: I'm going to say that all this lying is strongly encouraged by the environment. The focus on when (mistake #1) something will be ready (mistake #2) is a source of all kinds of trouble.
- translate what I need to know into terms that will produce the desired behavior in MGR{1,2,3}.
- Have the unit test specs been reviewed and approved by <insert Test Spec Reviewer's name here>?
- What % of the unit tests have been run?
- What % of the unit tests have passed?
- How many staff-weeks (or staff-months) have been spent out of your budget for this task?
- How much of the overflow buffer (or "contingency account") has been spent?
We're all optimists, aren't we? That's why our estimates are always too low. "Sure, two weeks," we say, but that assumes things go as planned. Really now, how often does that happen?
If BOSS pads the schedule, then workers will do the "student syndrome" (wikipedia) thing and not start 'til 2 weeks before it's due. And things don't go as planned, and even the padded schedule is missed.
How do you fix that? The key insight is in item #5 on this post: by tracking other things than what you track now:
- effort estimated (budget)
- effort expended (out of budget) -- not % but actuals
- how much is left in the "contingency account" or "buffer"
Not "How close to 'done' are you?" (answer: 90%! Always!)
But "What % of your unit tests have been run? Passed? How much (not what %) of your budget is used? How much is left? How much is left in the contingency bank?" Track all of those. That's where you add your value.
And that's also why there's not enough money in the world to get me to do that job.
No comments:
Post a Comment