While kicking around in the "Chatterbox" last night I discovered there are quite a number of boy-geniuses wandering around PM. (It's my understanding they don't like to be labeled "genius", so I won't name any names.) These pre and barely pubescent teens can code circles around the likes of me. Check out 87240 and you'll see an example of a boy wonder figuring out out in 5 minutes what I couldn't given an hour's worth of time.

My point is that programming, especially Perl programming it seems, attracts some extremely gifted individuals. And I'm just wondering how other "regular" folk, like me, find ways to compete with this kind of talent. I imagine it could get a little discouraging to see a kid fresh off the street writing the equivalent of Shakespearean Perl while you pound out some excellent but rather trite, magazine-quality style that took you 5 years to develop. On the flip side, I'm sure it's also frustrating for the wunderkind to try to find a way to fit in. So how does this all play out in the real-world? I'm interested to know.

$PM = "Perl Monk's";
$MCF = "Most Clueless Friar";
$nysus = $PM . $MCF;

Replies are listed 'Best First'.
Re: What if you are not a genius?
by bikeNomad (Priest) on Jun 10, 2001 at 19:48 UTC
    There are some kinds of knowledge and ability that only come with time and experience. For instance, few people have an innate knowledge of how to plan and execute the task of building a large program.

    My own history is a good example (not that I was a genius, but...). I was going to college in 1975 when USF introduced their first course about microprocessors. Though it was a graduate course in the Electrical Engineering school and I was either undecided or a Communications major, I convinced the prof to let me in the course.

    I was fascinated by the course. I memorized the instruction set, side effects, and bus timing of all the 6800 instructions. I aced the course, coming out above even the grad students.

    The prof who was teaching the course had worked out a co-op situation with the local Honeywell branch. Since I needed a job, I was offered a position as one of four programmers on a team that was embedding a microprocessor system into a military teletype device.

    What no one seemed to realize was that I'd never actually written anything larger than toy (university) programs, and had no idea how to structure a large program, or how to work with other programmers, or how to plan my time and effort.

    I failed miserably, leaving them to find someone else to make sense of my scribblings and code snippets.

    When hiring programmers, I have always taken both experience and intelligence/aptitude into account. Successful managers don't let themselves be dazzled by the brilliance of an untested new hire to the point where they risk the future of a critical project.

Re: What if you are not a genius?
by VSarkiss (Monsignor) on Jun 10, 2001 at 20:38 UTC
    Ah, but programming is a human activity, and is more than just writing code. It also involves interacting with the people for whom you're preparing programs.

    By the age of 16, hanging out at the university computer center, I'd figured out I was good at writing programs. I wasn't the best around -- I can still remember the 12-year-old who made my jaw drop with his knowledge -- but I was pretty good.

    I'm now 42. Over the years my "progammer's toolkit" has grown immeasurably, but the skills I've acquired that have made me a better programmer aren't just about writing programs. They include

    • the ability to listen and understand the "big picture" behind the programming problem;
    • the patience to keep plugging at a frustrating bit of design or code;
    • the social skills to interact with co-workers, clients, and subordinates;
    and so on.

    I certainly don't want to imply that the "stroke of genius" isn't important. But it's not the only thing; maturity and real-world experience count for a lot.

    It's part of why I'm happy to see "plays well with others" on my kids' report cards. ;-)

Re (tilly) 1: What if you are not a genius?
by tilly (Archbishop) on Jun 11, 2001 at 05:50 UTC
    If you are not amazingly talented, you just have to learn things in a different order than the gifted folks.

    Seriously, most of the "good programming habits" are about learning more scalable ways of approaching learning. Talent is nice to have, but every truly talented person that I know has to fight the tendancy to rely on their talent(s) even when a more methodical and organized approach would be more effective. While you may be flabbergasted at what that talent can let them do, with organization, perseverance and effort you can accomplish important tasks that they would crash and burn on.

    Besides which, it isn't a competition. The truth is that the better people become at programming, the cheaper it is to have programmers do work. The cheaper it becomes, the more need people find for programmers. So the small number of people out there with amazing talent and unbelievable dedication? Just learn to leverage off of them. It doesn't matter how much more productive they can be than you. What matters is how much more productive having them around makes you, and as you become productive, you become valuable and get paid more.

    So those genius programmers? You should try to convince them to teach you, contribute to CPAN, give them good bug reports if you use their code, and so on. Do that and their talent will work to your benefit. It sounds crazy, but it works.

    As an old saying goes, first rate people want to be around first rate people. Second rate people want to be around third rate people. Now do first rate people want to hang around first rate people because they are first rate themselves? Or do they become first rate by hanging around first rate people...?

Re: What if you are not a genius?
by pmas (Hermit) on Jun 11, 2001 at 01:47 UTC
    Do not be too afraid of these 'young geniuses'. There is much more problems to solve that smart people available. And when we got smarter, we'll just attempt to solve more complicated problems. It was first described in article "Humble Programmer" by famous Dijkstra (author of "GOTO statement is considered harmfull", an mid 70'ies).

    Germans have excellent word for it, "sitzfleisch". It means "meat used to sitting" - meaning to sit on your butt while solving problems. You need to use both sides of your spinal cord to solve problems... : )

    I had a friend in my college with IQ 160. Smart genius, but no 'sitzfleisch', hardly able to be interested in complicated issue long enough to finish it. Hopefully, by now he needs to pay rent and sit around to finish solution.

    Compare with athletics, they have sprinters, and they have long distance runners. Sprinters do nor run marathon - they will never win.

    I have no problem to learn new cute trick to provide smart solution for a script, it does not matter if author is 15 or 75 years old. But there is also real-life experience with designing systems, making them user-friendly, scalable and flexible, etc. This kind of skills you are not likely learn from 'young geniuses'. So we older, less genius programmers can survive, too. Maybe we can hire smart young guys, give them a chance to learn how to implement big projects.

    I know they may not appreciate project-management knowledge, may prefer to run full speed agains the wall (and hit it full speed), but it is fine. They will learn from this experience, too...: )

    Again, I have nothing against if somebody is young and smart. Even in case if s/he does not appreciate other skills I have. As long as s/he is not in charge of the project... : )

    Sometimes if frustrating to be the 'clairvoyant' one. I am new in perl (3 months), but have plenty experience in database design in other languages. I was struggling to persuade my colleagues (with more experience in perl, but less in design of big projects) to implement some solutions, where I was clear about dangers of their proposals, but danger was too ahead for them to think about. So their perception was, I am solving non-issues, while I was sure that ounce of prevention now is going to solve us tons of head-pain medication later.

    Just my $.02. Thank you for nice meditation...


    To make errors is human. But to make million errors per second, you need a computer.

Re: What if you are not a genius?
by srawls (Friar) on Jun 10, 2001 at 21:58 UTC
    These pre and barely pubescent teens can code circles around the likes of me.

    Well, I would hardly say that. Sometimes it just helps to have a fresh set of eyes look at some code; I know I've been perplexed over the most simplest of problems, only to find out that once I leave and come back again the answer is glaringly obvious.

    Oh, and about that genious thing:

    Thanks for the compliment, but I think you're being too hard on yourself. First of all, nested complex data structures can be hard to understand; you should give yourself a pat on the back for coding one succesfuly (well, almost succesfully). Second, remember your brain teasers a while back, well one of them even tricked me. So, I'm not really a genious (look at that, I can't even spell genius), I just happened to start programming at a young age.

    The 15 year old, freshman programmer,
    Stephen Rawls

Re: What if you are not a genius?
by Trimbach (Curate) on Jun 10, 2001 at 22:17 UTC
    I think one of the nicest things to come out of the "new economy" (whatever that phrase means to you) is that it puts a stake through the heart of the idea that "being old" is a prerequisite to "being good."

    Back in the old days (eighties and before) there were certainly wunderkinden in the workplace here and there, but they were the exception and certainly not the rule. The regular course of events was start at the bottom and work your way up. You could be smart, and full of good ideas, but if you were young, well, you had to put in your time until you were old enough to be taken seriously. Fortunately this attitude is rapidly going away and people are realizing that a good idea is a good idea, whether it's from a 12-year old or a 90-year old. If you have the skillz (and yes, I realize that lots of 12-year olds, no matter how bright, don't have the communication or organizational skills needed to do some jobs) then you have a better chance today of being taken seriously than at any other time IMHO. More and more people are realizing that discriminating based on age rather than merit is seriously counterproductive, which hopefully is good news for all those young wet-behind-the-ears greenhorn wippersnappers hanging out in the monestary these days. :-D

    Gary Blackburn
    Trained Killer

Re: What if you are not a genius?
by arhuman (Vicar) on Jun 10, 2001 at 22:32 UTC
    And I'm just wondering how other "regular" folk, like me, find ways to compete with this kind of talent.

    I'm simply hiring hit-men ;-)

    Seriously I try to not think in term of 'competition',
    I'd be honest I'm sometimes amazed by some monks abilities...
    (Japhy, Masem, Tilly, Merlyn, Tye, book, damian1301 to name few but also some 'newbies'...)

    I take it as an example to work even harder, and improve.

    I take it as a great chance too, it's not so common to see so many talented people in one place,
    It's a unique opportunity to learn new interesting things.
    And I'm not only talking about technical things, japhy citing 'Le petit prince' "dans le texte" is one example of things that really turn me on.

    "Only Bad Coders Code Badly In Perl" (OBC2BIP)
Re: What if you are not a genius?
by Dominus (Parson) on Jun 12, 2001 at 10:20 UTC
    Says nysus:
    I'm just wondering how other "regular" folk, like me, find ways to compete with this kind of talent.
    I wouldn't worry about it too much. Most of these 'boy genius' types are a little too clever for their own good or anyone else's; they spend a lot of effort doing things the 'clever' way instead of the right way. Here's a nice example of this that someone showed me today: A guy showed up on IRC asking some question about the following C code he had written: (*(((*chan).cmode)+i)).type. The first thing my friend wanted to know was why this guy hadn't written chan->cmode[i].type, which is completely equivalent and three times easier to read. The boy genius replied that his version compiled faster. (!!!!)

    A similar anecdote: Ken Thompson (co-author of Unix) once said that one of themost important technical reasons for the success of Unix is that they never did anything in a clever way if they could possibly avoid it. For example, when they needed to search a data structure, they used a linear search. Never a binary search; never a tree search. All the geniuses out there are shaking their heads an bemoaning the missed opportunity to use a clever O(log n) algorithm instead, but Thompson was clever in a different way, because he realized that the linear search is simple, robust, easy to write, and easy to maintain; meanwhile all but the very smartest of the geniuses have forgotten about the proportionality constant in the O.

    Anyway, my point is that it's not all that hard to write good code, and if you do, other non-genius folks like you and me will be able to understand it. A few of the genius types will write great code, but most of them will write a load of crap that only a genius could understand. This is of limited value, since genius maintenance programmers are in short supply.

    Edsger Dijkstra says that clever tricks are the bane of programming, and I think he's right. It takes an unusually clever person to know when to stop being clever. Most clever types I know are obsessed with showing off, and don't know when or how to stop.

    Mark Dominus
    Perl Paraphernalia

Re: What if you are not a genius?
by perigeeV (Hermit) on Jun 10, 2001 at 19:58 UTC
    Funny you should mention that. Just the other day, betwixt discovering that my solution to Fermat's Last Theorum also describes the molecular composition of Buckminster-Fullerenes, I happened to notice that the local peasantry were outside my gates carrying torches and farm implements...

    Methinks you just do the best the can with what you've got. Enthusiasm and dedication wins the day.

      Personally I hope that old age and cunning beats youth, experience, enthusiasm and dedication.

      It's not working so far... :)

      I didn't believe in evil until I rated it.

      I happened to multi-task away from my work on a sonnet describing a simple proof of the four-colour theorem and see this. :-)

      When I was srawls' age, I was writing fairly sophisticated software. Unfortunately, I was doing it in BASIC. I wish that at his age I had had access to Perl. When younger, one has far more ability to absorb information easily. It's clever to be able to do so and consequently produce nice code, but it doesn't make any of us genii. On the other hand, there are probably numerous genii here on PerlMonks, so I may be unfairly deprecating people's abiltiies. What is special is the combination of so much talent (youthful and otherwise) with the excellence of Perl itself. The world is our mollusc of choice, especially if we work together.

      Hmm. That was incoherent. Sorry.

      Tiefling (heading off to translate the Great Bible version of the psalms into the equivalent era's Swedish :-)

      -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GAT d++ s:- a-- C++ UL P++ L++(+) E? W+(++) N+ o? K w+(--) !O M- V? PS+ PE- Y PGP- t+ 5 X+ R+++ tv- b+++ DI++++ D+ G+ e++ h!(-) y +? ------END GEEK CODE BLOCK------
      But since Andrew Wiles has proved this already I'm surprised you are wasting your time!
Re: What if you are not a genius?
by schumi (Hermit) on Jun 10, 2001 at 22:57 UTC
    Well, looking at your experience it seems to me that you are not exactly a newbie yourself. And then again, I know what you mean. As someone who has only recently started programming Perl (after and with some strong coaching of BrotherAde - cheers mate!) I sometimes (too often really) haven't even got a clue what the questions here are about - let alone dare to answer one of them. But then, I'm learning, and reading the questions and the answers help a lot. I don't mind when someone - even if s/he is younger than I am - knows something better than me. As long as I can learn from them, grand.

    But I think with confusers - and not just Perl or prgramming in general - it depends on who you're talking to. Compared to my Dad, who is not bad on confusers himself, I know very much. But compared to some of my friends - let alone the people here - I know very little. I suppose there is something else I know better than some other people (and if it's only the Bernese German language - being Swiss...). And even with something where I'm quite good at, I sometimes make the most stupid mistakes. Anyway, I think the point srawls makes is quite good: Often enough it helps to have a fresh set of eyes look at the code, they usually see a lot more than the set of eyes working on it. And if I had been programming for years already I might even understand the more complicated code on this site...

    As for fitting in, there is a point where you realise that in fact there is almost always a place somewhere where you fit in - the point is finding it. And I think, this community is not worst place to try.


Re: What if you are not a genius?
by Jouke (Curate) on Jun 11, 2001 at 11:16 UTC
    First: I am not a programmer (though my employer hired me as such)
    Second: I am not a genius (though I guess I'm the best coder around where I work)

    I don't care if I see a young guy/gal coding way better than me. I just learn from it. Coding isn't all there is to programming. Like others said replying to your posting: experience is needed for certain things. I like to call myself a pretty allround guy. I've been into system administration, helpdesk, project management, security, webdesign and perl coding. From all these different things I learned so many things I use now, which a pure programmer at the age of 14 simply does not know.

    Maybe these guys are programming Shakespeares. In that case call me the publisher. They have to learn there is much more than just coding.

    Just my EUR 0.02,

    Jouke Visser, Perl 'Adept'
    Using Perl to help the disabled: pVoice and pStory
Re: What if you are not a genius?
by delegatrix (Scribe) on Jun 11, 2001 at 00:15 UTC
    You just do what you can and learn what you can.

    I may not be a great coder, but I build whole applications with usable interfaces that people seem to like. When I get thanks from someone or feedback telling me my app saved someone hours in the library, my programming style and speed seem less important.

Re: What if you are not a genius?
by beretboy (Chaplain) on Jun 10, 2001 at 20:35 UTC
    hehehe I am only 12 but I would hardly call myself a genuis. I've been coding since I was 8 but it was mostly javascript and stuff like that. hmmm does this mean I am the youngest monk?
Re: What if you are not a genius?
by cajun (Chaplain) on Jun 11, 2001 at 13:59 UTC
    nysus I agree with you totally. It's pretty frustrating at times when I cannot figure out how to do something that seems pretty simple. Yet the younger members of the Monastery write code that I cannot begin to understand parts of.

    What is really frustrating is to see where you fit in the my age is chart. (Let's just say I fit towards the lower section of the chart).

    I had a conversation with crazyinsomniac about some of these same thoughts not long ago. What puts things into perspective for me is:

  • How do you use Perl ?
  • What percent of your daily job requires Perl ?
  • Without Perl, could you still perform your job ?
  • I'm a sys admin. Perl makes my life easier as a sys admin. Yes, I could get along without Perl, but it would take longer and wouldn't be as interesting!

    I'm pretty sure that if I were to post the ideas that I was working on on Perlmonks, one of the "boy-geniuses" you mentioned would have a solution in a very short time. But to me, that is part of the fun of it. Figuring it out for yourself. There is no better resource for doing that than Perlmonks that I'm aware of.

Re: What if you are not a genius?
by stephen (Priest) on Jun 11, 2001 at 23:32 UTC
    This might sound a bit strange, but sometimes I think that it's possible to be TOO smart to be a coder.

    Some of the brightest people I've worked with write hideous code. They have five thousand variables going in the same scope. It's completely uncommented. It's all a single huge file. It uses completely incomprehensible constructs. The reason? They can remember all of these variables. The code is clear to them. They know where everything is in the file and don't need it broken down into easy mnemnonic chunks.

    It's a strange sensation to think "This person is fifteen times as smart as I am" and "this person is being an idiot" at the same time. :) Because, of course, geniuses lose brain cells too. If you rely on using your mind to store everything and expect to be able to perform insanely-fast analyses of your existing code, sometime you'll reach for that ability or piece of information and it won't be there. And no one else will understand it.

    Also, remember Kent Beck's comment: "I'm not a great programmer. I'm just a good programmer with great habits." Which I prefer, personally. Some genius code can set projects back months as the rest of the team tries desperately to figure out what's going on in the genius' mind.

    Finally, observe the entry for the term "larval stage" from the Jargon File:

    Larval Stage

    Describes a period of monomaniacal concentration on coding apparently passed through by all fledgling hackers. Common symptoms include the perpetration of more than one 36-hour hacking run in a given week; neglect of all other activities including usual basics like food, sleep, and personal hygiene; and a chronic case of advanced bleary-eye. Can last from 6 months to 2 years, the apparent median being around 18 months. A few so afflicted never resume a more `normal' life, but the ordeal seems to be necessary to produce really wizardly (as opposed to merely competent) programmers. See also wannabee. A less protracted and intense version of larval stage (typically lasting about a month) may recur when one is learning a new OS or programming language.

    Not that it's bad to be a genius. It's just that, well, there are compensations to being merely good. (Although it's a bit of a cliche, of the geniuses you've met, how many were really happy?) If you're a genius, enjoy yourself.


Re: What if you are not a genius?
by beretboy (Chaplain) on Jun 10, 2001 at 20:47 UTC
    Hmm.. VSarkiss, it is my personal experience that the best coders I've met were usually alienated from normal society (I know I am). However they did get along nicely with the other (geeks|nerds|coders|monks)
Re: What if you are not a genius?
by Mission (Hermit) on Jun 11, 2001 at 16:11 UTC
    Hey nysus, thanks for generating this good discussion. I know that I feel a bit overwhelmed somtimes when someone knows some programming technique I don't, however there is no way that anyone can know it all. I'm sure that even our Patron Saint Larry has his off days and forgets a few things (no offense Larry, but I've been told that you are human.)

    Genius is simply someone who has the ability to see the obvious, or to see a way to get through the current problem. We're all a genius! Heck we all do this every day. I don't think there hasn't been a day when I've been coding and just finished a snippit, stepped back to take another look and said to myself, "that's cool!"

    I really like what bikeNomad commented about above... a genius doesn't make up for experience. I know that with my staff, I've got a wide variety of experts / genius all around me. However, I'm in charge, and I may (usually) not know what is the best solution to complete the task at hand. My genius is not in coding (although I enjoy coding). My genius is in seeing the big picture and developing a Mission to complete the task. My job is to use the resources (my staff) to complete the project at hand. Sure I've got young genius all around me, but I enjoy being around them and I'm not intimidated by them. They help me just as much as I help them. I wouldn't have it any other way!

    - Mission
    "Heck I don't know how to do it either, but do you think that's going to stop me?!!"
Re: What if you are not a genius?
by OzzyOsbourne (Chaplain) on Jun 12, 2001 at 20:05 UTC

    "And I'm just wondering how other "regular" folk, like me, find ways to compete with this kind of talent. I imagine it could get a little discouraging to see a kid fresh off the street writing the equivalent of Shakespearean Perl while you pound out some excellent but rather trite, magazine-quality style that took you 5 years to develop."

    I am regular. I am not discouraged.

    To paraphrase a bit of Sun Tsu, you must use each individual to their talent. Give the genius the mamouth problems. Give the regular person regular problems. To reverse the two, is to waste the time of both.

    Being a resource is good, but being a resource of resources is useful, too. As it is impossible to know all of the answers, being able to find resources is important.

    The Genius wondered,
    "Where would the internet be
    without all the links?"

    Gong rings in distance...


Re: What if you are not a genius?
by fmogavero (Monk) on Jun 11, 2001 at 17:28 UTC
    So What?

    I could never be a truck driver. I hate driving. I have a friend who is a truck driver. He is also a drummer in a band I was in. So who's greater, me or him?

    There are always greater and lesser than you. If you help the lesser then the greater will help you.

    Meditate on that!