Thursday, November 8, 2007

Unscientific Methods

Every once in a while, you need to <rant>

Some years back, I was a novice programmer on an important software effort. IIRC, it was something like a couple or three dozen coders for six calendar months. There were six milestones, one scheduled at the end of each month. For some ironclad non-technical reasons whose details don't matter here, the project's final deadline absolutely positively could not budge.

Well, you know how software development goes, and we completed our first milestone after two months elapsed. The project manager called a meeting. "Don't worry," he reassured us. "We're only a month behind schedule." I sure didn't see it that way, so I had a discreet conversation with my technical lead.

"Our estimate for how long it would take to complete the first milestone was off by 100%," I said." If our other estimates are similarly off, we're not a month behind schedule. We're six months behind!" My tech lead endured my naivete. He reminded me that we had a talented and hardworking group. The first milestone was just a fluke.

"Well, sure," I pressed on. "But, think like a scientist. We've performed one experiment. It tells us that our estimating process is off by a factor of two. I really think we need more people." It was a big company. So throwing more bodies at the problem didn't seem unreasonable to me. But it was not to be.

We worked hard, put in lots of overtime, and completed our second milestone after two more months elapsed. The project manager was replaced. The new manager gave us the Gipper speech, which pretty much alienated everybody who had been slaving away for the past four months. I now had two experiments supporting my view of the schedule.

As I saw it, the team was now effectively tasked with completing eight months work in two months. I voiced this opinion, a little less discreetly this time. But on paper management's unrevised schedule looked like four months work in two months. Somehow that was more palatable. By being the only one who understood the scientific method, I just couldn't make myself believed.

Now, I know what you're thinking. You're thinking that they really believed me, but they were wearing their special emerald colored glasses that get bolted on when they enter the Oz of management. The deadline couldn't move, so they had to keep up the front that we can get the job done in time. After all, everyone died at Khitomer, because the alternative would be unthinkable.

I might buy that, if it weren't for what happened next.

To make up for lost ground, all the programmers were divided into three shifts, and we were each scheduled to come in for our assigned hours. Being young and single, it was little hardship for me to take 3rd shift. We were all working so many hours, there was quite a bit of overlap anyway.

That approach might have made sense if we all didn't have workstations of our own on our desks. It might have made sense if programming wasn't such a human activity, which thrived on good interpersonal communication among team members. It might have made sense if we were geographically distributed across time zones, and worked non-standard hours to maximize overlap. But none of those things were true.

Dividing us into shifts was like a shiny pocket watch that a hypnotist takes out of his pocket to distract someone, in this case, upper management. I'm pretty sure I expressed this simile to my tech lead, but we were both so bleary-eyed at the time I can't really be sure. If the decision makers could be duped by the illogic of such a bizarre work tactic, they probably didn't really understand why someone who thought like an experimental scientist would call for revising the milestone effort estimates.

At least, that's my hypothesis.

</rant>

No comments: