This post is a continuation of my post from July 30 on some project management lessons I learned while roofing my garage.
I had all of my roofing supplies, my work force was in place and the big day had arrived. Everything was just as I had envisioned it. Then my first volunteer arrived and told me he wasn't sure how long he was going to be able to help. His wife had gotten sick the day before and it didn't appear she was going to be in any shape to watch their children. If he would have been the only person I recruited to help, I may have been hard-pressed to accomplish my goal of completing the roof by Sunday evening. But he wasn't. I still had one other person to help that day and I could have probably found additional help the following day if necessary. Crisis averted.
Lesson 4: Mitigating risk is time well spent especially when risk becomes reality.
I had researched getting a dumpster and instead found a company that would load your garbage in a truck with their own work force. They had a nice website that detailed their costs - or so I thought. It turns out that they had a special pricing for roofing which I didn't learn about until 3 hours prior to pick-up. The additional cost was excessive and there was no way I was going to pay for it. I had no backup plan aside from just leaving a pile of roofing in my driveway until I found alternative. Fortunately, my friend let me borrow his truck and I was able to dispose of the old roofing for a fraction of the cost. I was lucky. In retrospect, having a dumpster on site ahead of time would have completely eliminated this risk. Instead, I knowingly introduced a number of unnecessary variables into my project (reliability of the company schedule, truck and web site pricing for example).
Lesson 5: You may not know ALL of the risks ahead of time, but you CAN minimize them by limiting your unknowns.
When Sunday evening did come, I could say that I had met my goal of having a roof in place. Unfortunately, the job was far from done. The rain storm that had hit meant I had to clean out the garage and I still had a truck load of roofing to take to the landfill. It turns out "done" really meant that the only change to my property was a new garage roof - definitely not the case on Sunday evening. I could have blamed the rain for not meeting my goal but that would have done nothing but assuage the problem. The rain had only changed the actions necessary to attain my goal not change the goal itself.
Lesson 6: Make sure that everyone on the team clearly understands what "done" means.
When the rain started coming down, I looked at it as a bad thing. But it forced me to go through the "features" of my garage - spare sheets of drywall and scrap lumber for example - and make some decisions on them. Removing these features made my garage a more useable space. The irony of course, was that I considered rain a risk not an opportunity.
Lesson 7: Beware of bloat
Lesson 8: Look for the opportunities in setbacks. Sometimes they can contribute to the success of the project.
Just a note that I'll be doing my "Getting Started with IronPython" talk at the Great Lakes Area .NET User Group in Southfield, MI tomorrow night. I'm always glad to go back to GANG since this is where my User Group career started before I moved over to the Ann Arbor .NET Developers Group. Come out and learn about one of the new .NET languages while networking with local community leaders. I Hope to see you there.