Sunday, November 20, 2005

The trouble with newbies

Kuro5hin has an article on that most dangerous of creatures, the newbie. As you'd expect, there is no consensus on gracefully dealing with newbies on the internet. Some suggest the good ol' RTFM, others use the "give a man a fish" analogy to encourage going deeper (matched by claims that most people don't care about going deeper, and that all they want is just a solution), and a few suggest simply answering the question or ignoring it. What do we do with newbies? I haven't got the foggiest idea, but walk with me for a bit.

My own newbie phase was fairly classical in structure, in that I displayed all the tells of a newbie with flair and gusto. To me, it is a remarkable reminder of the seemingly exponential growth in terms of technical finesse that I've made, and is always worth reflecting on when I see newbies out there on the net today. More often than not, it still shocks me that I was once very much like them, and I can't help but be amazed that some day someone else would have read my posts like I read other posts now, looking back on days past. On the rare occasions that I read technical forums these days, it's very easy to spot out a complete newbie post. Some faux pas' include dumping a few hundred lines of code and saying "Why doesn't it compile?", failing to give sufficient information (such as just saying "It doesn't work"), and of course not searching the net for other people's solutions to similar problems (which are usually out there). Some five years ago, I made all these mistakes and more, and it's really funny to read some of my posts again, not only because I'm amazed that I made them, but also because it's a miracle I didn't get flamed to the ground sooner (I did get told off eventually though; more on that later)!

It's hard to remember what my mindset was at the time, but I do know that at that point I was very much focussed on getting a game done, and quickly. Tetris was my first focus, and I unashamedly proclaimed how I was total newbie in any form of graphics programming, yet had a strong confidence that I would be able to make a strong clone of Tetris within months. What surprises me was the lack of fore-thought I displayed, but also the lack of rudimentary knowledge about programming itself. One of my posts featured a code dump with a solution that now makes me go red. The problem was an undefined variable! I couldn't figure this out from VC++'s error message. In around a minute, I gave up and posted a question, including all of my code (just to be safe).

If I were to see a newbie doing something like this now, I really don't know what the right course of action would be. It's clear that on setting my sights too high, I was neglecting a lot of deeper learning, instead focussing just on what needed to be done to get something to work, not spending any time on trying to understand why it worked. My initial reaction is to say that it would be important to tell the newbie to perhaps concentrate on more basic issues first, and perhaps try to impart a sense of why the problem has come up and how to prevent it in future. Now, the replies to my particular thread were rather direct, in that they basically pointed out that I hadn't defined a variable, and suggested where I ought to do that. I'd be tempted to try and address how this solution was derived - read the error message, figure out what it means, look at the line where the problem is, and then make the connection.

But will the average newbie care? This is the point made by some at K5. Clearly if (s)he does care, then something more will be gained that just a solution to a specific problem; there is now a simple technique of attempting to fix a larger set of problems (naturally, figuring out what terror messages mean will take some time). I can't offer a statistic of what proportion of newbies would fall into this category. As for me personally, at that stage I think I would most likely let the deeper understanding go past me, and instead focus on what was needed to make the problem go away. Sad, but true! It's clear enough now that a small sacrifice initially can lead to a big payoff down the road, especially when it comes to investing time in learning something, but I don't think I could have been convinced of this back then. (As I sit here now, I think it impossible for a similar fate to befall me now, but perhaps in a couple of years' time I will shake my head at some monstrosity from the past few months!)

Does that mean that the "RTFM" approach is the most appropriate way to deal with this type of newbie? After all, if attempts to teach him/her about the bigger picture are going to go unheeded, isn't the best way to get them to start thinking for themselves and working better? I can't say for sure, but I don't think this is the right way. I simply can't champion this style of dealing with newbies (not the least of which because of my bleeding heart), but, it did work when someone did it to me. When I was eventually put down for my online sins, it really put the fear of the flamer in me. For the first time, another of my questions that I thought to be rather innocuous was not met with any sort of sympathetic response, but rather with a good old fashioned flame that attempted to put me in my place. On reading it, I was shocked, and couldn't believe that I could elicit such a reaction from someone. And, would you believe it, I stopped asking questions. What it led me to do was what I should've done in the first place - search on Google, because most of my problems were amazingly trivial. I was forcibly pushed into this habit, from a fear of other people flaming me to high heaven.

The end was therefore a definite positive, for now I refrain from posting unless it's something I haven't been able to find a solution for even after a lot of trying. I have no doubt that it will work in other cases too, especially for those of a timid leaning, but I cannot advocate it in general. At least, not right now. It takes the tough love approach a bit too far for my liking. I'm a bit more receptive towards the terse "Google it", but even this doesn't feel wholly satisfactory.

I suppose that leaves the "hint" approach, wherein one does not give a full solution, but rather only gives general directions to help one work towards a solution. Now this I think might be the best way to go. Again, no numbers to back up this gut feeling; I do recall threads where "Google for [whatever]" responses have been followed up by a thanks for the original author. I have little doubt that there will be newbies who will be puzzled by such a response, instead expecting a direct answer, but I think that if one persists with this tough-love (not really, but it ain't spoonfeeding) approach, more often than not one will end up helping the dedicated newbie. I'd like to think that if I were given such responses, I would've picked up on how to improve my skills sooner, but maybe I give myself too much credit. I may well have been the newbie that says "I searched but I couldn't understand it, help!!!"!

Now, having said all this, there is a completely different school of thought in this area, one that looks at the situation from a very different angle. These people advocate that the newbie should be able to ask whatever the heck they want, and that documents like "How To Ask Questions The Smart Way" can go (you know). It's true that in some cases it's better if a human answers your question personally, rather than a detached document. I however don't think this is a very common concern among newbies; certainly I didn't mind being directed somewhere as along as it told me what I was looking for.

Like I said earlier, I have no idea what the "right" approach is. Wikis have been around for a bit, and as awareness about them increases perhaps newbies will have it easier. The whole thing is amazingly prickly, and at the moment there is no clear course of approved action. I suspect there won't be one for a while to come, either. The newbie shall live on!

No comments: