views:

338

answers:

9

I've seen many instances of people who are looking for programming assistance to a specific problem but are missing the fundamental understandings that they need. I guess the saying that this would be akin to is "punching above their weight".

I'm sure that most of you have at one time experienced this, the copy-and-paste from the internet approach, people who have only developed enough understanding to find working code and try to piece elements together, finding themselves completely out of their depth when it doesn't work. The symptoms of which are then displayed as poorly formed questions, lack of examples, non-specific error messages, inability to debug or isolate problem areas which makes it difficult to assist.

Previously I've suggested people take a 1 week introductory programming course, or look at a formal education path like Uni, or acquire a good reference book and yet I feel I am unable to adequately articulate the benefits. I have no doubt that at one point most of us have started from such humble beginnings; as such, what guidance or encouragement can I give to such could-be programmers to extend their learning from the tunnelled view that they present when asking questions? Is there something more generic and useful to point people at, to develop this understanding? Or even a few paragraphs I can refer to, articulating the benefits of taking the time to actually learn?

+4  A: 

Quite simply, there are plenty of people who do not want to devote that level of time and interest to the subject of programming. They are quite content to get by and feel that spending hours reading books is pointless when you can just ask somebody else who has read them for the answer to their problem when they do have issues they can't solve via Google/trial+error.

Rushyo
A: 

please, rtfm and then, if you still don't get it, ask me again

Rodrigo
They just ask somebody less 'tetchy' if you do that. And become adverse to the idea of being a good programmer because they associate it with snobbery and consider programmers 'of the pragmatic approach' (heh) to be 'more helpful'.
Rushyo
+4  A: 

The best way is to explain to them what the problem is, hopefully in a way they can understand and show them how to solve it. The key is to do it in a respectful and patient way. Do this enough times, eventually they'll ask you how you got so smart... or not. Once they want to hear what you have to say on the subject, you can actually tell them what you think they need to do to improve. If they don't ask, at least you haven't wasted your breath.

They other way is to become their boss and point out how they can get a better performance review.

tvanfosson
+2  A: 

If this is a co-worker, and they're constantly coming to you for details on how to do their job, there are a number of things you can do. The easiest would be to state that you're busy and for them to come back later. And that you're always busy when they come back.

It is quite possible that your co-worker has learned that it is far easier to get YOU to do the learning than for them to actually learn. I've noticed this to be a severe fault in "beautiful" people as well as in managers. The Eagles song "Lyin' Eyes" explains some of it.

If this is for a blog or forum, and they want you to do their homework, just ignore the post. You can't explain why they should learn in any reasonable amount of time.

Tangurena
I thought Sebastian WAS talking about a forum close to our hearts. I've certainly felt the same way several times in the last 18 days (since I registered).
pavium
You see it here sometimes but that's to be expected; I'm glad people are asking questions as it helps them learn. I need to ask questions too. I just was trying to think of a good way to approach it when the question needs more context or the asker needs more substance in their understanding before trying to tackle that particular subject.
Sebastian Gray
+2  A: 

Exactly right Sebastian, but I don't think you'll get any solution to the problem.

Rushyo is right, too. There are too many people who think programming is easy, and they just want a few hints. How often have we seen TV programs where the nerd walks up to a computer and by (randomly) pressing a few keys, gets exactly the information he or she wants.

The movie industry is no better. The hero finds himself on an alien spaceship and is able to connect to the computer (must have a USB connector) logs in and tells the doors to open.

We need better education about it, the public should see this stuff and recognise it as absolute rubbish, but they don't.

pavium
I'm tired of those TV programs and movies, they give us bad publicity. Listen, humans, we Aliens don't use neither windows nor lynux!!>:(
yelinna
A: 

I find in these situations it helps if you can provide a specific guide to the problem they're having. Give them a link to a useful article or a specific chapter of a text/reference book that is related to the problem they're having, so they can learn for themselves. It's no good just telling someone to go look something up if they don't know where to look.

After they've read up on the problem, let them know they can come to you for help. Having tasted understanding from a source that they've researched themselves, they'll be more able to figure things out or ask further sensible questions.

Teaching is half way between giving the solution away, and giving someone a hint as to the general direction of a solution. So don't do it for them, but try also to give them direction. A general "go to uni" attitude or slamming a thick book down in front of someone will just put them off.

If you can't find a suitable reference, try to pair program the solution with them, explaining things as you go. And then document it afterwards, on a blog or wiki so that next time you can find a reference.

James Wheare
A: 

Throw an introductory book at them...

I'm only half joking! I've heard some real noob questions out of "experienced" programmers.

I try to give them the appropriate term and suggest they research it. In many cases that's all they need. If you don't know what something is called, how do you research it?

In other cases I ask a question along the lines of "Have you tried X?" Usually that gets an "Oh Yeah, I didn't think about that!"

Sometimes while they're off starting their research, I'll find a few good references, because I "just know" that they'll be back. If they return and ask a question that shows that they've tried, I kindly give them the additional information and offer to help when I get a few minutes.

If they come back and act like it's my fault they don't understand something, THAT's when I get the urge to throw the book at them. Maybe at their head, maybe not.

What ever you do, DON'T just drop what you're doing to help them out. Make them wait until you get to a good stopping point and THEN help them. It doesn't do anyone any good if they don't at least try to do some research before you interrupt your work.

Brad Bruce
A: 

I think the best way to tell them that they need to learn more is simply by pointing out the complexity of their problem. I would start answering their question and gradually show them how deep the problem is hoping that at one point he/she will understand that he needs to learn more. Then, it's a matter of a good book recommendation. I would also make sure that the book would be somehow "lightweight" i.e. "Learn X in 24 days" or "X for dummies".

Basically, what I want to achieve is not frighten them but make them curious enough to start by their own since, as Sebastian pointed out, this person is most likely looking for a copy-and-paste solution.

pek
+4  A: 

To answer the explicit question in your post, I suggest you convey the reward of learning to the person asking. Something like "if you read up on graph theory you'll be able answer all of these search questions easily" will make it clear that there's a payoff to be had for the time spent. This alone is often enough to motivate someone who's keen and able to learn, then wikipedia, tutorials and good textbooks can help with the practicalities of accessing and understanding the information.

There is the implied question though, and please excuse my presumptions here, of how to deal with people who keep asking you questions. It's your decision where you want to draw your boundaries on this one, a firm refusal to help (which may need to be repeated) will keep reasonable people at bay if you need space from them. The broken record technique is a good starting point on how to say no without being rude about it. I agree that there's no need to alienate or offend to get your point across.

There could however be something more to the repeated requests than people just being lazy or trying to take advantage. If it seems to you that someone does want to learn but is limiting themselves by not tackling the underlying issues, you might like to consider psychological resistance as a way of understanding what's happening. If someone has the conflicting goals of wanting to learn but getting some gain out of not learning, this can severely inhibit them.

And finally, with Hanlon's razor in mind I suggest this last, there may be hostile factors behind the repeated questioning. If you don't want to engage in 'politics', the broken record is often a 'good enough' technique to manage these. The repeated questions could be taken as a signal to at least examine what may be underlying them, and respond mindfully.

Ollie G
I know this is marked Community Wiki and all but this feels like most complete answer to me and outlines an approach which could be followed in most situations. Thanks for the suggestions.
Sebastian Gray