A Programmer’s Most Important Job

Many years ago when I was starting out in the world of technology consulting, I was having a conversation with one of my mentors, and he pulled me aside and asked me a rhetorical question: “Fernando, what have you done today to bring $1,200 worth of value to Client X’s business? That is what the client is asking themselves right now, so make every day impactful.”

No One Pays You to Code

I have been developing software for money for almost 17 years and no business executive has ever said to me anything along the lines of: “Your code is REALLY good.  I just love your use of prototypical inheritance!”  Some of you are probably thinking: “That’s because this guy’s code probably sucks. I get that compliment twice a week.”  Be that as it may, business executives don’t really care about the code.  Read that last sentence again.  Out loud.  Make it your desktop background.  Tattoo it on your forehead.  They care about what the software does for the users.  No value for users = whogivesacrap.  Value is relative and varied, but has nothing to do with the software itself, but rather what the software does.  Value can be making money, saving money, entertainment, saving time, cleaning your dining room floor (thank you Roomba), heating your food (hey, microwaves are software too), etc.

I am not suggesting that great code has no value.  It does.  It has tremendous value.  Software that can quickly and easily be modified to generate value for users is worth much more than the cost of creating it.  Great code is easy to modify and bend to your will.  As a corollary, the teams that build valuable software efficiently, are highly prized.

But no one actually pays you to code, they pay you to generate value for their users.  You just happen to code.  If businesses could generate value by sacrificing goats, you’d be in your cubicle right now, wearing an apron, sharpening your knives, wondering when your next goat will be arriving.

Help Your Business

So how do you provide your-yearly-salary-divided-by-the-number-of-days-that-you-work dollars worth of value every?  You try to make your business more successful every day.  How do you do that?  Help the business make decisions that lead to the most benefit for the least cost, and then build it.

At one job, the product owner wanted to mix our invite-a-friend functionality with some gamification concepts.  To build out this feature, it would have taken about three weeks of design and coding.  The team’s counteroffer was to manually email all our users, let them know what they would get if they invited some friends, and tweak our existing invite-a-friend functionality to upgrade members who invited friends.  New timeframe: 3-5 days.  Guess which option the business went with?

We could have built what the product owner wanted, but that would have meant that we couldn’t work on other site features that were also really important (always be thinking about opportunity cost).  So instead of just giving them the bad news, we spent time brainstorming other ideas that might generate similar value for a much smaller investment of our time/money.

In most businesses, you have a fixed amount of money/time/resources to generate value for your customers.  Typically, the value generated from any one feature is unknown, and since you don’t know how well something will work before you try it, you should really be thoughtful when you are investing a relatively large amount of resources on a single feature.  That said, you do have to make some big investments from time to time to build something compelling.  I will write another entire blog post on cost/benefit analysis since this skill is more art than science, and I’ve run across many teams that do a poor job of choosing where to over/under-invest.  In the meantime, work hard with people in your company to help the team make the right tradeoffs.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s