Agile

Plan To Take It Easy

Bill Shaw

Dwight Eisenhower famously said that plans are useless, but planning is indispensable. It’s important to have some idea beforehand how you’re going to do a thing, after all. High-level plans give us a general idea of how we will spend our precious resources. But planning, like anything else, can be taken too far.

Software development is a human activity, and so it isn't perfect. The well-known waterfall approach to software development tries to lay out a perfect, straight path to the goal at the beginning of the project. We've (hopefully) learned by now that trying to create this perfect plan is a fool's errand. Striving to create the perfect plan up front is a waste of resources. We know that waterfall projects often fail; so often that we perversely take this failure as a matter of course. The plan is often a joke; and missed deadlines are expected.

What’s not often discussed is the negative impact that waterfall-style planning has on people. It creates unrealistic expectations on the part of those who use the plan. Management is ultimately mislead on the scope of the project, with respect to both time and to money. Developers begin to feel under the gun to produce results within the boundaries of the plan. We already know that this can cause compromises in code quality. But what’s just as important is that this often causes personal stress.

The stress that results often pits people against one another; management against developers, developers against developers, department against department. The boundaries of professionalism and respect for one another break down. “Those people in Accounts Payable are idiots!” say the people in Customer Service. Obviously the people in Accounts Payable have a different view. Many times as a consultant, I’ve watched several departments working on the same project play chicken with one another. They know that the plan will fail; that the deadlines will slip. But each department sits back and listens; waits for another department to cry uncle and finally admit they will slip their deadline. Then all the other departments (who were going to slip their deadlines anyway) start pointing the finger. “Those idiots!” An endless cycle of people throwing other people under the bus.

Rigid adherence to an unrealistic plan creates a breakdown in team structure and causes everyone to be less efficient. It promotes an “us versus them” (or even a “me versus everyone else") mentality. It also happens to make people miserable. I’ve seen companies where conflict and finger-pointing is a daily part of the routine. Fear and misery are inevitable byproducts of living under the dictatorship of the plan. You’ll spend a third of your life in the office; is that any way to live?

Agile software methodologies (particularly it’s de-emphasis on big up-front planning) empower people to overthrow the dictatorship. Again, we know that Agile has a positive effect on software development. It also can have a positive effect on people. When change is accepted (and even embraced) as a part of the process, people are happier. Along with the personal accountability that Agile promotes, the culture of the organization must change to allow people to take chances, make mistakes, and be honest. And relax a little. When selling Agile to an organization, of course tell them about how it can reduce costs, increase quality, etc. etc. But be sure to talk about the human component as well. Companies are people after all.

Bill Shaw
ABOUT THE AUTHOR
Bill Shaw, Summa

Consultant