Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much

Leaving the "Know-it-all" Paradigm towards a Programmers Mindset

by jonix (Friar)
on Nov 07, 2005 at 17:48 UTC ( #506469=perlmeditation: print w/replies, xml ) Need Help??

Dear fellow seekers of Perl wisdom,

the poll "The title least worthy of being used in the perlmonks experience system is" sports "Know-it-all" as a candidate, among other funny and interesting ideas. This term provoked some thoughts in me that I would like to share with you. They might be deeply subjective though, so I put it under Meditations, not knowing any better.

Considering the many natures of knowledge and learning, people tend to become less "know-it-all" the more they know.
That is because they start getting an idea about things so big, complex and manyfold that they will never possibly be able to learn all about in a lifes limited time.

Some years ago, when I still had an average self-taught MS Windows users narrow view, my first attempts with Perl were a depressing experience, to say the least. Though Active State installed like a charm (but I remember the installation dialogs confusing me still), I did not do much more than trying the "hello, world" example, which still took me some hours to figure out. Trying to start learning Perl with the online docs, my "know-it-all" dogma was challenged so much that I was effectively frightened away from Perl for some more damn years.
Perl clearly was too complex a tool for my passive-demanding windows users attitude - things just had to work "out of the box" for me to consider them working at all, and it was never my own fault if they didn't, so I thought.

It was not until I did an installation of Gentoo Linux (after some more years of Windows agony) and learned the basics of SQL and PHP, a bit of Python and Bash, that I was able to drop my fear of things far too big for me to learn in a lifetime. Nowadays I rather embrace those things happily, as I know they will provide me with enough interesting stuff to keep me learning for the rest of my life! No more boredom - Open Source just saved me again!

I figured that my old unconcious "I need to know-it-all" paradigm caused my fear of things far too big for me.
The fear caused unconcious repression of the fact that such things exist at all - so I could start feeling comfortable again.
Hence I (unconciously again) assumed that I was a "know-it-all", at least a "know-it-all-that-is-worth-knowing" to me. How ignorant and stupid...

Today I try to think of myself as a "never-possibly-knows-it-all-but-often-tries-to" - this should be much more realistic and better for learning.

Did this kind of paradigm shift happen to you as well? Would you consider it vital for learning Perl? Can it be deliberately provoked in others? I'd like to read your thoughts ;-)


Thank you all for your kind answers.
I would just like to add my beginners advice to other beginners:
Do it every day!

And yes, I picked this one from Wilson ;-)
If you think I sound like bashing Windows in general, that was definitely not my intention!
I might have expressed some discontent with some of its features though.


  • Comment on Leaving the "Know-it-all" Paradigm towards a Programmers Mindset

Replies are listed 'Best First'.
Re: Leaving the "Know-it-all" Paradigm towards a Programmers Mindset
by Tanktalus (Canon) on Nov 07, 2005 at 20:35 UTC

    In any field of endeavour, and computer science and, specifically, perl are no different, there are three types of people:

    1. Those who don't know what they're doing, and know they don't,
    2. Those who don't know what they're doing, yet think they do, and
    3. Those who know what they're doing, and know they do.
    It's that middle group that gives the first and last all the trouble: by misleading the first, and annoying the living $#!+ out of the last.

    No one, I would imagine, jumps directly from the first to the last - pretty much everyone is in the middle group for anything that they get into the last group for. The ones to watch out for are the ones who stay in the middle group. I know some people like that. In fact, I know a lot of people like that... ;-)

      What, no group 4? ;-)

      4. Those who know what they're doing, and don't know that they do.

        I realize that you were being tongue-in-cheek, but I often consider the 4 stages of mastery to be (in order from least to greatest)
        1. Not knowing what you don't know (i.e. you've never heard of anything in the domain)
        2. Knowing what you know (i.e. you know only those things that you've specifically been told or looked up)
        3. Knowing what you don't know (i.e. you know those things learned above, but also realize and know what parts of the domain you've yet to learn)
        4. Not knowing what you know (i.e. your knowledge of the domain is so great that you can't list everything that you know about it, but are able to recall anything from within it)
        I think that I got this ordering from somewhere here in the monestary, but laziness prevents me from looking for it. I'm sure someone will come along and point to the reference.


        Feel the white light, the light within
        Be your own disciple, fan the sparks of will
        For all of us waiting, your kingdom will come

Re: Leaving the "Know-it-all" Paradigm towards a Programmers Mindset
by bluto (Curate) on Nov 07, 2005 at 18:42 UTC
    Today I try to think of myself as a "never-possibly-knows-it-all-but-often-tries-to" - this should be much more realistic and better for learning.

    I think the word you are searching for is "teachable". Everyone starts off that way. The biggest obstacles for me at staying that way are Laziness and Ego. Laziness I understand, but Ego is a fickle self-deceptive beast. When you are just starting off it drives you forward ("I don't know much right now, but I'm going to be a programming guru!") and then later on it gets in your way ("I'm now a programming sage!").

Re: Leaving the "Know-it-all" Paradigm towards a Programmers Mindset
by pg (Canon) on Nov 07, 2005 at 19:31 UTC

    On the other hand, you don't need to know it all. It is not possible and it is not neccessary.

    In some cases, you want to go deep, when in other cases, you want to go wide. In some cases, you need to know how to do it with certain tools, when in other cases, all you need to know is whether it is doable with certain tools.

    It is also important to know where to find answers, might be a book, a manual, a web site etc. In this way, you know how to turn "unknown" into "known". That's one of the most imprtant area of knowledge you really need.

Re: Leaving the "Know-it-all" Paradigm towards a Programmers Mindset
by Mutant (Priest) on Nov 08, 2005 at 10:24 UTC
    It's very easy to be an above-average technical person (of which there are millions in the world), and exist in an environment where you do know it all. This can even be a relatively large company of non-technical people. To them, you become some sort of tech god, and no one is able to challenge you. Entering any sort of discussion/argument, you always know the outcome - you are right. This is not narcissism, it's objective - you always are right.

    By far the best thing a young techie can do is find employment in a company where they are often wrong. I was fortunate enough to have this early on in my (so far brief) career. After working jobs where I was always the go-to guy, and having similar experiences during my degree where I wasn't particularly challenged, I found a job where I was wrong a good 50% of the time. Sometimes spectacularly wrong.

    It was a very quick lesson in how little I knew. Had I found a job where I was - again - always right, I doubt my technical abilities (especially programming knowledge) would have grown significantly at all.

    Knowing what you don't know, and even just that you don't know everything, is an extrememly important step along the road to mastery.
Re: Leaving the "Know-it-all" Paradigm towards a Programmers Mindset
by chanio (Priest) on Nov 07, 2005 at 21:11 UTC
    This is a very interesting subject.

    I use to question knowledge a lot. Life could be simpler. But, comercial stuff uses to complicate it all a lot. I also regret wasting such a long time with Windows and their obscurantism.

    I also recognize that perl is still taught in a 'Gothic Cathedral' way. In Middle Ages, the gothic masons kept their style for their own guild. Yet, today, the perldoc is not very much recommended during the AP's installation. I started using it in Linux before finding it in Windows.

    What I envision with Linux is a more natural way of getting introduced in the technical use of PCs. When I first installed Mandrake, I thought of a nice way of starting learning things by trying to make the normal stuff do better things. You were not forced to learn a lot to have it all working as in Windows. But to have a better performance, you would rather start reading the man docs, and visiting some newsgroups, and asking some difficult questions.

    There is still a lot to do in this learning issue. But, I wouldn't expect of the comercial software to do a lot to make us learn more.

    Perl is a 'must know' if you are working with a Linux environment.

Re: Leaving the "Know-it-all" Paradigm towards a Programmers Mindset
by samizdat (Vicar) on Nov 08, 2005 at 14:38 UTC
    Excellent node, jonix++.

    I know that I know very little that matters, but enough to do some good. My first real programming job was with a guy as my team leader who was always prattling about how good he was. There were only two of us on the team, and I had taught myself 8051 assembly language from reading Intel manuals, but had never actually done anything except play (see the SDK pic on my homenode). What quickly became clear was that I was much more talented than he was at programming, even though I had virtually no experience. Very quickly, I was the one who was doing the tricky bits on the most complex machines. {The project was an automated wire harness assembly line.}

    Besides having to deal with personality problems caused by his immaturity, I had some of my own. I began to "know" that I was really good at this stuff. By 1988, on another job, I was passionately pushing my product designs and partially caused a companywide breakup that had half of the hardware engineers and three of the four software people leave. Yes, I/we were "right", but a lot of little people lost a lot of ground when most of the company evaporated. It would have run aground eventually, but not as dramatically.

    It wasn't until I became a business creator that I began to really appreciate the cost of my at-all-costs hubris, eleven years later. I'd been ruminating about what had happened there and in other situations, but hiring others to work for me and dealing with their egos was a really sobering experience. I'm really fortunate that I didn't hire myself!

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlmeditation [id://506469]
Approved by wolfger
Front-paged by planetscape
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (5)
As of 2022-05-19 07:49 GMT
Find Nodes?
    Voting Booth?
    Do you prefer to work remotely?

    Results (71 votes). Check out past polls.