There have been a couple of notable lists written past year about how to get and keep talented developers — first Joel Spolsky wrote A Field Guide to Developers, and then Rob wrote Nine Things Developers Want More Than Money. They both agreed on Rob’s titular point… money is one of the last considerations that most highly skilled developers want. They want to know they’re being paid fairly, but as long as their pay isn’t too far off of what Salary.com says it should be (or they’re getting a stake in the company), then they’re fine from the money aspect. Those two posts go into a lot of detail about how to build an environment to attract great developers and are well worth reading, but I think they both left something out that I’ve seen be lacking for many of my developer friends: managers interested in helping employees develop their own careers.
First, a couple of examples. A friend of mine was doing DBA stuff for a reservations company, and had been for four years. He was generally happy with the job (and had gotten excellent reviews, was liked and respected internally), but was getting restless — four years of Foxpro will wear on anybody. So, he started a conversation with his manager and told him that he felt that he had done as much as he could in his current job, and wanted to talk about other areas that he could grow into — picking up a new language, starting towards a managerial path, etc. His boss was shocked, and told him that he needed him right where he was, and not to worry about “things like that”. The manager followed that up with what has become one of my favorite examples of managerial indifference:
“Just because we haven’t given you a promotion in four years, doesn’t mean we won’t ever promote you.”
That conversation ended with the employee giving notice.
Another friend of mine was working for one of the big telecom companies, and at his annual review noticed that his manager had once again written “Grow in current position” on his review. He asked the manager, “Here are the things that interest me. Where do you see me going from here? What do you think my next position could be in a year?” The response? “Well, I’ll retire eventually — maybe after I leave, you can have my job.” My friend didn’t quit right away, but that was the point when he started drifting away from the company.
So what should you do? Those two lists are a great start, especially making sure developers have interesting work — bored developers leave. More importantly, though, every developer you manage should feel like one of your goals is to help him achieve his goals. First and foremost, that means that you should know what your developers want in the first place. Managers, here’s a quick test: Think of each person you manage. Now, for each person, create a ‘dream job’ for them — no matter how improbable, just focus on thinking of a position or project that each of them would kill to have. For the ones you could think up a job for… it’s good that you know what they want. Hopefully you’re already working with them and trying to get them moving in the right direction, whether that’s through training, additional responsibilities, coaching, whatever.
The people you couldn’t think of a dream job for… well, that’s probably because you never asked what they wanted. By failing to ask, you’ve communicated to them that you don’t care about their personal improvement. You may be giving them kudos and bonuses, but that’s just a reward for the work they’re doing right now. When they lean back and think about where they want to be in a couple years… well, there’s a phrase that’s pretty common amongst employers: “Up or Out.” That’s every bit as true for the employee. When they think about how they want to develop their career, there’s two main choices: improve within the company or find a new job. If your manager has been indifferent, or even worse, negative about helping you pursue your goals, then you probably won’t even bother trying within the company — and the new job will likely pay better anyway.
On the other hand, if your manager is working with you, is interested in knowing how you want to improve, and is not just paying it lip service but is actually taking steps to help you get there… then you’d be crazy to leave. I’ve had managers who didn’t really care before, and while they were good managers, I never felt the loyalty, the devotion to them the way I did to the managers that would invite me in every few months to talk for an hour or two about where I was, what I wanted, and how to make that happen. Those are the managers that developers kill to work for. Be one of those managers.