There is much clamor over this article, “Software Engineering, an idea whose time has come and gone?”, by Tom Demarco. I love it. At work, I know a manager who has the tag line “You can’t control what you can’t measure” posted on his office door. It’s always given me the heebie-jeebies. Tom hits one of the main points right on the head, that it implies “that control is an important aspect, maybe the most important, of any software project”, But as Tom admits, “it isn’t.”
The other half is the how it plays together with the the "What isn't easily measurable, doesn't exist" rule. Tom sees this too, and describes it like this:
“Now apply “You can’t control what you can’t measure” to the teenager. Most things that really matter—honor, dignity, discipline, personality, grace under pressure, values, ethics, resourcefulness, loyalty, humor, kindness—aren’t measurable. You must steer your child as best you can without much metric feedback.”
I don’t fully agree with his prescription, to require the product team to be ready to ship in any given week of development. Like the original guidance, there is a kernel of truth here, but an overreaching of application. There are many good reasons to pursue a “ready to ship” strategy, but you need to be flexible. You need to accept that there are some tasks that will break that goal. You cannot replace important subsystems without causing at least a bump, and sometimes you need to do that.
If you have the goal in place, but are flexible, then you can create a branch, do most of the work there, and once it reaches a certain level of maturity (no longer experimental), integrate. Integration will cause some pain, on both sides, and you have to balance between disruption to the mainline team, and your ready to ship goal, and the probability that if you insist on zero mainline pain that the branch may never merge.
But anyhow, though it sounds like a prescription, Tom says it’s an example, and as an example it’s perfectly valid.
Like raising a teenager, when you have important things, that aren’t easy to measure, what you need is trust. You need to be able to trust that your team understands your motivations, your goals. They need to be able to trust that you will treat them fairly if they help achieve those goals. A ready to ship strategy is just an example of “don’t do anything too crazy”. It can help build trust because management can visibly see progress, and because hopefully when management sees that they say “thank you”.