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've just changed jobs and am now working with a junior programmer whose first language is Cantonese. They have a computer science degree but are working in their first programming role after many years outside the computer industry. They have been working for the past two years in almost total isolation and have developed a lot of bad habits.

A fellow contract programmer also speaks Cantonese, but his spoken English is quite poor, is also frustrated by the juniors approach to programming and are unsure what to do. Despite working on projects together in Cantonese the projects over run as the lack of an agreed/reviewed design means they have a merry-go-round of updates until a solution is reached.

Despite gentle verbal encouragement to do so both still struggle to create even the most basic design documents, enter proper check-in comments (i.e. not just 'bug-fix','updates' etc) and contribute at all to the project wikis.

At present the junior programmer doesn't read blogs, books or technical resources. When I ask how they become a better programmer they say they just think more about their own code. They are highly prone to reinventing the wheel with what I can only generously say are uniquely imaginative solutions to well solved problems.

I have tried to explain the KISS principle and SRP to them but I'm not convinced they understand the benefit. I'm sure I can't have explained it very well to be honest. Since I'm not sure if English comprehension is a problem then that is a problem in itself.

Can you recommend ways I can help them when;

  • I can't speak any Cantonese and don't see learning any being effective in a realistic time frame
  • Sending links to resources like thedailywtf.com appears to go over their heads
  • The programming books we've bought remain unread

I've found the following SO questions which might be useful to them but point two above applies;

Are there some programming exercises we could work through together? What tips are there to get some basic documentation created? Are there any Cantonese resources I could point them to?

I appreciate how much easier it is when English is your native language. I genuinely want to help them as much as possible and not judge what could otherwise be perceived as an unwillingness to improve as a programmer.

share|improve this question

migrated from stackoverflow.com Mar 2 '11 at 15:55

This question came from our site for professional and enthusiast programmers.

    
This belongs on programmer.se –  Ikke Mar 1 '11 at 12:12
    
@ikke Do you know if this can be migrated there or should I just post it and wait for this to be closed? –  Dave Anderson Mar 1 '11 at 23:26
    
It can be migrated. It just needs 2 more votes. –  Ikke Mar 2 '11 at 7:22
    
Dave, what eventually happened with these developers? I would love to know if they improved or even you or other's gave up? Was running people at this level Sisyphean? –  Luke Puplett Nov 8 '13 at 10:25

2 Answers 2

Despite gentle verbal encouragement to do so both still struggle to create even the most basic design documents, enter proper check-in comments (i.e. not just 'bug-fix','updates' etc) and contribute at all to the project wikis.

This looks more like an attitude problem than a language one.There's no use in trying to improve them if they do not want to improve.

For example, we also added a required comment on check-in. There are however still programmers who check in with an 'a', 'b', 'c', ' '. And they don't speak a different language.

What can you try to do about it?

  • Keep hammering on the use of proper methods.
  • Try to explain why you use these methods and their benefits. Good developers will be happy to pick it up if they see that it benefits them.
share|improve this answer

I think there are several things you can do, but the general theme is to increase their exposure to different techniques.

This is predicated on the notion that ignorance is the key factor in poor programming skills (assuming a certain amount of intelligence). E.g. Programmers who don't know recursion always use nested for loops. Re-inventing the wheel is usually a consequence of not knowing that someone else already solved that problem.

You can do this with code reviews and make them change what's bad. I find this very effective with my junior programmers.

Something else I've done is to have them give technical presentations. I provide a topic, large enough to be interesting, but small enough to be able to get into real technical detail. The programmers have to do some research into the proper way to do it and it generally expands their knowledge. For example, pick a design pattern and have them give a presentation on it.

If they are unwilling to do it, you could always do the presentation yourself. This will benefit you as teaching is often the best way to learn, but they still get the exposure.

It's all about expanding their toolbox.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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