Wednesday, October 27, 2010

One Time Software

Scott: I'm having trouble with a programmer. As a programmer, he does really well. As a salesman, well, not so much.

Narrator: What do you have him selling?

Scott: He sells his time - his programming services. We consult with small and medium size businesses. My programmer sells his skills for their IT projects.

Narrator: And how do you bid these jobs?

Scott: Well, the programmer talks with the client. Then he estimates the project size. And we quote them a price.

Narrator: I see your problem. It has many causes. And one good solution: iterative programming.

When you quote an entire job, start to finish, you just pit the programmer against the client and sales people. Every project becomes a battle. The customer you so desperately want to help is your enemy. Or it feels like it, anyway.

Iterative programming gives the client control over spiraling costs. At any time, they can say enough. Because every iteration provides working software, you reach a stopping point at regular intervals. The programmer doesn't hide in a cave, running up your bill, until they have a Mona Lisa.

The programmer, on the other hand, has a definite agreement on what the client expects. You see, the client, the programmer, and everyone else involved decided what pieces work by the end of the iteration. The programmer can tweak those pieces to his heart's content. The plan focuses his effort.

This problem boils down to communication. I finally made the connection between my monthly budget and how I write software. Time is money. We follow a written plan with our money. It starts with a perfect month. In the ideal life, how would our money divide out each month?

Then we ignore it. Each month gets a budget based on what we'll actually spend. See, life never happens according to plan. Rather than force life into our shape, we plan for change. Iterative development does the same thing.

You start with an ideal plan. That plan does not reflect what actually happens. It only shows what can happen. The ideal keeps everyone grounded in reality. With a budget, it demonstrates that you live within your means. With scheduling, it means you can deliver what you promised.

Then each month - or iteration - you plan what actually happens next. This step is the key. The communication matters. You can agree on anything - as long as everyone agrees. Regardless of their role, everyone involved is a person.

No comments:

Post a Comment