This morning, Bob Marshall directed my attention to an excellent article by Tom DeMarco, Software Engineering: An Idea Whose Time Has Come and Gone? where DeMarco critiques his own writing from the 1980’s and challenges his own thinking, especially on the usefulness of metrics. It’s an inspiring article, and well worth reading.
One wonderful paragraph that leapt off the page to me is this:
So, how do you manage a project without controlling it? Well, you manage the people and control the time and money. You say to your team leads, for example, “I have a finish date in mind, and I’m not even going to share it with you. When I come in one day and tell you the project will end in one week, you have to be ready to package up and deliver what you’ve got as the final product. Your job is to go about the project incrementally, adding pieces to the whole in the order of their relative value, and doing integration and documentation and acceptance testing incrementally as you go.”
This is a utopian idea: Software development without deadlines. It’s a whack to the side of the head. We are so locked into the idea of date-driven development, that even the Agile movement promotes this concept. Drive by date, we say, not date and scope. Good advice, for sure, but DeMarco goes one step further: Drive by value.
If developers came to work each day, committed to focusing on the highest value, according to the shared vision, and to building the best increment possible towards that end, then surely the release date doesn’t matter. In all likelihood the customer will receive a valuable product ahead of expectation.
There is a well known metric in the software world: 20% of the product will be used by 80% of the users. Open—and ongoing—dialog between developers and customers will unearth that likely 20% very early. Thus a product can be delivered in one fifth of the time it would be if we built everything. And four fifths of the users will be happy. And maybe that’ll be good enough. After all, the ROI on the remaining 80% is going to decrease dramatically.
I’ve been on deadline-driven projects. It’s painful. And scope always drops, even if that is not the intention. Developers scramble to complete things, working nights and weekends, quality goes out of the window, testers are overwhelmed, product managers panic, executives bluster, accuse, and threaten, tempers fray. And the majority of the time we still miss the “deadline”. Interesting word. Who, or what dies, I wonder. Engagement is a common victim, friendship too, kindness, compassion, integrity, trust, quality… the list goes on. Death by deadlines.
Tom DeMarco is one of the leading thinkers in the software world. He challenges everything, even himself. Tom DeMarco, though not explicitly promoting Agile, may actually be the ultimate Agilist.
And for a slightly tongue-in-cheek closing to this post… when you need an integrity check, ask yourself, What Would Tom Do? And then inspect, introspect, confront, risk, fail, learn, and adapt accordingly.