"Make Speed Not Haste" is a common phrase. Over a morning coffee this week I had a conversation around the agile notion of "early delivery." I'm always troubled by this statement in the absence of any context or business. Looking out the window of the Starbucks, a commercial building was going up. Material was piled in the dirt for use in the construction. Cement trucks were lined up on the street ready for the morning pour. Structural steel was being prepared on another section of the site.
I posed the question to our small group, "What would happen is those materials or concrete pours were done ahead of time?" Would it be good to be ahead of schedule for the construction of the building? What if instead the building was on time and on budget?
For the commercial building having it ready ahead of time might be undesirable:
- The construction loan would be over when the certificate of occupancy is done, and the building owner would need revenue from tenets
- For the structural steel to be delivered early might mean it would rust in the snow (Colorado gets lots of snow in the winter).
How can this notion of "being early" transfer to software projects?
- If we complete a software subsystem - say claims migration - ahead of schedule, what happens to the staff working on the development? Can they be reassigned? We'll save money for sure, but at what downstream cost?
- If we have the server farm stood up early, does the warranty start on the equipment? Do we need a staff to support the operations early? Could we start the backfile conversation from the legacy system to the new system early?
- If we release the data entry system early, is the staff ready to go to training?
Software doesn't have the same aging properties are structural steel, but there are aging properties all the same.
- If we release the GPS interface controls software (firmware) to the FPGA fab house early, can they actually start burning silicon?
- Is the interface to the downstream controlled for the navigation system firm enough to start burning ASIC's from the FPGA's?
- Is the test harness ready in the remote assembly location for the interface cards to be tested, or will they sit in their boxes waiting for something else to happen.
Instead if seeking to be early how about seeking to On Time. The planned need time. The date that the plan shows we need this item? Just having that date is not sufficient of course. The date needs to have cost and schedule margin. How much, that needs to thought through as well.
Having worked on large complex projects with software, firmware, hardware and humans all interacting a critical question is always asked:
If not, it's a waste of effort to show up early. And there is likely a downside to doing so.