Friday, June 1, 2007


So you would figure that software managers would figure out a sane way to handle compensation for programmers by now. But, of course, they haven’t. Most of them are your average Econ 101 bean counting weenies. I can hear them now, “We can only afford to give three to five percent raises each year, because if we paid everybody what they deserved, then we would be spending too much. And what is it that these programmers do anyways?” That’s why an old co worker of mine told me one day over lunch that the difference between not busting your ass and busting your ass is the difference between a three percent raise and a four percent raise. I think that it should be obvious, even to the village idiot, that a system which creates such a sentiment is destined to fail.

So let’s take your classic example. You have a junior to mid level developer who has been with you a year, and he excels. He learns your business quickly. He fits in with the team. He, even at his junior level, brings a new way of thinking into the mix and keeps the senior guys from making bad decisions. It comes down to review time, and you give him an average review and your standard, crappy, average raise.

But here in lies the problem. He’s worth a lot more now on the open market then he was a year ago. You’ve trained him and brought him along, and he kicks ass. He not only has a good amount of experience in your industry now, but he has a good amount of experience at your company. There is nothing that can replace that.

So this poor guy, who has the head hunters pestering him like crack addicts waiting for their next fix, now has to play hardball. He has to threaten to leave in order to get what he clearly deserves, and no matter what happens, it’s all down hill from there.

Let’s say that you are lucky, and he takes his crappy raise and stays. He will resent you for the rest of his life. He will be a lot less productive. In fact, he’s probably spending most of his days day dreaming about architecting the “fuck you button”. They say that, at some point or another, every man thinks about killing his wife. I don’t know if that’s true, but I can tell you that every programmer who has ever had a regular job has thought about the fuck you button. Thank God that 99.9% of good coders are extremely ethical, because if they weren’t, then we would all be in trouble, but I digress.

A more likely scenario is that this bright young coder will finally break down and take a call from one of the bottom feeders, I mean head hunters, and he will land a job, somewhere else, making what he asked for, and taking all the things that you’ve taught him over to someone else.

Then, of course, you have to replace him, and that takes a few months, and you’ve lost all that good will, in all senses of the word. The good will of your past and current employees who look upon you to treat them right, and the economic good will of a kick ass developer, whose worth far exceeds what you could ever pay him.

And guess what. In order to replace him, you are going to have to pay the new guy as much money as he was asking for in the first place. Plus that nice 15% fee to the head hunter. And now, because you were trying to be cheap, you have to spend even more than what you should have spent in the first place. And God knows, you’ll probably screw it up with this guy too, and thus the circle of life continues.

The whinny little managers now have their hands up like pre-schoolers. “But Charles,” they say. “What if we really can’t afford to pay him that much?” Well, if you really can’t afford to pay him that much, and I mean REALLY can’t do it then that’s where some leadership skills comes in. You explain to him what’s going on. You tell him how valuable he is and how you know that he is worth more. You promise to pay him what he’s worth at a later date, like when you land a new client, and you stick to it. Nine times out of ten, you get a happy coder who stays and works even harder for you than if you would have gave him the good raise.

Don’t you wish that they would have taught you that when you got your MBA?


Ellis Benus said...

Having recently read your article on compensation I was remiss to see you have only two postings on your blog.

I run a small technology centered blog I'm trying to build up and was wondering if you would be interested in writing a few guest pieces for me?

You would receive full credit for your work and it would be a great opportunity for both of us to increase our rankings.

Please contact me at

Thank You!

Unknown said...

You are an angry man. Calling people bean counters and bottom feeders proves that maybe you aren't as mature as you think, and I am sure this attitude comes across in your career. Maybe this is why you don't get such a large raise.

You do raise an important issue, it is more beneficial economically to keep changing jobs, this is the way it always has been, and not just for IT positions.

jrockway said...

He may be "an angry man", but his point is still valid. I've been in this position, and I did indeed leave, and the company I left is still trying to fill my position. Fuck places that can't pay people the going rate. In the end, it's their loss, because there are plenty of jobs around.

Eklavya said...

Man, you rock! Every word of your post is so freakin' true! (except for the wife one).

Ketan said...

> Well, if you really can’t afford to pay him
> that much, and I mean REALLY can’t do it
> then that’s where some leadership
> skills comes in.

No, that's where you realize you don't have a viable business because your costs exceed your revenues.

Justin Kellogg said...


I'm not really into running businesses, but I do believe many companies start off with a negative gain. Just because you can't afford to pay someone what their worth now, doesn't mean you can't compensate them later when you finally get the customers you are hoping for. Look at Microsoft (maybe it's a bad example but it's an obvious one). Their gaming division is still operating at loss, even though it's getting better. They sold their consoles at a loss in order to enter the console market. They obviously expect to start making money soon (through the licensing deals with 3rd party developers), and I think they will.


You may be right that being bitter about the way you're treated won't help your career, but I think with software developers the chicken came before the egg. It's not like we are released from college knowing that we are going to be treated like crap. The original poster maybe angry, but I have no doubt it's for good reason.

As a software developer, I feel lucky that I really haven't been taken advantage of. I know quite a few developers who work their ass off and don't get see an extra penny out of it. It's hard not to be angry.

Charlie Ton said...

You'll get paid $10/hr to take out the trash.

You'll get paid $15/hr to take out the trash and whistle while you do it.

andrewljohnson said...

I agree with your post to an extent, but your premises are flawed, as are your conclusions.

1. Flawed premise - The system is destined to fail.

False - Software is in fact thriving, and developers are paid correctly, because of the market forces you describe.

2. Flawed Premise - Corporate Managers are bean counting weenies who don't know how to properly design compensation systems.

False - Corporate Managers serve the shareholders, who want business done efficiently and a payback on their return. They do not care about your quality of life directly, as long as profits are made.

So, if they can get good programmers and retain them with small, gradual raises, even if they think about the "Fuck You" button from time to time, then so be it.

If you think they don't understand and manage turnover and talent, then you are uninformed.

3. This is the most important part. Programmers are an arrogant, narcissistic bunch who always think they deserve more than they really do. As an arrogant, narcissistic, sometime programmer, I know this to be true. Your derogatory tone attests to your own arrogance. Maybe you make exactly what you are worth.

4. I'd also argue that programmers who want to be paid high rewards for high effort will go work for start-ups, where there is high risk and high rewards. If you go work for some corporate bank or IBM or something, you expect a decent salary, a steady job, and a 3-4% raise every year.

Conclusion: You're right - some people aren't paid what they deserve. But you are also wrong - the corporate bean counters understand the game perfectly - it is your understanding of the dynamics that is flawed.

Some people are counting the beans very carefully, and that's why there are big corporations that can dole out cushy jobs to mediocre programmers.

EmptySet said...

Maybe you'd get a better raise if you didn't have a spelling error in your writing. :-)

timle53 said...

I'm agreeing with your post.

Jamie Hall said...

Get out of my head Charles! :)

My first tech job out of college was basic html/design work that paid only $38k. Less than my college tuition, and 10k less than the job offer I turned down to go to college in the first place. I was way over qualified, but the market had just tanked. After 9 months, I got bumped up to $42k and became a supervisor in my department. Then they learned that I could code, and I started coding PHP, ASP, JSP, and SQL but never saw another dime. At first I was just happy to be doing something that was a little more challenging. A year later, the market had rebounded, and I told my boss I was looking for another job and he asked me if I wanted to give my two weeks notice. I said sure before I even had an offer on the table, because work was getting in the way of my job interviews. He continued to blow me off saying that he would have me replaced in less than a month. (Never happened.)

I had an offer for $49k with a 3 month review before I left. At my review, I got a raise to $59k. Almost 50% over what I was making.

In less than a year after I left the first company, half of the department I worked for moved on to better jobs, the other half was laid off and the department was shut down for poor performance. My ex-coworkers told me "If you couldn't get a raise, there is no way we ever would.", and they all started job hunting soon after I left, without even bothering to ask for a raise.

When I left, that small department was churning over $500k/yr in revenue, and had one of the better profit margins in that company. So, the company owner, who was so worried about cost, cut off the leading growth vectors to his company. I am guessing he did not buy the new Mercedes S500 I saw his drooling over in his office just before I left.

Next time, lay off the lowest performing member of the team, and give half his salary to the leading performer. It cuts costs, and motivates everyone to pick up the slack.

southy said...

"Don’t you wish that they would have taught you that when you got your MBA?"
Harvard did. Classic case - full lecture hall, MBA Lecturer asks these grad students strategies for when business suffers a downturn. First hand up - says downsize/retrench. Lecturer yells at him in front of all these students, abuses and belittles him, yelling at the student to get out. Top of the stairs at the exit calls student back. "How did that feel" Goes through the emotions of hurt, embarrassment etc etc. Lecturer replies, "It feels worse when you have been with the company a number of years, given of yourself then realising how am I going to feed my family, pay my mortgage? What you felt just then is nothing compared to the people you made redundant" The point is simple reflex "solutions" to business problems - aren't. People are your assets not just a dumb factor of production. It's principally the firm's fault - the managers, board when people get laid off, not the workers. Firms must pay by results but the hassle of doing that is not simply the GE % solution. It takes managers who are not mere corporate entities rather individuals who have the ability to understand economic welfare as a relationship between individual and firm.

Tom said...

I guess the main problem is trying to get management to understand the full importance and gravity of what an IT department does for a company. Their MBA mindset (pardon, christiaan) tells them to support the departments that make money and see who is desperate enough to fight for whats left. It's sad, pitiful and pretty god damn lame. But they get away with it EVERYTIME! Why? Because they simply don't understand IT. But tis what it tis.

Good article. Keep it up.

daretoeatapeach said...

It is not only the tech field. I work in publishing. The editors and I often discuss how sad it is to see great employees come in, get trained and move on because they are not making enough money. The woman who has to train these new employees is losing half her work time training new workers.

Unknown said...

Well said Charles,
You forgot one little thing.

This really smart guy sticks around after getting his crappy raise, puts in time and takes his beatings. He learns to be invaluable by learning technology that the other "senior engineers" are not to eager to learn. At that point he gets a better job offer and negotiates for everything he wants + a little extra.

That is synergy.

Anonymous said...

Last paragraph doesn't work for me. I'm a mercenary. You don't pay me what the other guy wants to pay me then I go to his team. I don't care about your dreams or goals. I care about myself and my family. If the other guy's gonna allow me to give junior a brand new PS3 on his birthday and you're're screwed.
Don't look shocked. I've learned to be this way because companies are this way. I've watched a parent company burn the subsidiary to the ground (The one I worked for) not because they lost money but because they didn't make enough money to keep the bean counters happy.I've learned and I emulate. Screw promises. My family doesn't have time for promises. Promises doesn't park a new car in my driveway. Money and awesome benefits are what matter to me. If I want an empty promise I'll lend a bum on the street $50 and make him promise to pay me back.
Money talks and you know what walks.

Charles said...

The Great Hive:

1. This is my whole point. The point of this blog was not to say that we aren’t paid what we should be. The point was to say that there is a business reason for paying people appropriately. I soon left that job and got paid closer to market value. Who wins in that situation? Not me, and certainly not them.
2. They can’t get such programmers. The best thing for the stock holders is to keep good people who know your business. Remember, I gave metrics on what it would cost to lose such a guy.
3. Yes, we are arrogant from time to time, but I’m not. I wasn’t complaining because thought that I was worth more. I WAS worth more, and got a new job to prove it.
4. The company in question was a “startup”.

Charles said...


Well it’s good that they do teach that in some places, because many places are lacking in that area.