I've been paying the rent as a professional software developer since the 80s.
I've also worked both full time and part time as a musician for longer than
that. In my travels, I've come to recognize a great many similarities
between programmers and musicians. Both have the fire, passion and soul of
the artist. And all too often, both are incredibly naïve when it comes to
the business end of things. Business - you know, that aspect of your work
where they actually pay you at the end of the day?
Whether you're up
all night banging away at the next Killer App or you're cranking up the
guitar in a smoky bar full of black leather jackets, chances are good that
money isn't really what you're concentrating on. However, contrary to
popular belief, that doesn't make you noble. At the end of the month, no
matter how compelling your art may be, your landlord is only interested in
cold, hard currency. It's just the way the world works. If you don't take
the business aspect of your career every bit as seriously as you take your
art, you're going to end up hungry. And just for the record, I've also done
the starving artist routine. Trust me, it's not nearly as romantic as it
looks in the movies. Give me a fat bank account and a two inch steak any day
of the week. My art's much better when I'm not distracted by the constant
rumblings of an empty stomach.
Programmers by and
large fare much better than their guitar playing brethren when payday rolls
around. Even in the midst of the occasional economic slumps that the tech
industry has weathered over the past few decades, a low paying coding job
beats the heck out of a high paying bar gig. Nonetheless, all things are
relative. If you make a living as a programmer, then you need computers,
software, development tools, research books, and probably an extremely
robust espresso machine. Spare change to tip your local pizza delivery
person is also a good idea if you want to ensure that your pepperoni delight
arrives while the cheese is still melted. All of this requires money. The
difference between a hobbyist and a professional is that the professional
lives off of that money. My best friend taught me that when I was but a
fledgling, wannabe garage band musician, working for free. Believe me,
getting paid is better.
You mean income is a bad thing?
Now here's where
the tale starts to get a little strange. In almost any other line of work,
people who pay close attention to the financial aspects of their career are
simply considered ambitious and motivated, attributes that actually garner
respect in many circles. Indeed, in most industries, making money is a sign
of success. However, when you hang out at the local coffee shop and listen
to the musings of programmers and musicians (who for some reason tend to end
up at the same espresso bars), you'll find that money is not only a
secondary consideration, but that those who pursue it are frequently scorned
by their fellow artists as being somehow less pure in their craft.
referring to a song or style of music as "commercial" is intended as an
insult, one that implies that the songwriter sold their artistic soul for a
few bucks and is therefore beneath creative contempt. You'll find a similar
attitude among programmers. Those who have financial and career goals as a
priority are often held in disdain by the true software artists.
In both cases,
there is nothing wrong with being zealous about your craft. Indeed, show me
someone who has no passion when it comes to their vocation, and I'll show
you a very mediocre craftsman. However, if you're going to be a professional
in an artistic field, you have to master the business aspects just as
completely as you've mastered the creative ones. Failure to do so will bring
dire consequences, not all of them immediately obvious.
Why do you go to work?
First, let's take
a look at why you became a professional programmer to begin with. Sure,
coding is more fun than just about anything else that comes to mind, but you
could code in your spare time for free. In fact, the programming you do in
your spare time is often much more rewarding from a creative point of view
because you're not tied to the constraints of business apps. You can write
the programs and use the technologies that really excite you. So, come to
think of it, why the heck would you want to spend all day writing Corporate
Software that's not nearly as cool as you'd like to make it, when you could
instead spend your time kicking out the really great, bleeding edge stuff
that gets your motor running? Easy. Your company pays you money to write
software, and even if it's not as sexy as what you do in your spare time,
you need that money. Pizza ain't free.
And when you get
right down to it, this really speaks to the heart of the matter. You get up
each day, you shower (or so your co workers hope, anyway), you jump into the
transit vehicle of your choice, and you fight the masses to get to the
office so that you can pursue your day as a professional software developer.
Of course, once you get there, instead of coding, you spend a large portion
of each day dealing with the fallout from unrealistic marketing schemes and
ill informed decisions from clueless managers who think that semicolons are
merely punctuation marks for sentences. You cope with an endless stream of
pointless meetings, interminable bureaucracy, insipid mission statements,
unrealistic deadline pressures and a general environment that seems to care
about almost everything except the cool software you're trying, against all
odds, to deliver. You don't have to cope with any of this nonsense when
you're sitting at home on the weekend, coding away on your favorite pet
project in your robe and bunny slippers. So, tell me again why you spend a
significant portion of your waking hours fighting traffic and wearing
uncomfortable clothes to spend time in an office environment that seems dead
set on working against the very things in life that you hold dear?
Oh, yeah, that's
right. They pay you money to do so. Sorry. I forgot. Really I did.
We're in this for
Now let's clear
one thing up right off the bat. I'm not some starry eyed, naïve musician who
would classify your art as "commercial" just because your primary purpose is
making money. Oh, wait, what's that you say? That's not your primary
purpose? Yeah, right. The word I would normally bark out in response to that
relates to the end result of the digestive process of bulls, but I'm going
to try my best to be a bit more eloquent here. So, let me try to put this
Every single hour
of every single day that you spend in the corporate world as a professional
software developer is driven by one, and only one thing. Money. Get warm and
fuzzy with that, or find another career. Regardless of how passionate you
may be about the art and science of software development, at the end of the
day, it's highly unlikely that you'd spend five seconds of your time at the
office if they weren't paying you to do so. You're there for the money. I
don't make the rules. It's just the way it is.
So, no matter how
passionate you may be about your craft, at the end of the day, you're a
hired gun. Maybe you're a full time employee. Or maybe, like me, you're a
professional mercenary. It doesn't matter. Either way, it all boils down to
the same thing. You show up to code only when people offer to pay you money
to do so. Personally, I find no dishonor in this lifestyle. I deliver the
very best I have to offer to my clients. They offer the very greenest
American dollars they possess in return. >From my point of view, everybody
wins in this scenario. And so, I'm constantly baffled by programmers I
encounter in everyday life who speak from the perspective that only the
software is important, and nothing else.
Really? Is that
true? Then can I have your paycheck? I mean, only if you don't care about
it, that is. Personally, I could find a lot of uses for it. But if the
software is all that's important to you then shucks, let me give you my bank
account number. I'd be happy to assist you in dealing with those pesky
details that arise from the business end of the programming vocation. It's
no trouble. Really. I'm happy to help.
Perspective is everything
Of course, anyone
who has by now labeled me an insufferable wise guy is completely unfamiliar
with my work, be it coding, writing, speaking or training. Yes, this is an
intentionally confrontational posture towards all who bury their heads in
the sand and think of software and nothing but software. In fact, you happen
to be my primary target for this particular conversation. But that doesn't
mean that I don't like you. In fact, it's your very posterior that I'm
trying to protect.
Week after week, I
either personally encounter or hear tales of you, or someone like you, being
trashed in the workplace because you have no grip on the realities of the
business world. You're taken advantage of and work ridiculous hours to no
good end. Your software requirements change more often than your manager
changes his socks. You suffer the consequences of releases that are absolute
disasters because your company refuse to give you the time you need in order
to do things the right way.
You are completely
unarmed in this melee if your only response speaks to the needs of the
software. To your complete surprise and dismay, you'll find that nobody
cares. Consequently, you're ignored, your project suffers an ill fate, and
the skies just aren't as blue as they could be for one simple reason. You're
trying to solve the right problems, but you're speaking the wrong language.
And so, you lose. Over and over again.
A simple strategy for winning
So do I have all
the answers? Yeah, probably, but that's another conversation entirely (and
should you doubt it, you can always take the matter up with our local attack
Chihuahua - he has very strong feelings about such things). However, in this
particular case, what you should really be questioning is whether or not I
have a perspective on the software business that will help improve the
things that you truly care about in our industry. And by the strangest of
coincidences, I just happen to have some of those as well. But then, I guess
you saw that coming, didn't you?
I've been known to
talk for hours on end about the specific tactics that we, as professional
software developers, can employ to ensure the delivery of a Really Cool
Software. In fact, you could say that it's my stock in trade. Today,
however, my message is much, much simpler. I'm not talking about bits and
bytes here. Okay, in fairness, I never spend much time at all talking about
bits and bytes. You guys already know about that stuff, and you don't need
me to teach you how to code. What I am talking about, in particular, is
perspective, and I deem it a critical issue. In fact, I'd go so far as to
say that if you don't have the proper perspective, you're screwed, and so is
So what's the
perspective that I'm promoting here, and how will it help you? Just like the
title says. This is business! Forget your technical religions. No one cares!
Never mind how cool the app you just coded is. Nobody wants to know! Really!
The people who are in a position of power and have the authority to
influence the quality of software you deliver live in a completely different
world than you do. Until you come to terms with this one simple fact of
life, you're going to bang your head against the Corporate Wall for the rest
of your career. And worst of all, the software you deliver will suck! Okay,
maybe not suck in the eyes of Mere Mortals, but you and I both know that it
could be way cooler than your management will let you make it.
Changing your approach
And this is where
the rubber meets the road. Are you tired of the stupid decisions that limit
the quality of the software you deliver? Are you tired of the ridiculous and
arbitrary deadlines you have to deal with that ultimately result in
software going out the door, with your name on it, that you consider to be,
to put it politely, sub standard? And are you tired of losing argument after
argument over this in countless meetings? Then it's time you pulled your
head out of your, er, compiler! Companies who pay you to develop software
are businesses, and they will only respond to arguments that have their
basis in business! Learn a new perspective, and prevail!
I never use one
word where thirty will do. It's a personal shortcoming. Particularly because
in this case, what I've taken many words to relate can be summarized quite
succinctly. Your job is not about software. It's about business. Grasp this
one simple concept, and apply it in all of your interactions. Every time you
attempt to promote your agenda to those who have the power to do something
about it, stop and ask yourself these questions. Does what your proposing
make sense from a monetary and business perspective? Will the person you're
speaking with see value in it from their point of view? Or are you speaking
only in terms of software?
I realize that it
seems a bit strange to de emphasize technical issues when what you're trying
to do is improve a technical product, but at the end of the day, everyone
else shows up at the office for the same reason that you do. They're in it
for the money, and business is the path to obtaining it. Speak from this
perspective, and you'll be amazed at how much it improves your ability to
deliver the next Killer App. Compared to dealing with people, debugging is
the easy stuff.
About the Author
The Career Programmer: Guerilla Tactics for an Imperfect World (Apress).
Copyright (c) 2003, Christopher Duncan. All rights reserved.