resources, our shiny software fails completely, resulting in angry email threads
and finger pointing. At this point, there
is no way to turn back, and we now live
in fear of the next time someone adds a
new application in the network. There
are ways to work around these issues,
but people seem unwilling to do the
necessary work and are only interested
in our group “just fixing the code.” Of
course we can patch and hack the code
to work around temporary problems
in the network, but that does not really
address the problem. Why is it so difficult for people to understand when they
are using a tool the wrong way?
Wrong Way Round
There is probably
a good reason for
your company to
use the code you are
Dear Wrong Way,
Whenever I see people taking one tool
and using it—usually poorly—for the
wrong job, I am always reminded of
screwdrivers. You can use a screwdriver
to drive screws, yes, but you can also
turn the screwdriver around and use
the handle as a hammer to drive nails.
Of course, doing this means you are at
risk of poking your eye out, but, you
say, “I need to drive only this one nail, I
am sure it will be OK.” And it is OK, until the day when it isn’t. Software, being
far more malleable than a screwdriver,
is subject to this extension problem far
more often than physical tools.
There are a couple of ways to make
your point in these situations. One is
simply to let the code break and watch
people suffer. I recommend against
developing an evil laugh or learning to
cackle, as that will give you away. While
this is an enjoyable fantasy, it is not
very practical in a work environment.
There is probably a good reason for
your company to use the code you are
complaining about, and it behooves
you to do what you can to help your
company use it correctly.
Instead of screaming, or cackling,
or pulling your hair out, you can try to
explain to one person, rather than to a
group, how the software works and its
limitations. If you can find one other
person who understands the problem,
that can help you in two ways. First, it
will make you feel less crazy—there is
nothing worse than being the only person who sees or understands a problem. Second, it will help convince others of the correctness of your position.
If you can get momentum behind your
idea, then maybe you can convince
the powers that be to use the system
correctly and within its design parameters. Failing that, at least you will have
someone to commiserate with when
the system collapses again.
Like so many problems in computing, the screwdriver problem is a human problem and not a technical one,
and thus it requires a human solution.
Code that people
do not find a use
for rarely causes
problems, because it
rarely gets executed.
A License to Kode
Coding Smart: People vs. Tools
Donn M. Seeley
Building Scalable Web Services
George V. neville-neil ( email@example.com) is the proprietor of
neville-neil Consulting and a member of the ACM Queue
editorial board. He works on networking and operating
systems code for fun and profit, teaches courses on
various programming-related subjects, and encourages
your comments, quips, and code snips pertaining to his
Copyright held by author.
ACM_DL_SKYSCRAPER_CACMsize.indd 1 5/8/12 3:59PM