Why Can’t Software Development Be More Like Sports?

In today’s sports (baseball, football, basketball, hockey), a team signs a contract with a player for a specific period of time (3 years, 5 years, etc.), and at the end of the contract, they are completely free to part ways.  In some cases, if the player did well during his contract, his current team might offer him a contract extension.  However, if the player did REALLY well, he might opt to test out the “free agent” market.  (Really well is relation to a specific set of requirements that are laid out in the contract.  All-star game appearances, batting average, touchdowns scored, goals made, etc.)

In the free agent scenario, the player declares that he is willing to offer his services to what basically boils down to the highest bidder.  At the end of the day, however, he gets to see what the market determines his value to be.

Imagine this scenario in your current job, even if you’re not in software.  When you start a job, you know that you’ve committed to be there for 3 years.  That’s an absolute.  Perhaps there’s even financial penalties if you choose to leave before the end of the contract.  And if the company decides to terminate your contract?  They still owe you the balance of the contract’s financial obligation.

(This entire article revolves around the idea of honest, hardworking employees, so let’s skip the “trying to get fired” argument for now.)

At every place I’ve worked, there have been all-stars, and there have been everyone else.  But when you look across the financial landscape of the company, there’s almost no significant difference between the high performers and the rest of the crew.  Why is that?  If someone is putting in significantly more effort, why shouldn’t they be compensated accordingly?  If they are driving significantly more business value, why not pay them more?

There’s the challenge though.  Can you sincerely tell me that you know exactly what you’re measured on annually, and what percentage of your goals are completed?  I don’t think that most companies give that much consideration to their employees.  And for you, how can you expect to get any kind of raise/promotion/bonus if you can’t show your performance vs. goals?

I’m sure there are tremendous downsides to contractually-based employment.  Many of you will bring those to my attention in the comments. I’m just suggesting that there be a more open market in our industries. A free agent athlete declares that he is a free agent, and all of the other teams begin a bidding process for his services. In our industry, you have to secretly meet with each individual "team", and negotiate a possible deal in each case, all while hoping your current team doesn’t find out you’re looking at all.

To close, no, I’m not looking for a job.  I actually love mine.  But as I look at my friends & family trying to play this silly game of hide & seek, it really frustrates me.

8 thoughts on “Why Can’t Software Development Be More Like Sports?

  1. I do think the business of “secretly meeting with each team” is stupid.

    But, the free-agent analogy ignores the fact that what athletes typically negotiate is *minimum* compensation. You can bet a hitter with a .350 average and/or a pitcher with a 2.0 ERA are busy renegotiating their contracts … but the team doesn’t get to do the same when a player is having an off year. So we get these players making millions of dollars per year and many of them only put in any real effort when their contract is nearing the end of its term.

  2. I’m not sure about where you live, but Utah is a Right-To-Work state, also know as a right-to-fire state. There is no guarantee of 3 years, you can quit or they can fire you at any time so long as it is not discriminatory.

  3. Not in the tech field (as you well know), but I know this feeling. And it’s not just contractual work that has those downsides. I have managers (who unfortunately have NO say in my wages) who either are ecstatic I’m on their team, or want me on their team because they’ve heard how much work I bust out to get our accounts cleaned up.

    But the people who decide if I get a raise 1) insist “there’s no budget for raises” (my raise apparently went to the new ice machine we didn’t need, and probably the bonuses of a few upper management types – we’re taking on tons of new clients all the time and I know how their fee scale works so they are making more money than ever, just don’t want to share it) and 2) judge performance ONLY based on calls per hour. For which there are a few problems… first being that I often handle multiple issues on a single call, and have found that in some cases I can get better results through emails. So my call numbers look lower (but still within the targets, just not the highest) even though I’m doing more work. Second issue being… those numbers can be faked, and usually are. They only check the records of what number is being called if they get a complaint with no name attached, so people call the person sitting next to them, they call a fax number, they call a voicemail, or, so I’ve heard, some of them call the same client 5 times or so, hang up as soon as they answer, then call back one more time to actually talk to them.

    Those are the people getting raises and promotions.

    I’m pretty sure there’s a Dilbert strip (or a hundred) ridiculing this trend in business… I think that place uses those strips as an instruction manual for how to run…

  4. What constitutes good performance? Is it the guy that is in from 7AM to 6PM cranking out “ok” work, or is it the “slacker” who gets in around 9:30, surfs Reddit while he works, leaves at 4:15 and produces twice the output (and ‘n’ times the quantity of the 7-to-6 guy? Assuming that both of these guys are salaried, I would immediately choose the “slacker” over the “hard worker.” How management views it is a different story. Managers (many of them) will choose Hard Worker over Effective Guy.

    Why? Because they look at Effective Guy and say, “gee, he’s really good when he’s focused. Imagine what he would be like if he applied himself from 7 to 6, instead of for the four hours that he’s really engaged.” They don’t realize that even if he did apply himself in that way, and generated something like 10x the output of the Hard Worker, that his compensation would, in no way be commensurate with the amount of work (and quality) being produced. If it was, that guy would be making close to a million dollars a year.

  5. Everyone is their own boss, and is completely responsible for whatever they accept in compensation. Your boss is just you’re sole client, if you choose to have an exclusive relationship.

    This is never more evident than when you start looking at the few folks who actually do make great compensation. I know I’m looking to leave the comfy cube because I’m making the same money as the guy next to me who can’t conceive of the value of data validation.

    I’m trying to find good senior devs in .net for an open position and I can’t find them. I’m interviewing people and they don’t even know what unit testing is, or what N-Tier means.

    I hate to be elitist, but if you know your stuff, it’s not hard to walk in to an interview…or better yet sit down with a prospective client…and make them comfortable with the concept of giving you money so they can utilize software you build/configure/snap together like legos to make their business process faster/better/cheaper/possible.

    Ernie

  6. Nice article!But as an answer to the article’s title I say: why can’t software development be like rock’n’rol/hard rock/heavy metal! 🙂

  7. The fact that you even had to end your post that way speaks to the problem. Why should someone being thoughtful and experimental with an idea have to constantly throw out disclaimers about their happiness with their employer? Ludicrous.

  8. Well, there are a couple problems with the current system. First, so many companies do everything they can to keep people employed even if they aren’t a good fit at all (e.g. “let’s take all these old COBOL programmers and make them .NET developers! It’s more or less the same job, right?”). As a result, you are paying people that are providing limited value. Also, now your good developers have to spend more of their time helping the weaker developers (and potentially fixing their stuff), so as a result they can’t provide as much value. This makes it hard to set goals for the good developers because they don’t produce as much as they would be able to because they have to spend more time cleaning up and helping others.

    I would rather have all strong developers. This sounds obvious, and they might cost more, but they would be able to reach their full potential because they wouldn’t have to do so much hand holding. I’m fine with junior developers or people with less experience as long as they’re willing to learn, because they won’t pull the rest of the group down.

    I know Ohio is a right to hire/fire state, but most businesses don’t really act like it is. I feel like they’re all afraid to let someone go if they aren’t the right fit. But as a result, they say that they want to do all of these great things and make all of these changes, but they hold on to these people that just drag everything down.

    OK, rant over.

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 )

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s