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.

Rate

Share

Share

Rate