Pro
Developer
This is
Business
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.
Among musicians, 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 the
money
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 another way.
Rubbish!
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 your project.
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
Christopher Duncan,
President of Show
Programming of Atlanta, is author of The
Career Programmer: Guerilla Tactics for an Imperfect World (Apress). He can
be reached at mailto:Chris@ShowProgramming.com?subject=Pro
Developer.
Copyright (c) 2003, Christopher Duncan. All rights reserved.