We live in a non-linear world but it’s funny how we keep forgetting that fact. Eating twice as much for dinner won’t make up for missing lunch. A runner who can do a 4 minute mile can’t do 10 miles in 40 minutes. If it takes two painters one day to paint a room, then sixteen painters can’t do the job in an hour. And no matter how much they might try, nine women can’t have a baby in a month.
So why is it that everyone assumes that Information Technology is full of linear relationships? I’ve seen companies try to cut project time in half by doubling the project staff, only to find that the project takes longer than the original estimate because of all the extra training, coordination and rework. I’ve seen companies cut their support budget by 10% and double their customer complaints. And it’s not unusual to pay for a computer that’s twice as fast as your current one only to get a mere 20% performance improvement.
I think our love affair with linearity goes back to our early schooling, when we were given simple math problems like “If comic books are ten cents [this is early schooling] and John has five dollars, how many comic books can John buy?” Or the old classic “If a train leaves the station at 6:00 PM going 30 MPH, ….”
But where were the footnotes on those problems? Footnotes that should have said “Warning—the real world is much more complicated. Quantity discounts apply. Some items are out of stock. You have to pay sales tax. Trains have to slow at various points on the journey ….” The list goes on and on.
I remember being told in college that every curve looks linear if you look at a small enough segment of the curve. And that’s where we usually make our mistakes: we truly believe there is a linear relationship between two variables, like labor and time, or money and time. Then we extrapolate based on that linear relationship beyond all reasonable expectation. But more labor requires more people interaction and time for communication, and so exponential relationships between labor and time are more common. And more money leads to more justification, more meetings, more red tape, and therefore less effective use of the money.
Is there an up-side to non-linearity? Can we actually use non-linearity to our advantage? I think a lot of the recent software development methodologies are taking advantage of the up-side. Techniques like “extreme programming” and “agile programming” focus on small teams doing rapid development efforts aimed at quick deliverables. Instead of a long drawn-out project, large deliverables are chunked down to a series of small projects, each with its own focused team. In some cases the user function is delivered in phases, starting with a bare minimum, and then with each phase adding a little more function and detail.
Performance on these small team projects is stellar. Deliverables are crisp, and with short project durations there is little scope creep from start to finish. Morale is high — everyone knows what they’re doing, and they focus on the result. The projects move too fast for team members to get bored. Red tape is at a minimum, and because of the small team, communication is easy, and rework is minimized.
Even if requirements are somehow misunderstand at the start of the small project, it isn’t as much of an issue as it would be with a large project, since you haven’t gone far enough in the wrong direction to make it a big issue to change your way. There is less wasted effort in a series of small projects. Compare a large project deliverable to a long sea voyage across an open ocean toward a far away destination. With a large project you only “shoot the stars” to determine your position (sanity check your deliverables) a few times during the voyage, so the currents (the gap between what the business needs and what you think you’re doing) could take you very far off course. With smaller projects you “shoot the stars” with every small incremental deliverable, and so course corrections can be made much more frequently. As a result you’ll waste far less effort by breaking up that long voyage into a series of smaller trips.
The world isn’t linear, but the trick is to make non-linearity work for you instead of against you. The larger the project, the more non-linearity works against you. But use one of the new techniques, break up your large projects into smaller projects, and the non-linearity can be used for your benefit and for the benefit of your company.