Friday, June 1, 2007

Compensation

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?