views:

312

answers:

6

Our software team is growing and we need to get some focus on developing new features rather than being distracted by supporting our existing customers.

Most of the team would rather not talk with real customers, don't want to travel, and prefer to work on the new features. This leaves us very short of good programmers to maintain the product. We have tried various forms of rotas, scheduling bug fixes and multi-tasking, but these generally fail as we just don't have enough people.

We do have 1 or 2 people who are happy to work on maintenance and support and are happy to travel to customer sites to get the job done. So:

  • How do I recruit some more people like this?
  • Do I need a specific job title?
  • Would anyone apply for a maintenance programmer role?
  • If I don't change the job title will I just get even more people applying who only want to work on new features, or who accept the job and then leave when they decide they want to chase the latest features?
  • Is travelling the world to visit customers and solve their problems seen as a benefit of the role or something people would want to avoid?

Any help or advice would be greatly appreciated.

+12  A: 

In short, tell the truth. Do not try to do the classic bait-and-switch approach of promising something and then changing it once the people is already hired.

There is some people who do like to travel and maintain contact with people around the world (I am one of those). I can imagine some single software developers who would like to travel and visit new places. For some people is a benefit, for other it is a pain.

You might need a new job title so it is clear that the responsibilities are separated. Also, it might help to tell people that you expect them to stick to the job for a set period of time, because training takes a while.

There is plenty of companies that have such departments. Some people want stability, not thrills.

All and all, honesty is your winning card.

Mario Ortegón
I think that its not a job for programmer, any CS grad can do it. Many people like to travel.
01
We already have a team of technical able people who can visit site and perform limited maintenance, but when it gets really tough we need a programmer to resolve it.
Big GH
+2  A: 

If the company environment in general is ok, and your problem is the scarcity of good candidates for a relatively less appealing job, a higher salary is the most effective way to solve it.

A number of good developers will suddenly become interested in talking to customers if this involves a 50% pay increase.

Mention travelling in the ad, otherwise you'll interview lots of married people with three kids who will tell you that they don't want to travel after spending an hour of your time with a brilliant technical interview.

Daniel Daranas
I tend to disagree... pay is not the best of motivational strategies. It will happen that people will move in the new job, and then feel disgruntled stuck doing something they don't like.
Mario Ortegón
@Mario - They have to _understand_ what they'll be working at from the beginning. Also, they should be more or less willing to spend a couple years in it, and they should be aware that more "fun" positions in the company may not be so well paid. After two years, if they want to move, pick a new one. You minimize risks. Of course if the job really sucks that much, the money incentive will have to be really important. I've seen friends get offered much higher salaries than mine just because their job will be to visit far away countries to teach users how to use a boring app.
Daniel Daranas
more pay = more candidates, the majority of which will be useless. But more candidates means there will be more in there that you do want to recruit, you just have to take more time filtering them out.
gbjbaanb
@gbjbaanb - You must be more selective in the process, to rule out bad candidates. The OP talked about scarcity of people so I propose a solution that solves scarcity. He didn't say that his problem is that they keep hiring useless people.
Daniel Daranas
I didn't mean that they didn't, just that he should expect to receive many more CVs (and useless candidates) than expected if he bumps up the pay. If you're used to only getting 5 CVs, to get 200 when you bump the pay you have to be prepared. (been there - interviewed so many people in 1 day that I couldn't remember the first few guys at all)
gbjbaanb
@gbjbaanb "interviewed so many people in 1 day that I couldn't remember the first few guys at all" - then as Joel said somewhere, just make up your mind (hire/no hire) right after the interview. Of course you might rate the "hire" somehow so that you end up with 10 "hire" people who are worth interviewing again in more detail.
Daniel Daranas
true, but it was my first set of interviews (the boss was off that day...) and I tried to do it as responsibly as I could - big mistake, they threw me in the deep end that day and I swallowed a load of water (but, next time I found I could swim!). hire/no hire is excellent advice, don't try to compare candidates, evaluate them against a fixed standard instead.
gbjbaanb
+4  A: 

The first thing you need to do is be honest about the position. I've seen so many positions like these that are advertised as "Technical Lead", "Lead Programmer", "Principal Consultant" and so on. It is what it is and that is "Support Analyst/Programmer".

It's not my kind of work but some people like it. Some companies require their developers to go through such positions before doing new development just so they can learn something about the business and the software before they go messing with it. I assume from the way I read your post that you're not after that though. Don't dangle any sorts of carrots like that if you don't mean it. You'll get the wrong kind of people.

It also comes down to asking the right questions:

  • Would you rather be doing new development or support work? (some people like the variety and challenge of problem solving and short time frame fixes)
  • Are you comfortable dealing with people?
  • Are you able to take the initiative with a poor bug report and find out what the issue really is?
  • Are you interested in learning about our business?
  • What percentage of time in your current/last job do you do support?
  • What percentage of time in your current/last job do you spend talking to clients?
  • Are you happy to travel for work? Some people are reluctant to. Some reasona are valid, like having a young family that you don't want to or can't be away from and some aren't.
  • How do you handle juggling multiple tasks at once?
  • How do you organize and prioritize your tasks?

Travelling is a plus for some and a minus for others. It's important to determine where the applicant stands. It's also important where the travel is (London or Paris is more attractive than, say, Flint, Michigan), how much of the year they do it and how long at different sites it tends to be.

The more travel is required, the more important the conditions are too. I've known companies that will give a dinner allowance but won't pay for lunch of breakfast. Others that will make you pay for everything yourself and then seek reimbursement (and sometimes take ages to do it). If someone is travelling for work, you're paying for their plane travel, taxis, hotel and meals (and probably drycleaning too) and if you make it hard for people, they'll just go elsewhere.

cletus
+6  A: 

Yeah, nobody wants to fix the bugs they put in, get someone else to do that thankless, boring, dull, difficult job leaving your coding "stars" to put more bugs in the next version of your product!

The problem is developer attitude, you need to consider the people who have the end-user in mind, rather than the technology toys they'll be playing with. I find the older developers have the right mindset for this, they're more interested in developing products that fulfil the business need and/or satisfying the customer - so go for the older guys, or at least give this aspect of the role more prominence in your selection criteria.

For the job title, you'll probably get fewer people applying for a 'maintenance developer' role, and those that do may well see it as just a stepping stone to 'full' developer (where they too can forget about those annoying bugs they put in), if so you'll get more juniors which is perhaps not what you want, as the maintenance role requires much more skill than the 'full' developer role. Try a title such as 'product developer' or 'business support developer' or somesuch instead of 'maintenance'.

Travel can be a benefit to some people, so put it in there, then see what the candidate says. I get to go to customer sites occasionally and I like it - its something different than sitting at my desk all the time. I wouldn't like it if it was too regular however, so you have to be honest and clear about the frequency, time away and distance of travel required. Some people will like that, some won't.

I would also say you need to change the culture a little at your place, if you give the maintenance developers a different role they will enjoy the job more - ie. if their job is to fix bugs, they'll get bored/annoyed/fed up. If you make them responsible for the overall quality of the product, even to being able to spec the requirements for new or updated features that the 'full' developers have to abide by, then they have a more rewarding and fulfilling role that is definitely customer-focussed. That will also help keep the main devs focussed on producing code that the business requires rather than thinks they think the business wants. (we're all guilty of that at times).

gbjbaanb
+1 for changing the culture. If your existing programmers are not willing to support software that they created, get rid of 'em :)
Jim Arnold
A: 

You may want to find someone who is from a non-programming background, but is interested in doing some coding: customer support, accounting/financial analyst, graphic designer, teacher, power-user. This may depend on the type of software you sell.

This is also a good step for a jr. level programmer. They can learn your styles and conventions. It's probably easier to do some code review with them by someone who wrote the original code.

I find I don't mind supporting or debugging my own code because I know I can fix it. When I have to support 3rd party software, networking, hardware I get very frustrated. When you can't provide solutions, you're just the complaint department.

Jeff O
+1  A: 

That's very interesting a question.

I was also hired a year ago to do development job with the latest .NET 3.5. Turned out I had to sit with their old 1.1 because the director just lied about that migration plans.

So during most of that time (until recently) I was doing very primitive things within their home-grown framework and the very old technology. In one year during my working hours I haven't learned anything at all (well, a few more buttons on the VS toolbar probably).

What am I about to do? I'm updating currently my resume and going to shop for something else. A pity of course, so much time on training has been lost, it takes closer to one year to get really productive here. But.. it's not my fault right? They had to be honest, or at least after the lie has been discovered to offer a substantial pay increase. Now they will be getting a surprise soon.

To your situation: be honest, don't lie to candidates. It serves no purpose. And if you have issues like maintenance work over real development and travel requirements in your offer you will have to pay for these nuisances. Or people will just be coming in and going out.

User