The human factor
Businesses are run by people, and people all fall prey to the frailties of
human nature. When considering the matter at hand, the people in question are
known as management, and they are no less human than the rest of us, no matter
what speculation you might hear from programmers when hanging out by the espresso
machine. That means that decisions aren't always made for the most altruistic
of reasons. Every person has their own career ambitions, their own vanities
and ego, and their own personal agenda.
Furthermore, they're spending someone else's money, a point not to be taken
lightly. I can assure you, if the money were coming out of their personal bank
accounts, you'd see an entirely different set of priorities. Instead, this money
just isn't real to them. Rather, it's an abstract set of figures on a spreadsheet
simply referred to as "the budget". I'm making a point of this because
if you expect that mentioning the financial consequences of the decisions is
all that will be necessary for the logical mind to see things your way, you're
in for rapid disappointment. This isn't their money, and it's too difficult
for them to translate it to the impact on their personal paycheck. It's not
like they spent the family's savings on a red sports car and have to explain
the decision to their significant other.
This sort of waste and history of project disasters would never happen if the
techies were in charge of the decisions. However, before we get too proud of
ourselves, it's worth pointing out that it would be due to a completely different
motivation than making the company money. Programming is our art and our passion.
We just couldn't bear the thought of pouring all that effort into our latest
masterpiece and then simply tossing it in the waste bin. We're emotionally attached,
and it also goes against every logical bone in our bodies. There's only one
problem. We're not in charge.
We've all had the experience of arguing with our superiors until we're blue
in the face, trying to explain why the technical direction they want to take
is either completely pointless or disaster waiting to happen. If you didn't
have the conversation out loud, you certainly had it in your head. Either way,
the end result is all too often the same. We're either patronized because "we
don't understand the big picture" or we're simply told, effectively, to
sit down and shut up. And so, given that we work for others, in the end it's
our job to do what we're told. Disaster ensues, the project dies or is swept
under the rug, and then here we are in the conference room again, having exactly
the same argument over yet another doomed project. I often get visions of the
Flying Dutchman.