Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am a team lead dealing with a programmer with a Bachelors Degree in Computer Science. He has a couple of years of experience and is still a code monkey. Having observed him for quite a while, he is very slow in programming even fizzbuzz style questions. For other stuff, he tries to make do with just tinkering with code or asking for help on programming forums. For scripting stuff he get can barely get by with that, but for our core work of embedded systems using our proprietary toolchains, online forums are not of much help. As a result, he is either very late or incomplete so that I am forced to assign his work to others. When confronted he acknowledges all of this, but he does not know what practical steps he needs take on how to improve.

He gets stuck on issues for a long time, being unable to debug. How to develop his skills to the next level, make him a problem solver, develop architecture skills and understand large systems, debugging skills and make him plan his tasks? In all his annual performance reviews he has never rated high. As his team-lead I have to develop a plan of action in consultation with him.

Asking him to quit is always the last option but I would like to avoid that.

share|improve this question
5  
Sounds like someone not suited to being a developer. –  Oded Dec 3 '11 at 10:38
1  
@Oded Not necessarily, when I first got a job out of school I was intimidated by the freakish amount of code. Code which I did not understand to boot.. I am a master procrastinator and I was scared of breaking code.. After that went away I developed my skills far beyond what I had imagined.. –  mmmshuddup Dec 3 '11 at 10:40
5  
@mmmshuddup - But not being able to code fizzbuzz in 2 minutes after 2 years of commercial experience and a Bachelors in CS? –  Oded Dec 3 '11 at 10:42
    
Ok that's a good point lol.. –  mmmshuddup Dec 3 '11 at 10:44
    
Hi andrew, Programmers is not a career advice site: it's way too broad a scope to be able to tell you how to make your co-worker a better programmer. If there's a specific question about software development you'd like someone to explain to you feel free to ask about that (although it probably would make more sense if your co-worker spent time on SO and Programmers instead). –  user8 Dec 3 '11 at 15:40
show 1 more comment

closed as not a real question by Mark Trapp Dec 3 '11 at 15:38

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.If this question can be reworded to fit the rules in the help center, please edit the question.

6 Answers

While Oded may be right (it was my first reaction too), you could be dealing with someone who hasn't developed a structured approach to his/her craft yet.

If you have the leeway in your projects (and you should have as he is not contributing much by the sound of it anyway and his work is already mostly done by others), team him up with another developer.

Have them work in a pair-programming setup with the weaker developer at the "controls" of the pc and the stronger developer "helping". Make it obvious to both that it is the lesser developer's responsibility to implement/debug whatever you assign the pair and that the stronger developer is "only" there to help him improve and make him more independent. (And if it is a worry, make sure that the stronger developer doesn't have to worry about her/his annual review productivity goals...)

The stronger developer should not/never take over or go into lecturer mode. Instead (s)he should ask questions like: "what do you need to know to go on?", "what does this tell you?", "how can you find out if?", etc.

For the stronger developer choose one who likes to help others and is able to communicate clearly how (s)he goes about his/her tasks. Also pick one whose skills are above his, but not too much otherwise the gap will just be too wide and both will get frustrated pretty quickly (albeit for different reasons).

share|improve this answer
    
Yeah, what you said is spot on. That's almost exactly what I had for those four months I mentioned in my answer. My mentor wasn't paired up with me all day.. it was sporadic. But still, that approach can really make a difference if the person is willing and wants to learn. –  mmmshuddup Dec 3 '11 at 11:01
    
+1 for "Have them work in a pair-programming setup" –  good_computer Dec 3 '11 at 11:16
add comment

When I first got a job out of school I was intimidated by the freakish amount of code. Code which I did not understand to boot.. I am a master procrastinator and I was scared of breaking code as well.. After that went away I developed my skills far beyond what I had imagined.

This is because programming requires tacit knowledge. It's not something that can easily communicated or taught like in the case of an explicit fact. It takes a long time to develop a "know-how" of anything, programming is no exception. I would even say that's the especially in things like programming.

Maybe you can act like his job is on the line (and perhaps it really is). See if that kicks his noggin into gear. If not, then I'm afraid @Oded is right.

share|improve this answer
    
I have already told him that his job on the line. To be honest,on a personal level,I kinda like that guy and would like to help him. –  andrew Dec 3 '11 at 10:52
1  
Yeah that's tricky.. I know a lot of programmers like to say "google it" for everything. (again, forgetting about tacit knowledge).. But I personally had a really solid mentor for about 4 months and that changed my life as a programmer. Maybe he needs some guidance from a good programmer who will teach and not just be like "google it". –  mmmshuddup Dec 3 '11 at 10:56
add comment

well, he needs to read a few programming books and watch tutorials online, i.e. stanford classes. He obviously doesn't have the required knowledge to do programming.

share|improve this answer
add comment

I had a developer on my team who was intimidated by the new code and new language (this was in an environment where you opened a position for a general skill set and eventually got someone assigned, with no real interviewing or input into the selection). He would always procrastinate, and when I confronted him about it, he said something to the effect of "I'm still learning this, so every task is a pain in the ass".

My response: "I'm sorry, but the only way you get past that is to have a sore ass for a while."

As for your problem developer, I would agree with the other responders about hands-on mentoring. Having that second person there will help teach him the processes and ways to think, not to mention taking away the chance to let the mind (and web browser) wander.

share|improve this answer
add comment

This is no different from any manager, dealing with someone who's not earning his keep. It sounds to me like you haven't even talked to him yet. Make that your first priority.

When you do talk to him, don't say what you've said here. It's all vague and accusatory.

Be prepared with a list of specific examples of what he has done wrong or where he has not performed. Be ready to help him. Find out what his concerns are and try to find training courses to solve the problems. As him if he'd be more comfortable pairing with more senior developers for a while. Review his code personally and offer constructive criticism.

Most importantly, do not give up on him yet.

If this doesn't work then you need to take a more aggressive approach. Find ways of measuring the problem. Be very specific about where he falls short of your expectations, given his pay grade, and where he needs to be in 6 months from now. Follow up with 1-to-1s at least once a month (you should do this anyway, for the whole team).

If he doesn't succeed in meeting the targets you've set for him in 6 months, then and only then should you suggest he either take a pay-cut or leave.

One more thing: involve your manager from the beginning. Tell him that you want his advice, not for him to get involved personally. But make sure he's aware of the situation and everything you do, so that you have backing should the employee turn on you, through HR or tribunals or whatever.

share|improve this answer
    
The questions says: "...When confronted he acknowledges all of this, but he does not know what practical steps he needs take on how to improve". That sounds like he talked to the person and it sounds like simple 6-month goals wouldn't help, since the developer is aware of his shortcomings, but doesn't know what to do about them. –  nikie Dec 3 '11 at 15:39
    
@nikie: "confronted" doesn't sound like "talked to" to me. It sounds much like the tone of the OP's message. –  pdr Dec 3 '11 at 21:16
add comment

Talking with him is imperative.

Understanding if he cares about his programming work, if he is interested in it, what is his motivation? Is it a matter of lack of self-confidence??

If he is interested, perhaps buying him the SICP book might help him.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.