Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Hypothetically speaking imagine that there exists a coworker that has a very shallow understanding of computing. To avoid stereotyping lets give this coworker the gender neutral name Chris.

Now Chris' diagnostic ability is low and can't figure out the correct IP addresses to set his/her virtual machines to. Chris also fails to merge code properly and overwrites a commit I made fixing something, thereby re-introducing a bug. I let this slide, refix the bug and do not make a sound about it to management.

Given a task Chris either 1) complains that there isn't sufficient information resulting in 2) you provide Chris with inordinately detailed instructions to satisfy 1). The more detail you provide in a list of steps to carry out, the more chance of an error being present in your instructions. Chris gets these instructions, tries to execute them, fails and it becomes your fault because your instructions aren't good enough. How do you deal with this?

share|improve this question

closed as primarily opinion-based by gnat, MichaelT, GlenH7, MainMa, Dan Pichelman Mar 18 '15 at 17:01

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

up vote 18 down vote accepted

Anyway given a task Chris either 1) complains that there isn't sufficient information resulting in 2) you provide Chris with inordinately detailed instructions to satisfy 1). The more detail you provide in a list of steps to carry out, the more chance of an error being present in your instructions.

Having been in both your position and Chris's, I might be able to explain things a bit. I hear you saying that you're giving Chris tasks, but you don't mention involving him in coming up with those instructions. You're probably trying to help him do the right thing, but that's probably not how he sees it. When you're in Chris's place, it's difficult not to think of what you're trying to do as saying "OK, here's your work. Now do your job, drone."

In other words, the solution isn't to give Chris more instructions. In fact, you should give him no instructions. Instead, you should help him come up with a course of action. Once Chris sees his role in the process, he might very well turn into a different person altogether.

share|improve this answer
+1: Really like your last paragraph. It's not really applicable in this situation but I agree that if the opportunity presents, it's a good strategy to adopt. – sashang Nov 29 '10 at 11:29
To elaborate on the "No Instructions" comment from Jason, may I suggest that you actually define the boundries in which this person has complete freedom to perform, and as they progress the boundries expand outwards. So initially, they may be able to write any code, but the alorythm has to be agreed beforehand, and then you review the code with them to ensure they have actually implemented the design - and not something simular. – Michael Shaw Nov 29 '10 at 11:43
you may be a programmer, and I'm sure you're good, but after reading a couple of your blog posts, maybe you ought to be a psychologist or counselor instead :) – NickC Nov 29 '10 at 18:19
@Renesis - I like psychology, but I don't really want to make a career out of it. It's just something I started learning about to help make getting along with teammates easier. Besides that, the human brain is really the most fascinating computer ever built. – Jason Baker Nov 29 '10 at 19:14

Review: "Works well when cornered like a rat in a trap under constant supervision"

(Someone please let me know a citation for the above)

Micro-managing an entirely unmotivated employee is not going to work. The more you spoon-feed them the more dependent on you they become. You need to find a way to motivate Chris so that s/he wants to work. So, here are some tactics (trimmed from this article) some of which I've highlighted as being particularly relevant here.

  1. Consequences – Never use threats. They’ll turn people against you. But making people aware of the negative consequences of not getting results (for everyone involved) can have a big impact. This one is also big for self motivation. If you don’t get your act together, will you ever get what you want?
  2. Pleasure – This is the old carrot on a stick technique. Providing pleasurable rewards creates eager and productive people.
  3. Kindness – Get people on your side and they’ll want to help you. Piss them off and they’ll do everything they can to screw you over.
  4. Deadlines – Many people are most productive right before a big deadline. They also have a hard time focusing until that deadline is looming overhead. Use this to your advantage by setting up a series of mini-deadlines building up to an end result.
  5. Team Spirit – Create an environment of camaraderie. People work more effectively when they feel like part of team — they don’t want to let others down.
  6. Recognize achievement – Make a point to recognize achievements one-on-one and also in group settings. People like to see that their work isn’t being ignored.
  7. Personal stake – Think about the personal stake of others. What do they need? By understanding this you’ll be able to keep people happy and productive.
  8. Trust and Respect – Give people the trust and respect they deserve and they’ll respond to requests much more favorably.
  9. Create challenges – People are happy when they’re progressing towards a goal. Give them the opportunity to face new and difficult problems and they’ll be more enthusiastic.
  10. Let people be creative – Don’t expect everyone to do things your way. Allowing people to be creative creates a more optimistic environment and can lead to awesome new ideas.
  11. Constructive criticism – Often people don’t realize what they’re doing wrong. Let them know. Most people want to improve and will make an effort once they know how to do it.
  12. Demand improvement – Don’t let people stagnate. Each time someone advances raise the bar a little higher (especially for yourself).
  13. Make it fun – Work is most enjoyable when it doesn’t feel like work at all. Let people have fun and the positive environment will lead to better results.
  14. Create opportunities – Give people the opportunity to advance. Let them know that hard work will pay off.
  15. Make it stimulating – Mix it up. Don’t ask people to do the same boring tasks all the time. A stimulating environment creates enthusiasm and the opportunity for “big picture” thinking.

All in all, you could look at the Chris situation as being a personal challenge. You need to think creatively in order to find the solution (asking on this forum counts as creative BTW) so perhaps apply some of these motivational techniques to yourself in light of the resistance you can expect from Chris.

share|improve this answer
Excellent management advice, shame more managers favour the "yell at the work force, blame them for anything that goes wrong and ensure rewards all go to the management" approach. – Orbling Nov 29 '10 at 18:34

I think the point is not to program a robot colleague.

Provide sufficient but brief pointers. Ask him, what's missing if he complains. Either his complain is fair, then you can give him more information or it is unfair and then you can document his incompetence (if you exchange the details via email).

share|improve this answer
+1 for asking him what he needs. Far too often that step is forgotten in these situations. I notice the same with my students: I can give them literally thousands of pages of information, but none of them useful if I didn't get the problem correct. And it sometimes requires a bit of asking and pruning to figure out what they really need. I guess coworkers aren't too different. – Joris Meys Nov 29 '10 at 14:34

either you are enabling dependent behavior, or you are micromanaging; it's hard to say which from the description

so let's find out!

talk to your manager about the situation, and then take a vacation; ask your manager to make sure that Chris has a new assignment while you're gone, and that no one is 'available' to help him/her.

Then see if Chris gets anything done without you.

if he/she does, then you don't need to help any more - problem solved

if not, then your company doesn't need Chris (at least at his/her current level of training/ability) - and your manager will not be able to ignore that fact

share|improve this answer

Don't ever try to spoon feed anyone, in the long run it always backfires (no exceptions).

Keep communication formal at all times, and use email. Copy seniors in the team on the mail exchanges.

Provide enough information for the person to dig in, but no more. This is a job remember, not a tuition service for bickering types.

share|improve this answer

I know, its hard working with people who are not as good as you! but I'm sorry thats life, and as you get better you will find this happens more and more often ;)

However, the best strategy is to identify the areas of technical weakness. e.g. lack of knowledge of TCP/IP, cannot translate a task request into a suitable algorythm, etc.. and then ask the questions, does this person have sufficent skills for the tasks at hand? Does the time taken in supporting and developing this person cost more than their personal output produces? are they learning and improving?

If the net effect on the team over the long term looks negative and there is no evidence that it will improve significantly then you can be sure that your managers will want to know. However, it is quite possible that this person has the potential, but that you are not the person to do the training and support.

I would guess that this co worker is slightly out of their depth, and is not getting the support they need to start being productive. Likewise, you are struggling with this person not being a total geek, and find it dificult to provide support at the right level.

share|improve this answer

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