![]() ![]() ![]() ![]() |
On Beginners' Mindsets, Part I
by Peter Scott
came to mind while reading some of the beginners' postings on the beginners@perl.org mailing list. I'll attempt to explain some of them here. If they appear to be useful, I may come out with more. None of this is in reaction to any posting in particular, there's no need for anyone to feel this is personal. Some Perl beginners appear to exhibit, how shall I put it, counter-productive tendencies. Others might churlishly refer to them having chips on their shoulders, but we don't need to get into that. Let's look at it in simple terms: the Perl beginner, like all of us, has a goal or three. Usually they come to a forum like this with one or both of two goals: to get the code they need or to learn more about something. It can be instructive to elaborate on how best to achieve those goals and how they may be received. In what follows, the golden rule to healthy understanding is: put yourself in the other fellow's shoes.
Firstly, the goal of getting some particular code out of a forum like this won't be well received. People here are donating valuable time in just about the most altruistic display around. Their motivation tends to be, that they enjoy teaching and they like to know that they've helped someone else experience the wonder that is Perl. If someone asks for code without displaying any interest in learning, then that motivation is denied and the outcome is likely to be no help. If you want someone to write code for you, there are many people that will do it for a fair fee.
Secondly, if you're in a learning position, certain attitudes and behaviors will serve you extremely well. Any decent teacher knows how best to be a student, since no-one's an expert in everything and most of us who teach are also actively learning something new at the same time. One attitude that helps is to adopt an open mind but a thick skin. Anyone who's joined a writers' club either learned this one or dropped out. If you're going to put out material for critique, then you have to not just expect but hope that people will tell you things about it that are wrong and which you didn't know. Otherwise it was a waste of time. Sometimes these people may be wrong, but you need to evaluate all comments, and getting upset at them just does no good whatsoever. Remember, they're not talking about *you*; they're talking about your *code*. When someone who clearly knows more than you about some particular topic says, "This-and-such is the best way to proceed," then the best approach is usually to do this-and-such until you have acquired the same level of expertise and can know whether another approach would be better. (We could argue exceptions to this until the cows came home but they would simply prove the rule.)
If you were to read the diary of a programmer as they went from beginner to expert, you would see a number of changes of mind, and virtually all of them would be tending toward certain common points of view that you can find among experts. I know that certain approaches which seemed just so right to me when I was younger now are exposed as byzantine or pointless. Look for where the top people in a field agree on something, and follow their advice to the letter; you'll make progress much faster than trying to buck it. This isn't some peaen to herd mentality here; it's just that you have to be fully armed to have a battle of wits, and no-one's going to pay attention to you if you espouse some half-baked theory without the intellectual underpinnings to back it up. (Just as dozens of people claim every year that Einstein was wrong, and they have invented a perpetual motion machine that also travels faster than light - what they mean is, they don't understand Einstein, so they went off and made up something of their own instead that has no basis in science.)
None of this implies that the people who spend time here helping others are looking for subservience, or even respect. (You should see how they talk to each other on the Perl developers' lists.) I'm not saying you should kow-tow to them; I'm saying that there are ways of presenting your case that will gain you more respect from them, and here's a look at some of those ways.
If you run into resistance on the list, then remember that it's easier to go with the flow than fight it. There's a reason the flow is the way it is. I've been kayaking on whitewater rapids, and the lesson was plain: use the river, don't fight it. The strongest person alive couldn't go against a hard current, but you don't need strength; you just need to recognize which way the river is going and give a kick in that direction. That's enough for now.
(There is some related material in the "Zen of Perl Developing" chapter of my book, "Perl Debugged")
Continue on to the next article in this series, "On Beginners' Mindsets, Part II"
© Pacific Systems Design Technologies
Revised