views:

1179

answers:

14

How do you handle a programmer who is on your team but is extremely ineffective and ends up wasting the time of the rest of the team.

I don't mean lazy, but I mean a person who has such weak problem solving skills, that they require a lot of hand-holding to get them to complete the simplest of tasks, that even a student fresh out of school can do with one hand tied behind their back.

This person is a very nice person, who is genuinely trying. We try to give them all of the resources that we possibly can for this person to improve, but they simply just don't "get it".

We don't like to throw people out, and we genuinely want this person to succeed. Have others encountered this in their career? How do others handle this sort of situation?

+5  A: 

Find some simple regular activity for him that will not require high problem solving skill.

Then try to gradually change the tasks to those that require more problem solving. If he copes - fine, if he doesn't - go back and try later.

Even if he never improves I'm sure that you can find some job for him that he will cope with and that will be beneficial for the project.

sharptooth
+13  A: 
  1. Find out what talents he or she does have. Everyone has some sort of talent.

  2. Figure out how your company can use that talent.

  3. ???

  4. Profit. :)

Tim Matthews
3. ????4. PROFIT!!!!!!!!!
Daniel
The talent may be to improve code by staying away from it.
JesperE
+2  A: 

Reassign him to be czar of the all important developer documentation.

Glenn
You cannot write documentation effectively unless you understand what is being documented very well...
Hosam Aly
hahaha "czar"...
Roberto Sebestyen
You might as well fired the person if you do this (unless the person want this job.) You are ruining his/her career because you are not develping the person technical skills (i.e. your current job is an audition for your next job). Writing documents and not coding does not help. Plus, the person joined to develop software, not write like a novelist so he/she will eventually get bored to death and feel poorly treated/underutilized. That is a horrible way to treat any employee (and makes the discrimination lawsuit easier.) This comment is not funny to me.
Phil
I don't know, Phil. If I had to choose between being fired with cause or getting moved to a subordinate position where I can start my job search while still employed, then I would choose the latter.
Glenn
+11  A: 

I have run into this before a few times.

One time we gave the developer assignments as a white-box tester. Eventually he gained the coding chops he needed to be a positive contributor. (Sometimes people find they are more attuned to QA than development, and there's no shame in that either. We need all kinds.)

Another time, we tried white-box testing. We tried assigning him a mentor full time. We tried classes, but eventually he was costing the rest of the team a lot of productivity. He was a nice guy; everyone liked him; but after a year of trying to make it work, we had to let him go.

Cameron Pope
Not to mention that testing is HARD!
Arafangion
Hmm...this is what i'm afraid of... I wish there is some way to avoid the eventual "letting go part" :-( Its both frustrating and sad at the same time.
Roberto Sebestyen
If he can't program, he can't be a programmer, he will go elsewhere for the programming job and get fired again. It is up to him to realize that he will not be a programmer. You can help him by finding him another non programming task.
Josef Sábl
Letting go is painful but it's best for both people if it's not be a surprise. It's good to have a candid conversation about his performance, how you'll help him improve, and what happens if he doesn't. But you owe it to the rest of the team.
Cameron Pope
+6  A: 

Well, it might not be the answer you're looking for, especially since he's a nice person, but are you in business to hold hands or in business to get projects done?

Bob Somers
short answer: I'm in business to get things done, of courselong answer: working with nice people makes everyone's life more enjoyable. And if that person is really a liability in the team, isn't he generating some resentment and frustration?
DonkeyMaster
But is he so nice a person that it makes up for the negative drain on the other team members? At what point do the stars on your team start to resent you mollycoddling this guy and start looking for other opportunities elsewhere?
jmucchiello
Tom DeMarco wrote about this kind or role in a team in "The Deadline". A catalyst that ensured that team morale was high, even though the persons did not do very much. The person was moved from team to team, had "minor assignments" with each, and spent time talking to the different team members bringing them together. Once a team had person-issues, the caralyst was brought in and "fixed" whatever the issue was. I am unsure if the person in this thread is a catalyst, but different roles including "people-persons" can be considered in teams that has a certain size.
sonstabo
+3  A: 

Sometimes you have to let such people go. They simply cannot do the job they were hired to do.

I saw this first hand in a previous job. We were a very small software house and we were looking for additional programmers. This guy interviewed well, IIRC, and was a nice person, but he did not have the mental abilities to program our application. At the time, we were (experimenting with) pair programming and for that to work you need people at nearly the same level. So it only took a week or two to realize he was just not suited to the job.

He understood. He'd been getting frustrated, too.

staticsan
+9  A: 

All of the suggestions here are good.

If you are interested in this person, you have a duty to be honest with him or her. Tell him that although you and the team likes working with him, that his poor performance is hurting the team. Offer assessment on each of the things that you have tried to improve the situation, and ask the subject how they believe each of those things went.

At the same time, you have a duty to do what's right for the rest of your company. If your teammember is not able to contribute in a positive way, in spite of all their effort, you will need to cut them free.

Honesty goes a long way, especially when there's a clear and obvious way that you show that you're actually trying to fix things, rather than putting the burden solely on the subject.

If you are up front, then this person may realize that perhaps they should consider other options and might find another opportunity before you get the chance to (really, are burdened with) laying them off.

As far as what you should be doing for your team, you should be taking care of your best workers, not your worst. That is very hard to do, but its definitely the best. Your time will be spent where it does the most good, your most productive will be made even more productive, and the (pardon the expression) losers either rise to the level where they meet the example set by their peers, or just fade away.

TokenMacGuy
and you'll probably be doing a favor to the person who leaves, too. He can now pursue a career in a more fulfilling domain.
DonkeyMaster
Good answer. But the person also has to be capable of accepting the truth when you deliver it. I knew a "nice guy" type once that was clearly not suited to quality programming. The problem was that he refused to accept that he was sub-par. Then things get uncomfortable for everyone.
Bernard Dy
@Bernard Dy: Any worker, good or bad, that has a hard time accepting and responding to criticism is probably not a good choice. A star worker that cannot handle criticism is just or bad (maybe worse) than a mediocre one that listens to his team passionately.
TokenMacGuy
+33  A: 

I had such an experience where one of guys in my team was a complete non-performer. He tried very hard, would put in more hours than others, wouldn't take breaks and was generally much more dedicated than anyone else on the team. However, he was just not able to find solutions to the simplest problems without being spoonfed.

To complicate matters, he was from a very financially underprivileged background and had a family to support. I was aware that he would find it very difficult to get employment elsewhere given his lack of communicative skill.

I also had a few arguments with my management who were hell-bent on firing him. However, I felt that he deserved a decent chance and I was adamant that he be given that opportunity to improve.

I took the following steps to handle him:

  1. I had a one-to-one meeting with him and enumerated his negatives to him. I also told him about his strengths and firmly communicated that if he did not show concrete improvement, I would not be able to convince the management to keep him.
  2. I gave him simple problems at first and coerced him to develop his own logical thinking. I encouraged him to come up with ideas and not to hesitate to voice his opinion.
  3. I gave him tips to improve his communicative skills and be more involved in the team effort. I always tried to make him a part of the team.
  4. I made sure that any work assigned to him was not a show-stopper for the work of the other team members.

It took me six months to groom him enough to be acceptable to the management. He left recently to join a great company. I think of that period as one of my triumphs.

Of course, you should note that not every Team manager has enough time to dedicate to the grooming of one individual. Businesses cannot afford to be emotional and so do not carry dead weight around. However, it is upto the Team manager to recognize potential and nurture it.

Cerebrus
your example seems to be very similar to my situation. I like your story.
Roberto Sebestyen
Well done. You seem exactly the type of fair and reasonable person that everyone would like to work for!
endian
I echo what endian said, credits to you for taking the time to help this person.
Ian Devlin
well done. You are credit to your trade.
Preet Sangha
You are a good man Cerebrus. You example is truly inspirational!
A. Levy
+2  A: 

Unfortunately, a poor performer brings down the morale of the whole team. If you don't do anything, your stronger performers might look for work elsewhere - the talented ones can always leave for greener pastures.

You need to get him out of his current role where he is wasting the teams time. You can try training/mentoring/etc., but unfortunately some people just aren't cut out to be programmers. Try to find a role on the team where he can contribute, such as some level of QA, documentation, performing your teams builds and running test automation, and so on.

However, if you don't see him being a positive contributor to the team in the not so distant future, you really need to let him go.

Michael
+1  A: 

I could try really hard, but I'll never play in the NBA. It's a sad story but at some point you have to make a decision, is this a business or is this a group of friends getting together to work on some code? I suspect your boss thinks it is a business.

Kurt
+2  A: 

Make him a tester.

Listen to Stack Overflow Podcast#43

...where Joel and Jeff discuss dealing with incompetent programmers, whether salaries should be public, dealing with technical debt...

cherouvim
Being a bad programmer does not make you a good testor. You're either a good testor or not.
Jeff O
@Jeff O: I agree but it's the most similar thing to programming in order to keep the guy interested and busy. Would you prefer making him a project manager?
cherouvim
Find out what he is more qualified to do. He may make a great sales person. It sounds like you think being a PM is harder than a testor. I just wouldn't limit my options to what seems to be a natural progression: can't hack it as a programmer = testor (which is a lessor position).
Jeff O
A: 

If they are fairly new, keep them focused on 1-2 projects. Not more than 2 otherwise they will become lost. They'll lose confidence and their performance will suffer as they struggle to grasp loads and loads of code. Pair programming at this stage can really bring them up to speed with things as well boost their confidence and performance.

cda01
unless your pair them with another ineffective programmer.
Rick J
+1  A: 

Ineffective programmers can be handled like this:

  1. Try to get them work effectively by working with a task list.
  2. Give a deadline for the task to complete.
  3. Then monitor the activity on daily basis. Try SCRUM sessions where every morning at 09:00 everyone has to tell in 2 minutes: what did you do since last SCRUM session, what are the problems since last session, what are you doing next?
  4. Try to get the team collaborative, define interactive sessions where everyone can learn from eachother.
  5. Critize ideas, not people.
Patrick Peters
+1  A: 

In fact I don't handle ineffective programmers, the resource manager just moves them to a different project.
Moral of the story: Problems are usually not solved they are passed on!

Binoj Antony
Good for you - then someone else can deal with the problem (yes, a bit of irony in my reply)
sonstabo
Not really, since the answer was already ironic. :)
Binoj Antony
Good - I started to worry :)
sonstabo
@Binoj Antony, in large companies and in politics this is so true (if the person is liked or has friends in high places). A good example is the future oil-crisis. The problem is two generatons in the future problem; not ours. It can happen in software too.
Phil
Actually what I mentioned did happen in a company and its also a fact that the people who were moved did not have any friends in high places. The reasoning of the resource manager in this case was that the programmer could have had problems working with the current team members/team lead. So they want to try him out in a different team and see if works out there. Eventually many of these below-avg programmers were laid off during the recession. But they remained employed for almost an year.
Binoj Antony