views:

392

answers:

9

What is the best way to help a somewhat stubborn unskilled team member gain some insight and grow as a programmer?

One of our network administrators has had a long standing desire to take his hobby java programming to a new level. He hasn't been happy with his current job, so being the altruistic guy that he is, our Boss decided to give him a chance and induct him into the development team (we are currently working on a java web app, glued together with seam).

After he completed some small programming tasks it became apparent he has a lot to learn; he had trouble with basic java syntax (how to do for loops, breaks in switches, etc), continually fought his IDE, and lacked Fingerspitzengefühl, the programmer instinct.

Almost every single one of the programmers have tried sponsoring him, which usually ends with them giving up in frustration. he typically takes the hard road, ignoring his sponsors, or stonewalls with 'I've programmed the last 20 years, I've done things with java! its the frameworks, project documentation, not my fault!'. We've tried to be honest with him about his skill, but he takes it as an insult instead, not a chance to learn.

It looks like his short programming career is about to end. He is a really likable guy and if possible I want to salvage the situation.

+9  A: 

Ive been in a similar situation. Now I dont know if this will work for you but this is what I did. I told him we needed to talk and offered to take him out to lunch. While we were at lunch I told him he was a very smart and skilled individual but he still had alot to learn about programming and that the only way to learn was by working with other people and being able to take/absorb/use critiques. Now it wasnt in those short of terms and I gave him very specific examples of his shortcomings. So it was not the most comfortable talk, but throughout the talk I always made sure to let him know I also had confidence in him that he could overcome the shortcomings he currently had. I also did my best to reinforce in him that he must not be the guy that things he knows everything and needs no help, that in itself is a sign of weakness which im sure he is trying to avoid. If he wants to get better he must be a team player and have the attitude of what can I learn today. Its all about attitude, if you can convey to him that you think he can do it and your there to help he should be able to take the advice.

I surely hope this works for you :)

pete blair
+6  A: 

It is not the case that everyone can be a programmer.

Assaf Lavie
+4  A: 

The first question has do they want to improve? Or now that he has a taste of it do they not like it? I have found if somebody is blaming a framework or a language for something they can't do but another developer can it is because they don't understand it.

I would suggest they should read Code Complete that will get them started on what software construction is and how it should be done regardless of language. If they don't want to read the book then being a developer is might not be for them, and they should move on.

I work with a very new and young developer (it can be said they are new to development even though they are not 22). I have found the best way for them is to have them attempt to solve the problem write the code. Hopefully the code works. Then I review there code before checking in, I make comments on everything, for formatting to class design. I do not spare them because if I did they would not get better. I don't tell them that was dumb, but I let them know there is a better and smarter way to solve this problem. They are getting better.

It takes time for somebody that has really just played around with code in there free time to really learn how to develop properly. Which is why Code Complete helps. They have to be willing to put in extra time. I probably spend 60 to 65 hours a week coding. Typically 45 at work, and 15 to 20 at home. I am shocked the more I write code the better I become, even after I have been doing it for so many years.

Most of the developers I work with that do nothing at home to improve there skills are not the best. They curn out code that should be allot better, and have more defects than somebody that puts in extra time. If they aren't willing to put in the extra time they should consider moving back to there old job.

David Basarab
Like the old saying goes... you can lead a horse to water and if he doesn't drink he gets sent to the glue factory.
cletus
+8  A: 

Hm... this is a tough one. It sounds like you've all been both helpful and patient with this guy. I have to say it doesn't sound like he's been programming for 20 years if he has trouble setting up a for loop etc. but setting that asside there are two things that needs to be adressed in this situation:

  1. His attitude
  2. His skills

I think changing his attitude is by far the most important since then the skill will probably follow. My only advice is to either get the boss or someone he trusts talk to him. And by this I mean a sit-down in a separate room so he gets the signal that this is an "official" mesage and not just a chat. He needs to be made aware that no matter what he thinks his skills are lacking and his attitude needs to change. If he is not able to absorb this and change his attitude and in turn absorb some knowledge on the subject, I'm sorry to say I see no other solution than to send him off to do something he is better at...

Sakkle
+2  A: 

I think everyone has a certain "learning path" he needs to walk in order to become a real coder. Unfortunately, each of us comes with different set of skills and attitudes so the paths also tend to start in various stages and branch out differently. Each step of the long walk uncovers the overall horizon a bit further and sometimes even shifts your personal coding paradims and forces you to appreciate and use approachases you considered "overcomplicated" couple of steps before. I think you need to figure out what is the "next step" for this particular guy, which may be quite difficult or even impossible considering the "been doing it like this for 20 years" attitude.

mike nvck
+1  A: 

I am a bit surprised that you are asking this question: I think you have arrived at a logical conclusion on your own. I would let him go. You seem to have done plenty of coaching and shown plenty of patience.

machunter
I agree somewhat, but he does say why he would like to give him another go. It's not always as easy as giving him the boot when it's someone you might know well or care for. Even business ezecutives are human after all :)
Sakkle
See it as a second opinion; This is my first project as a lead developer and I wouldn't want him to become a victim of it.
Daan van Yperen
+2  A: 

Get him to read Peter Norvig's Teach Yourself Programming in 10 Years Give him some personal experience about how long it's taken you to become a good programmer & what you've done to get there.

Nick Kavadias
+1  A: 

If you have someone on the team who is close to his age (or older), perhaps that person could try mentoring him. The "20 years" comment sounds like a dig at your age. Sometimes "more experienced" people resent being coached by the kids on the team.

Jon B
You are right. It has been unavoidable for us, as our whole team is younger.
Daan van Yperen
+1  A: 

Can you simply keep "returning his paper to him," that is, provide very specific feedback and not accept work that isn't up to par? Don't accept his excuses, simply say, "these are the limitations we have (with the IDE, etc) and you have to work within them if you want to work on this project." Don't let him weasel out or blame it on anything else. He must know he's not doing good work if he's getting so defensive and pointing the finger elsewhere.

Also, can you start him with really easy things and let him ease his way into more difficult ones?

Does he get the right feedback? If he can't program a for loop, he should be told this and made to go back, learn how to do it correctly, and resubmit his work.

lynn