Editor’s Note: The following humor piece by K. John Russell is part of our collection of “classics”– technical communication articles that stand the test of time no matter how many technologies come and go.
I once attended a seminar given by a Vice President for a software development firm. He discussed the business principle time to market. Time to market means, simply, that the sooner a new product is ready for sale the sooner we can make money on it, and the more money we can make overall. We lose money when a new product takes longer to develop.
He used “starting a pizza shop” as an analogy, and he broke down time to market into what he called think time, production time, and distribution time.
- Think time is when you plan out all the things you have to do just to get ready to make and sell the pizza: store front, ovens, employees…you get the idea. (This part of the software development process seems invariably overlooked or ignored.)
- Production time is when you do everything you need to do to actually make and sell the pizzas: you hire and train your employees, you make a few test pizzas.
- Distribution time is when you actually take orders and make and deliver pizzas.
The analogy and the concepts all sounded grand, but I felt there was something amiss: making a computer software program is nothing like making a pizza.
To legitimize the analogy we’d have to say that we’re making every pizza…from scratch. We grow our own wheat and tomatoes to make dough and tasty sauce. And we have a cow, too, for cheese.
Under these circumstances our think time is a nightmare. That’s why we often skip it. The thought of having to sit down and plan out a garden that anticipates every option a customer might order is nothing any programmer I know wants anything to do with.
Management comes to us during think time and asks, “When can you have that pizza ready?” and we say, “Well, if we have good rain this year….” Of course, this is not what management wants to hear, but the truth of the matter is, we just don’t know. Anticipating all of the possible conditions involved in developing an extensive software program is as haphazard as calculating who’s house will be struck by lightning in the next thunderstorm.
Production time is even worse. Production time is when we plant the garden and milk the cow. Ultimately, we compile all these things up and take out the bugs.
But regardless of any other circumstance, and unlike making pizza, production time might well take us six months or a year. And there may be things we have no control over, like the weather! What if we don’t get enough rain? Management shakes its head and mumbles, “I can’t believe it’s going to take six months just to make a pizza!”
It’s often during production time that our first customer places an order: one large cheese pizza. Our efforts are justified!
“That’ll be $21.95, please…and your pizza will be ready in four months.”
(We have very patient customers. Our pizza is really good.)
About three months later the customer calls back and wants to add onions to the toppings. But we’re not growing any onions, and planting them now will delay the pizza a month.
“We need onions,” the customer says. “The shop up the street has onions, and they can deliver….” This is when business sense overrides software gardening sense. “OK,” we say, “we’ll have it ready.”
Onions in a month.
In the software development industry, we call this “feature creep.”
Now, our ovens are hot, our employees trained, our marketing materials carefully placed on every car windshield within a five mile radius…and we’re just waiting for those darn onions to ripen. Management keeps coming around, asking “How about today?” We look, but have to say, sadly, “Nope, not quite ripe yet. Maybe tomorrow.”
In all honesty, we pick everything green.
And when the customer mentions that the sauce tastes funny, we refute: it’s unique! You won’t find sauce like that anywhere!
And when the customer asks why the onions are not even sliced, we cry: feature!
It isn’t a glamorous process. And we cut huge corners–like eliminating think time altogether. But we don’t do that because we’re stupid or incompetent, or even because it’s too difficult to do. We do it because we’re fettered to applying the concept of making pizza to making computer software.
Finally, it’s distribution time, and for us distribution time is a breeze. We just stick that pizza on a CD-ROM and out the door it goes…with the pizza guy.