Live data from Hacker News

The programming talent myth

lwn.net

301–310 of 354 posts

Re: The programming talent myth

#301
post #243

If you started programming when you were 12 and you've been programming for fun more than 4 hours a day every day since then, you are going to be drastically better than someone who starts programming in their first year of college and only does it to graduate. It feels like a bimodal distribution because you then get both kinds of programmers interviewing for jobs at the same age when they graduate from college and…

This seems like a form of elitism very specific to programming. I graduated with a degree in Electrical Engineering, and barely did programming until I began my first job out of college. In many people in the programming space, I see contempt that coding was something I didn't start until later in life. When I interviewed for Electrical Engineering positions, no one ever scoffed at me, "you haven't been computing the…

>This seems like a form of elitism very specific to programming.

In my experience it's not at all specific to programming. Other domains have their "rock-star" experts: The brain surgeons, the rocket scientists, the literal rock stars (or at least the true masters of one or more instruments, amazing songwriters, gifted vocalists), the Olympic athletes...the masters of their skill who are so good at what they do that they make it look easy. They've put in the metaphorical 10,000 hours of practice and self-improvement. They are awesome, and the rest of us mere mortals by comparison.

Programming is different from many disciplines, though:

* In programming, everyone from the student who is copy-and-pasting JavaScript into an HTML document to the amazing expert is a "programmer." There's no term for the ones at the top of the scale, no "Olympics" label, no "brain surgeon" specialty that distinguishes the top from the rest.

* World-class skill in one domain or language translates to a very short learning curve in just about any other domain. I've hopped between native apps, games, high performance servers, networking, security, drivers, web apps, embedded, IoT and machine learning, for example, and have used just about every mainstream language (and some trendy ones).

* Programming as a discipline has a 10x-20x measured productivity between practitioners with similar experience -- and the real difference can be infinite (there are tasks that I have accomplished that I know would never have been completed by some people I've worked with in the past). Though some will claim it's unique in that respect, it's not: It shares that trait with (for example) the creation of art and music. I can spend 10 hours working on something artistic, and I know artists who can produce a better result in 30-60 minutes.

* Programming can be learned with a computer and 100% free tools. You can start when you're 12 and have access to a computer, and you are limited only by your skill and imagination in what you can create. So those who have an aptitude can spend thousands of hours in practice for only the cost of electricity (after they have a computer).

It may be that Electrical Engineering doesn't have the 10x-20x relative skill effect, or maybe it does. I don't feel qualified to argue one way or another. It does seem like practitioners will specialize in a particular area, though, and tend to stick with it; correct me if I'm wrong?

Also, it's rare for someone at 12 to feel the need to compute Ohm's Law (well, I used Ohm's Law as a 14-year-old, but I'm odd that way), much less the impulse response of a filter, so for most you're learning those equations at the same time, and the difference between the best and worst students isn't measured in thousands of hours of previous experience.

>"you haven't been computing the impulse response of a filter for 4 hours a day since you were 12? There's a massive difference between engineers who have done that and those that haven't."

For the record, if you're one of those people who did start coding at 12 or earlier, it's not hard to spot another "native programmer", any more than, as a native speaker of a language, it's easy to hear when someone has learned a language as an adult. Sometimes late-learners with particular aptitude for languages can speak without an accent, but most of the time it's easy to tell. There are documented brain organization differences (fMRI) between people who learn a language before they're 12 vs after they're 14, and I suspect the same may be (statistically!) true for people who learn programming early vs. late.

I'm teaching my 10-year-old now, just in case. ;)

Re: The programming talent myth

#302
post #58

My own experience just does not agree with this at all. First, I think we have to distinguish between two ideas here: * The first is the question of whether anyone can learn to program. I think that for the most part everybody can, just like for the most part everybody can learn high school calculus. * The second is the question of whether programming ability is bimodal. This is not related to the first question, and…

> 99% of people can learn to program A good sixth of people are nearly functionally illiterate. I'd say well less than a third of people could ever write a real program.

Not only that, but most people are utterly uninterested in programming. Talk to almost any teacher and they'll say that uninterested students don't learn well.

Re: The programming talent myth

#303

Earlier quoted context omitted.

You created a bimodal distribution because you only talked about two types of people. Some people start later in life, but have an incredible talent for programming. Some people start early because they really like programming, but never achieve the highest levels of proficiency because they lack some natural talent. Like most things, programming is a mix of natural talent and practice. Some people have incredible na…

Then, there are those profoundly incapable of programming. My high school classmate who seemed to be getting it, but on the 1st assignment came to me and asked for help. It became clear he had no concept of the ordering of statement. He wrote them like math formulas, and didn't understand that they got executed in order. Fast-forward 3 years; both of us in college. He had to take a programming class again. I met him…

It became clear he had no concept of the ordering of statement. He wrote them like math formulas, and didn't understand that they got executed in order.

We eschew languages like BASIC these days, but I wonder how much BASIC, as available on Commodore machines, the Apple II, or even some graphing calculators, helped communicate this concept. I know I didn't have any problem understanding that when moving to languages that don't have line numbers (although, I did have trouble moving from the full-screen interactive editing on the Commodore to editing "files" as "the program" vs files being a "snapshot" of the program), and I've had the same experience with people who couldn't grok statement ordering. BASIC with its line numbers and simple loops with GOTO may continue to be good first programming languages because it helps with these concepts.

Re: The programming talent myth

#304

Earlier quoted context omitted.

Yes! Like musicians that have tunes running through their head constantly. Or poets that turn every phrase over in their minds. Did you ever dream of debugging your children? That if you could only find the right breakpoint to set, you could adjust them and fix something? Then you are truly a programmer.

Did you ever dream of debugging your children? That if you could only find the right breakpoint to set, you could adjust them and fix something? Or maybe it's a sign that you should take some time off coding and not take your work home and give the other half of your brain some room to wander and explore space and time.

Exploring isn't a passive activity, everyone has their own way of discovering the world and I don't think anyone can claim theirs is superior.

Furthermore, being able to transfer concepts from one activity to another is a clear sign of intelligence: applying an idea to 1-dimensional text and then applying it to social relations isn't a passive activity either, it shows deep understanding of the idea.

Re: The programming talent myth

#305

Earlier quoted context omitted.

You created a bimodal distribution because you only talked about two types of people. Some people start later in life, but have an incredible talent for programming. Some people start early because they really like programming, but never achieve the highest levels of proficiency because they lack some natural talent. Like most things, programming is a mix of natural talent and practice. Some people have incredible na…

Then, there are those profoundly incapable of programming. My high school classmate who seemed to be getting it, but on the 1st assignment came to me and asked for help. It became clear he had no concept of the ordering of statement. He wrote them like math formulas, and didn't understand that they got executed in order. Fast-forward 3 years; both of us in college. He had to take a programming class again. I met him…

[deleted]

Re: The programming talent myth

#306
post #58

My own experience just does not agree with this at all. First, I think we have to distinguish between two ideas here: * The first is the question of whether anyone can learn to program. I think that for the most part everybody can, just like for the most part everybody can learn high school calculus. * The second is the question of whether programming ability is bimodal. This is not related to the first question, and…

> 99% of people can learn to program A good sixth of people are nearly functionally illiterate. I'd say well less than a third of people could ever write a real program.

"Real program" treads close to No True Scotsman.

99% of people can learn to write hypersimplistic programs, with an absolutely maddening amount of hand-holding. Those people will never be employable as software writers, because they cannot be independently productive.

My own father can program well enough to impress all of his friends with his old-man's technical savvy. But whenever he tries something even slightly difficult, he needs my help. He can do well enough to make websites that include a few simple interactive features, but he will literally beat his head against the wall for days trying to solve something that I can fix in 30 seconds.

I can't explain that disparity without employing the premise that some people are naturally better at coding than others.

The ultimate irony is that my mother is a retired lawyer who specialized in draft legislation. If she cared to, she could probably learn to program ten times as well as my father in one tenth the time. She does not care to; she prefers to play video games. (So do I, for that matter, but I need the money.)

Lawyers that work in contract law or draft legislation are essentially writing programs in (nearly) natural language that execute on a human-based operating system, with non-deterministic processors.

Re: The programming talent myth

#307
post #243

Earlier quoted context omitted.

This seems like a form of elitism very specific to programming. I graduated with a degree in Electrical Engineering, and barely did programming until I began my first job out of college. In many people in the programming space, I see contempt that coding was something I didn't start until later in life. When I interviewed for Electrical Engineering positions, no one ever scoffed at me, "you haven't been computing the…

I think it really comes down to how much enjoyment one gets out of programming. If you thoroughly enjoy the process, you are more likely to put in the time and effort (in fact it will feel effortless), and you will be thinking about it all the time. Then there are those who don't mind programming, or maybe even see it as a chore, but choose to do it anyway.

I sometimes see the amount programmers believe they're supposed to enjoy their job as unique to programming.

People always talk about pursuing coding projects just for the fun of it outside of work, but that's a pretty unusual trait for other forms of engineering.

My father has a PhD in Chemical Engineering and has been doing crude assay work for the last twenty years. He obviously enjoys and gets fulfillment out of his job. But if you asked him to analyze crude oil samples on his free time? He'd say you're crazy.

I dunno, I've been in this field for five or so years coming out of other engineering disciplines, and it always surprises me how programmers view their trade as fundamentally different from other forms of engineering.

Re: The programming talent myth

#308

Earlier quoted context omitted.

Yet people think different ways. Its easy for a musician to think "everybody knows how music works; its easy for me so its possible for everyone". The evidence suggests otherwise. I think we may all want to rethink our attitudes.

Sure (although I'm not a musician). But it's possible to get better at something with practice and to think or say otherwise is toxic. If you think it's possible for someone to rethink their attitude then you already agree with me.

[deleted]

Re: The programming talent myth

#309
post #244

Earlier quoted context omitted.

That's like saying all Turing-equivalent languages are the same. It may be true in theory, but is hardly a useful point in most programming language discussions. As an example of code vs. data, and this is a general statement (so YMMV) I try to structure my code such that, if there is a choice between making the code more complex, vs making the data more complex, I generally choose to make the data more complex. The…

Unless I misunderstand your point, how do you create complex data without complex code? I agree with the sentiment, but priority queues don't organise themselves. It seems more like its about the abstractions you use.

It's more of a general rule, a rule of thumb, and the difference between data and code can be very fluid, depending on the situation... But as a general rule it's worth paying attention to.

Just a quick example -- I need to get going -- Say I have a bunch of data in a database I need to do something to once or twice, like validating imported data. It's easier to use a complex select to get it in an easy to process form, then it is to use a simple select and have a complex algorithm to process the data. Generally, given the choice, it's easier to have complicated "static" data, since it's rather static and easier to reason about, rather than complicated "dynamic" code since algorithms are generally harder to reason about.

Re: The programming talent myth

#310

Earlier quoted context omitted.

> Some people are tone-deaf too, and will never sing nor play an instrument. That's quite a telling statement. Actually, there are very, very few people who are _truly_ tone deaf. Since intonation is used extensively in nearly all human languages, anyone who truly is 'tone deaf' will have quite an issue in communication. Nearly all the time (and tbh I think it probably is just all the time), they actually just have a…

Yet people think different ways. Its easy for a musician to think "everybody knows how music works; its easy for me so its possible for everyone". The evidence suggests otherwise. I think we may all want to rethink our attitudes.

Actually, that's really not true at all. In my experience studying music, and surrounding myself with musicians, nearly every professional musician knows that understanding how music works -- and becoming proficient at performing it -- only happens through intentional practice. Nobody starts out as a world class musician, no matter how talented they are. Every new musician who picks up a saxophone, for example, has a hard time playing in tune. It takes time and dedication. To musicians, music is easy because they've earned it, not because of innate talent.

Sure, some people might have "innate" talent in regards to music, but that just means they'll progress a little more quickly. But they still need to progress. And that takes work.

Post reply on HN