Finding the remote
In a recent dicussion with a client, we stumbled upon an analogy for
resource allocation in software development. We had been musing about
the role that technology plays in the delicate balance between laziness
and efficiency, and the conversation drifted to the concept of the
remote control. I mentioned the oft-discussed irony of a willingness to
spend several minutes locating a misplaced remote rather than simply
walking to the device (TV, DVD, etc.) and pressing the button. "But,"
he responded, "once I've found the remote, I've solved the problem; if
I keep getting up to push the button, I'm just treating the symptom
over and over."
That took us directly to a discussion of requirements management, and
the tendency for many organizations to focus on symptoms rather than
root cause. It's typically quicker to fix the result of a
software bug than to fix the bug itself. More specifically, when an
entire application, framework, or platform fails to adequately meet the
needs of its users, it can often be difficult to convince the
stakeholders to invest the time, effort, and/or money to overhaul or
even replace it with something that will. Instead, they choose to live
with - and, in many cases, constantly patch - the inefficient tool that
they already have despite the time, effort, and money that is wasted
by the shortcomings of the tool. They keep "getting up to push a
button" (for example, manually fixing incorrect data) instead of
"finding the remote" (dedicating a resource for a few days to determine
what's causing the data to be incorrect). Put another way, they keep
taking the car into the shop long after it would have been cheaper to
just buy a new car.
I'm reminded again of my philosophy concering a distinction between
"good lazy" and "bad lazy". More to the point, it strikes me as a
distinction between short-term priorities and long-term investment. "A
stitch in time saves nine", so to speak.
How do you sell stakeholders on this distinction? One of the luxuries
of my current position is that I rarely have to: by the time I'm
involved in the process, I'm typically interacting with folks already
open to suggestion on how best to obtain value from the services we
provide. That helps to facilitate discussions on which changes to an
application would best improve performance; which template/element
inheritance hierarchy would best improve maintainability; which
additional Lotus software offerings would most empower their user
community. While our recommendations may not always be accepted, the
nature of being the "outside help" is that someone has already decided
that an investment now may pay off later. But I'm curious: for those of
you who have to make this case "from the inside", what arguments have
you found to be most effective?
|
Finding the remote
|