Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

How to abate the Ubiquitous Fear of Programming

by Velaki (Chaplain)
on Aug 02, 2004 at 16:46 UTC ( #379329=perlmeditation: print w/ replies, xml ) Need Help??

Perscriptocalculophobia : Fear of Programming Computers

Everyone knows someone who's afraid of programming. I've run into so many people who say, "I can't program. Don't you need Math for that?" Or, "It's too hard! I'm not trained/certified." Or even, "I've never done it, and would never be able to do it."

Buffalo Biscuits!

I've helped a number of people overcome their fear of programming, simply by showing them that they've been programming all their lives with the following:

"Have you ever written out a shopping list, gone to the supermarket, bought groceries, made it half-way home when you realized you forgot something, gone back to the store, picked up the missing item, returned home, and made a tasty dinner?"

After they say, "yes," I tell them:

"Then you've designed, coded, tested, debugged, implemented, and deployed a program. Only the language is different. Shall we begin?"

Believe me, if I can do it, anyone can.

-v

Comment on How to abate the Ubiquitous Fear of Programming
Re: How to abate the Ubiquitous Fear of Programming
by Velaki (Chaplain) on Aug 02, 2004 at 16:52 UTC

    Arg. I wrote the whole thing, but was logged off in the middle of editing it, so it posted as Anonymous when I clicked create.

    -v

    "Perl. There is no substitute."
•Re: How to abate the Ubiquitous Fear of Programming
by merlyn (Sage) on Aug 02, 2004 at 17:01 UTC
    But not everyone can do it well.

    Have you ever gotten completely unfollowable instructions from someone about how to get to a place they know? I would suspect that lack of attention to detail while describing an algorithm would apply both to giving directions to a location and to writing a program. Hence, those people would probably also be bad programmers.

    To be a good programmer, you have to consciously and reflexively know how to solve a problem (or at least the meta-problem), know how to reduce it to things that the language can represent, and then construct a representation of the solution steps in that language. Most non-programmers I know cannot do one or more of those steps with any precision.

    It's amazing how many of us programmers take those skills for granted. Yeah, we think "well of course, everyone can do what I do easily!" But I have good counterexamples: I cannot remember pictures, nor can I construct good art. Yeah, it seems most people can do both of those, but then those people also take those skills for granted. So I'm not so naive as to presume that the skills I take for granted are also universal.

    -- Randal L. Schwartz, Perl hacker
    Be sure to read my standard disclaimer if this is a reply.

      To be a good programmer, you have to consciously and reflexively know how to solve a problem...

      This is true, but only a truism by the hour. A bad programmer can write a good program--just not on a deadline or in an area than isn't personally compelling enough to put in the effort required. A bad writer can write a good story. An awful artist can make a beautiful painting.

      I cannot remember pictures, nor can I construct good art.

      Maybe can't today, but you definitely could. Anyone with a creative, problem solving mind can be a visual artist. I think this is an important point.

      The reason most adults can't draw/paint is related to why they can't program. The mistakes are too painful for an adult. A child can make horrible drawing after horrible drawing for hours for days for months and not mind b/c no one says to a kid, "That's really ugly. What is that? A cat or a cat turd?" An adult draws the same picture and even if no one else says, "That sucks," his/her own internal editor will say it. The trick to learning something new and especially something creative is to keep the editor out until the skills are passed infancy.

      This is a trick for this site (a bad drawing can't crash a server) and one that is usually handled well, I think. A beginner can usually get explicit and friendly help with the kind of question that would get a middle of the road hacker like myself a lot of RTFMs and onto the worst nodes page (as it should be).

      (update: question question)

        I cannot remember pictures, nor can I construct good art.

        Maybe can't today, but you definitely could. Anyone with a creative, problem solving mind can be a visual artist. I think this is an important point.

        No, I can't. And that's why I bring up this particular point. I don't see pictures. I don't visualize. I can't recall pictures. I have a particular, call it "brain condition" that prevents me from doing so.

        And that seems to really get into the way of being a visual artist. {grin}

        Are you not aware of people who are "tone deaf"? All the training in the world won't get them to recognize tones. It's similar with me and recalling pictures or visualizing. My brain doesn't do that. I am unable. Understand?

        I've even commented here on it at GUIs and CLIs about why I hate some GUI designs.

        And it's a bit crazy of you to think that everyone is like you, although completely understandable, because we want to be tribal and presume that all other humans have all the traits we have.

        Oddly enough, I think it's my lack of cognitive ability to visualize that makes me a very good programmer and writer. Yes, I have trouble when people tell me that they want to see how a variable sits in memory, but I'm not burdened with any of that overhead. I just deal with the patterns and abstractions of variables and processes.

        -- Randal L. Schwartz, Perl hacker
        Be sure to read my standard disclaimer if this is a reply.

        The mistakes are too painful for an adult. A child can make horrible drawing after horrible drawing for hours for days for months and not mind b/c no one says to a kid, "That's really ugly. What is that? A cat or a cat turd?"
        Sadly, some so-called adults do. But I must say, that's very well put, and an excellent point about the relationship of the creative-mind to the editor-mind. Programming is kind of unique because it requires us to use both the creator and the editor inside ourselves and also to know when to tell which part to shut up and mind its own business. Excellent point too about the community aspect of the criticism process. Great post, Your_Mother++.

        The reason most adults can't draw/paint is related to why they can't program. The mistakes are too painful for an adult.

        The reason most adults can't draw/paint is as children they were never given any feedback which allowed them to refine and improve their technique. After a while the kid gets to a point where they are completely frustrated with drawing pictures which they can see look like cat turds and not cats and give up saying "I can't do it". By comparison the majority of children grow up with a fair degree of language competency because parents will correct the child allowing them to see, and thus learn from, their mistakes.

        I had a tennis coach when I was in school who said that the saying that "practise makes perfect" was nonsense, he said instead "perfect practise makes perfect". He never hesitated to say if your technique sucked and I was a visibly better tennis player for his coaching.

        --
        Do not seek to follow in the footsteps of the wise. Seek what they sought. -Basho

Re: How to abate the Ubiquitous Fear of Programming
by etcshadow (Priest) on Aug 02, 2004 at 18:26 UTC
    Have you ever gotten driving directions from someone that went along the lines of:
    • "...and then turn right where the $x used to be..."
    • or "...turn about a mile before the $y. You can't miss it..."
    Even with the best programming language in the world, that person will not be able to program.
    ------------ :Wq Not an editor command: Wq

      Well, umm, I think it has to do with common vocabulary and reference points...you know, niche terms. I used to tell people to "Make a left at the Oak tree, and right at the Willow." Clearly, those were common reference points where I lived. A "specialized" vocabulary for the locals.

      I think what I was trying to say was that you can work with a person to get them past the fear. How they might evolve as a programer is a different matter.

      -v
      "Perl. There is no substitute."
Re: How to abate the Ubiquitous Fear of Programming
by zentara (Archbishop) on Aug 03, 2004 at 13:56 UTC
    I think you need to start teaching programming to kids in grade school( like grades 5 to 8 ). That is the age where they are inquisitive and very innovative, and it will put it into their young minds that programming is fun. Of course, Perl should be used, to make it easy for them. :-)

    I think the real problem with this plan, is finding teachers who can really teach programming. Most of them, nowadays, are "MS windows numb-skulls"


    I'm not really a human, but I play one on earth. flash japh

      Of course, Perl should be used, to make it easy for them.

      Perl makes a rather poor first language. Python or Ruby would be much better. Or better still, use LOGO--it was designed specifically for teaching kids to program.

      "There is no shame in being self-taught, only in not trying to learn in the first place." -- Atrus, Myst: The Book of D'ni.

Re: How to abate the Ubiquitous Fear of Programming
by davorg (Chancellor) on Aug 03, 2004 at 14:07 UTC

    Two points spring to mind when reading your post.

    • The world already has far too many mediocre or incompetent programmers. Why would you want to encourage more?
    • Why do you want to persuade people that programming is less complex than they think? As long as they believe that it's some kind of black art, that keeps our salaries higher :)
    --
    <http://www.dave.org.uk>

    "The first rule of Perl club is you do not talk about Perl club."
    -- Chip Salzenberg

      I'm going to start spreading non-sequiturs like "Can you learn Perl? 85% of the world's rocket scientists don't know how to program Perl!"

      Of course, the statement is totally disjointed, but probably close to true.

      I also like to refer to Flux Integratals through Hypersolids as I studied in Calculus. I don't know what they are, but people are afraid of them.

      The world already has far too many mediocre or incompetent programmers. Why would you want to encourage more?

      A possible answer: Initial aptitude isn't a guarantee of final skill level. If premature optimization of code is an evil, how much more undesirable is premature optimization of the coder. To me, this relates to the CPAN. There's cruft and crud but very few are in favor of a submission gauntlet to keep quality up and duplication down. A healthy ecosystem needs its nitrogen recyclers as much as its apex animals.

        My original idea was to alleviate the fear of programming, not necessarily create more programmers. With fear comes much misunderstanding, assumptions, stereotyping. I even see it on the job, where non-programming managers will want to understand, but then say, "Oh, it's that kind of problem, and you're one of those people! programmer. Well, I guess we'll just have to find another geek/nerd to make sense of it."

        *shock* - such language!!!

        The best are those that make You entirely responsible for Their understanding of a particular topic.

        In the end, it's about trying to remove the fear, and show that we're all more alike than dissimilar.

        -v
        "Perl. There is no substitute."
Re: How to abate the Ubiquitous Fear of Programming
by dsb (Chaplain) on Aug 03, 2004 at 16:48 UTC
    I agree and disagree. I think that a person's ability to program depends on their ability to think like a machine. Those people that I've met that have had problems programming had those problems because they could not wrap their mind around the concept that a computer (at least now) can really only do what it's told. A person cannot assume that a computer will get from A to C without being told that it will have to go through B.

    That said, some people just have the mind to be a program. I agree with merylyn's earlier post that you have to have a certain mind to program well. Anybody can be taught to do just about anything. But that doesn't mean they can be taught to be proficient at those things. I once tried to teach my friend how to throw a football. We tried for days to get him to spiral it. He may know how to do it, but that doesn't mean he can do it.


    dsb
    This @ISA my cool %SIG
Re: How to abate the Ubiquitous Fear of Programming
by johndageek (Hermit) on Aug 04, 2004 at 21:08 UTC
    "I can't" is usually misused. "Cannot" implies an absolute physical reason that something can not be done. e.g. a person blind from birth can not relate to color the way a person with any form of sight can.

    Just about every other use of "I can't" simply means that I do not have the interest and drive to accomplish that particular task. Look at the immense obstacles people overcome to do things they really want to do.

    Mr. Schwartz provides an excellent example. He is not naturally inclined to be visual/pictorially inclined. His statement "I cannot remember pictures, nor can I construct good art". As well as statements explaining his happiness with his programming and problem solving abilities, are statements of sanity. He knows what he does well, he knows that he enjoys those activities and expends energy in pursuit of them, and he knows he has limited resources to deal with life in general. I do not agree that he "cannot" do either of the things he claims he cannot do. If he were willing to apply enough time and effort, he could remember pictures (even if he had to come up with a method not commonly used to remember pictures). He could create good art.

    We do need to place limits on what we try to accomplish, and concentrate on certain ones or we would accomplish nothing. I am only beating up the use of "cannot" as opposed to "won't", or "I am not willing to sacrifice the time and abilities in use in other channels of my life doing things I want to do more".

    As to those who fear programming, they are displaying a very human reaction to the unknown. They also have to overcome the reputation of programming has of being difficult and complicated. If asked, would you be afraid to perform an appendectomy? (those of you who are not surgeons who said "no" scare me!) You should be afraid, as the procedure is relativiely complex and requires some specialized knowledge. In this case "I can not do this now" is a valid response, however with the appropriate desire and drive, you could gain the knowledge and experience to be able to do the appendectomy.

    Thank you for an interesting node!

    Enjoy!
    Dageek

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlmeditation [id://379329]
Approved by sweetblood
Front-paged by Courage
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (10)
As of 2014-07-14 09:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    When choosing user names for websites, I prefer to use:








    Results (257 votes), past polls