7 ms·
That programming is a talent is not a myth, and while my life is currently devoted to developing a platform to encourage more people to learn the basics of comp
by empressplay 12y ago
That programming is a talent is not a myth, and while my life is currently devoted to developing a platform to encourage more people to learn the basics of computer science, I will certainly never say "anyone can learn how to code" any more than I'd say "anyone can become a concert pianist" or "anyone can become a master painter."
Good programming is an art, and requires talent on the part of the programmer. There's nothing wrong in saying that. The issue is that there are thousands and thousands of potentially great programmers who simply never try programming, just as there are thousands and thousands of never-will-be concert pianists. But many children take piano lessons just in case. Why can't they also take coding lessons? Just to see?
- iamthepieman 12y agoA quote from one of my favorite films sums this up nicely. "Not everyone can become a great artist; but a great artist can come from anywhere." -Anton Ego from "Ratatouille"[1] [1] full quote: http://www.imdb.com/title/tt0382932/quotes?item=qt0465220 http://www.imdb.com/title/tt0382932/quotes?item=qt0465220
- lampe3 12y agoto be a great concert pianist it is 5% talent 95% hard hard work... If you dont train your fingers every day and if you dont play for at least 1 hour everyday since your 10 or younger you wont become a great concert pianist... you can say the same for coding. it is 5% talent but the rest is coding coding coding coding... If you have talent the start will be easier but at some point talent wont help anymore just studying and trying.
- Zikes 12y agoIt's not inaccurate or offensive to say that some people are more naturally gifted in some areas than other people. It's certainly possible that with 10,000 hours of practice the average person could become competent at just about anything, but there will be outliers on both ends of that spectrum.
- empressplay 12y agoI agree that practice is integral to being successful as a concert pianist (I am a pianist also so I didn't make the comparison casually), but to give a truly inspiring performance (and not just be a human player-piano) requires much more than just memorisation and repetition. It requires creativity and instinct as much as skill. Programming is similar. If you were to boil programming down to simply "engineer a list of commands to make the computer do X" then sure, most people can do it, with practice and documentation. But to make the computer do X with efficiency, or to make the computer do X in a new and novel way -- or even discover that X is the wrong way to go and the computer really should be doing Y -- also requires creativity and instinct, just like giving a great performance at the piano. "Greatness does not come from programming by rote."
- vezzy-fnord 12y agoThe thing about "coding" is that it's simply the means, not the end. The configurations you can program a Turing complete device with proper hardware into are, for practical purposes, boundless. Being a concert pianist can intersect with many fields as well (acoustics and music theory alone can get quite deep), but ultimately the immediate direction is much more narrow. In fact, I would argue that just "coding coding coding coding" won't get you all that far alone. There's plenty of "reading reading reading reading" so you can actually have the skills and knowledge to write what's intended, and then there's all that lesser visible knowledge out there that is just as crucial, but hidden in (relatively) obscure references or papers - unless you intend on reinventing lots of square wheels.
- vinceguidry 12y agoIt's not that simple. So, one of the best illustrations of how talent works is in football placekickers. To make it in the NFL, you have to be able to reliably kick a field goal at X yards. X goes up every so often. Some athletes can do it, some can't. I read a story once about a guy trying to level up his skills to NFL-level. He spent weeks out on the field practicing his kick. He could hit the goal, but not reliably. One yard closer, and every kick sailed right in. One of his buddies, a minor league baseball pitcher, went out with him one day, asked to give it a shot. On his very first try, he kicked it right in. A pitcher. To be great, it requires getting out on the frontier of human ability. That frontier often looks very, very weird. One seemingly small additional challenge turns you into a puddle of mush. Getting there requires hard hard work. But excelling over everyone else who also put in that hard work requires talent, and it's generally a binary proposition. Until it isn't. Once Roger Bannister broke the 4 minute mile, floods of athletes started doing it. Then the frontier goes somewhere else, the talent required to get there is increased. But one can only put so many hours of their day into an activity. So when you're talking about greatness, talent ultimately matters more than hard work. One should ideally find out as quickly as possible whether one has the talent to make it out to the frontier of human ability. So they don't waste lots of time doing something they can never find greatness doing. The aforementioned aspiring placekicker? Gave it up. Now he's a successful author, real estate investor and football coach.
- vpeters25 12y agoI disagree with this. I think natural talent is what allows you to pass the "filters" from better tutors, people which just wont train you unless "you've got it"
- gnur 12y ago>> I will certainly never say "anyone can learn how to code" any more than I'd say "anyone can become a concert pianist" or "anyone can become a master painter." So learning to code is equivalent to being a master painter or concert pianist? Which both are amongst the top 1% of their field probably. Anyone can learn how to paint or play a piano, the level they'll achieve won't be the same everyone, but anyone can do it, just like anyone can learn how to code.
- eanplatter 12y agoAnd you don't have to be at the top 1% of your field to be a valuable asset to a company.
- empressplay 12y agoI can't speak for the painting side of things, but no, not everyone can learn how to play a piano. For one thing, left-hand / right-hand independence isn't a universal trait, and isn't something that can always be "learned" (there's a reason why chord / melody books are so popular). Finger independence is even trickier. Sight reading, relative (or even perfect) pitch -- these are _talents_ that make a good performance possible that often can't be learned by those who lack the talent. Designing algorithms, debugging, interfacing with hardware, finding efficiency -- the myriad of things that go with programming, these things can be done by a layperson the same way a wealthy hobbyist pianist can plunk out "Music Box Dancer" on their $10,000 grand piano -- but will they be done well? Will the hobbyist pianist give a great performance? They might be happy with it, and that's fine. But will they get to Carnegie Hall? No? I'm not saying the hobbyist pianist shouldn't try any more than I'd say anyone who wants to write a program shouldn't try -- but the article suggests there's no real benefit to "talent" and that's just silly. There _are_ rockstar programmers, and we should acknowledge them, just as there are great concert pianists. And everyone should be encouraged to try both piano and programming. But not everyone will be successful at either or both of them.
- sp332 12y agoThat is not what the article says. It's about an attitude that only great programmers are welcome and average programmers aren't worth anything.
- acbart 12y agoI believe that, in theory, 99% of everyone can learn to code. However, some people will take prohibitively long to do so. These people may have other talents, but they will struggle in learning how to code and probably only achieve minimal success. Of course, that's using a completely vague and arbitrary assessment of successful coding. I teach an intro coding course for non-majors at the undergraduate level. So my numbers are based on the performance assessment we use.
- tptacek 12y agoIt's probably also true that not anyone can become a truly capable finish carpenter, but we don't build an elaborate mythology around why that is, and we assume that most people have a pretty good shot at it, if that's what they want to do.
- nine_k 12y agoYes, probably anyone can become a master painter, but for a person with a disposition and love to painting it's easier to start and to keep going. For someone who loathes painting, it's massively, prohibitively harder. Success in any craft (and science) in 5% talent / luck and 90% hard work. But the love to the craft / science makes exerting this effort massively more rewarding. I don't think that training oneself to be a master is not attainable for someone who does not have a burning passion for this specific mastery. For instance, a mastery of programming might be a gateway to other things, for which the passion is burning. The number of things for which ability to code is now a gateway is growing, be it financial modeling, computational chemistry, linguistics, etc. Also, there's mastery and there is peak achievement. Everyone (except severely mentally disabled) can be taught writing skills and write nice, clean, well-organized texts. But probably not everyone can become Hemingway or Borges or Nabokov. Equally, everyone can be taught to write nice, clean, well-organized code. But probably not everyone can be a superstar like Knuth or Norvig or Carmack. So I'd reserve the word "talent" for the highest achievers. Talent is not required to be a decent programmer.
- jmagoon 12y agoThat's not the point of the article--it's not that there aren't some people with insane intrinsic talent, it's just that the majority of people fall on the below-average - average - above average distribution, and that you can create plenty of great stuff right in the middle. The other point is that the "concert pianist" and "master painter" are damaging stereotypes for the development industry--almost no one is Mozart, and the persistent and toxic idea that every programmer needs to be Mozart prevents good people from feeling good about their work. Additionally, he makes "good programming" a bit more nuanced. "Programming" isn't a monolith that you can either be good at or bad at--it's composed of many subcomponents that you can have various competencies in without suddenly passing a magical line from good to bad. I think the argument is quite a sane one--the stereotypes that people fall back on are just that: an attempt to reduce a complex set of conditions into a simple binary.
- scotch_drinker 12y agoThis is a critical subtlety to this discussion that is never mentioned as evidenced by the comments in this thread. Just like "piano player" is a continuum, so is programmer. I will never be able to work at Google because I lack the requisite skill set in the same way I'll never play Carnegie Hall because I'm not good enough. But that doesn't mean I can't provide quite a lot of value to businesses who don't require the kind of talent Google does. I like to think of ecosystems in discussions like this. Yes, the Google/Carnegie Hall ecosystem requires the talents of rockstars. But the places I work are a totally different ecosystem and require a different type of individual.
- kpil 12y agoI think the main frustration is that the required minimum level for developing software in a team really is comparable with the skills required for working in a studio orchestra - not only at google but actually for working on any system above a certain size. Maybe not world class, but certainly rather good. In both cases, some "intrinsic" talent is probably required, and it helps to have a rock star or two to really get the team/orchestra to deliver. One other factor is that most systems and programs of a certain size are actually quite hard to work with - the "average" may not be enough, driving costs and unnecessary complexity until the system spirals into it's own collapse and eventual replacement. One problem is that while anyone can tell if someone is any good at playing the piano, it will probably take 6 month or more to discover who is 30x more productive at developing and maintaining software, or who will in fact destroy more value than they contribute in the long run. It's safe to say that developing software requires more than the average level of "talent" that is available in the population, and possibly also among the profession.
- noname123 12y ago> I will certainly never say "anyone can learn how to code" any more than I'd say "anyone can become a concert pianist" or "anyone can become a master painter." I disagree respectfully with that statement. First you devote a lot of your time to try to teach peeps about CS and I think that's great. But I'd argue that music and coding, to your comparison are essentially languages (former is a language of rhythm and melody and wielded by a physical/electronic instrument, latter is a language of algorithm and logic and dictated by a PC) and learning them is akin to language acquisition. So IMHO, there is an illusion of talent when you have native speakers who can speak with perfect accent, grammar and fluidity; just like there are "native" musicians who have perfect pitch, can transcribe and improvise on the fly, play with speed/style. Because they have internalized the grammar, and that language's vocabulary and phrasing are by definition the native's first nature. But non-native speakers can learn a foreign language albeit very painfully, perhaps with an accent and pauses that they'll never get rid of. But they can still express themselves successfully. Put it simply, I believe anyone can be taught the basic's of web development/CRUD, OOP, basic flow-control just most people can be taught how to play "Chopsticks" or conversational English. The programming equivalent of writing "The Great Gatsby" or composing a sonata, I'll concede that to the real talented.
- EdiX 12y ago>Put it simply, I believe anyone can be taught the basic's of web development/CRUD, OOP, basic flow-control just most people can be taught how to play "Chopsticks" or conversational English. Someone who can do web dev/CRUD is employable, someone who can only play chopsticks is not (in fact you wouldn't even listen to them for free). Even if I agreed with everything else you wrote you brought no reason why people should be able to acquire more proficiency in programming than they can acquire in piano playing. Also, I think learning how to program/paint/play is nothing like natural language acquisition, from an evolutionary point of view there is no reason why this should be.
- sean2 12y agoI normally stay out of these debates, but as a teacher, you may be in a unique situation to appreciate this view point: How about "learn to code"=="learn to play the piano" == "learn to paint"? I don't think that you learn to code "just in case." I learned because it let me automate some things and later, let me make my own games. It turned out I've been good enough to get paid for my level of "talent," but I'd still be happy I learned, besides the joy of the mental excercises, I've also been able to automate alot of (ussually self imposed) challenges in my life. I also learned to play the piano in my teens. I'm a sucky digital-artist as well. It was obvious I'd never be a concert pianist or master painter or even get paid for either. It baffles me that people can go through life without being able to play an instroment or paint, but I didn't learn "just in case"; I've been making use of both for my own enjoyment and unpaid sharing with others. I think a great many of your students who lack talent will get great use out of the ability to automate processes on a computer and maybe gain life long enjoyment, even if they don't have the presupposed talent.
- dragonwriter 12y ago> I will certainly never say "anyone can learn how to code" any more than I'd say "anyone can become a concert pianist" I would certainly say "anyone can learn how to code" in the same way that I would say "anyone can learn how to write", or "anyone can learn to run", or "anyone can learn to play piano". I wouldn't say "anyone can learn to become a concert pianist", in the same way that I wouldn't say "anyone can learn to become the technical lead of a software firm that revolutionizes the industry" or "anyone can learn to be an Olympic sprinter" or "anyone can learn to be professional novelist". But programming is, IMO, a bit like writing (though certainly not as foundational) in that you don't have to be a professional programmer to get professional benefit from having some understanding of programming, just as one doesn't need to be a professional writer to get professional benefit from writing (even piano is a bit like this, though the domain in which it is beneficial is somewhat narrower and definitely centered in a different place than where programming is beneficial.)
- agumonkey 12y agoI'd say it's all a question of bandwidth. Geniuses just have enough capacity to converge quickly. "Incapable" people are below the threshold, so everything ends up as a cache miss, lock contention, pipeline flush; progress is so slow that they're directed onto other things. Wise people can attempt to craft their learning to converge smoothly too, they have patience to focus energy and wait for data to emerge, because they went through the slow discovery before, like a longer timeout. With time you may grow very impressively, realize that stuff eluded your senses and mind, eureka, but time is an expensive resource.
- fapjacks 12y agoI think this is really the key here. There is surely a natural, in-born talent for writing code, as there must be for every activity a human can engage in. But I think it's possible for people arrive at the set of circumstances that takes them from okay programmer to "talented" programmer. Time and focus I think are key, as you mentioned. People that don't dedicate enough time or focus to this craft will never achieve a high enough level of productivity to be called "talented", unless they have that natural, in-born, freak capability to code. But even these people are just okay programmers on days they can't get into the flow. Anyways, I think circumstance plays a much, much bigger part than most people realize.
- rileymat 12y agoI think you should reread the article. It was mostly tackled the distribution of programming skill.
- netcan 12y agoI think there is a matter of degrees and a matter of return on marginal "talent" for lack of a better word. Being a concert pianist (or Lady Gaga or Floyd MayWeather) is competitive in such a way that the return on being the 1-in-a-thousand is way better than 1-in-ten. Way better. Most things are not like that. In fact very few programmers even pursue that. Most science is not even like that. If you are a zoologist studying marsupial reproduction, you are not in a winner take all contest, you are in a 'do thew job' situation. You don't have thousands of eager marsupial reproduction researchers biting at your heels. There are plenty of marsupials to go around. Most things are like this. Even pianists once needed to attain an achievable level of mastery in order to be pianists professionally and entertain aristocrats before the invention of the Zune. The availability of aristocrats did fluctuate and so did (I imagine) their interest in music, but it's not the same as trying to be the best pianist on earth. The realistic version of this is that output, especially creative output varies by person. Also throughout ones life, by context (is this fun for me today?) and lots of other ways. Some kids hat math. Some of them wouldn't if the teacher or method was different. Most can do pretty well.
- themoonbus 12y agoA more accurate analogy would be "anyone can learn the piano well enough to play in a bar and entertain patrons", i.e. not in the 1% of piano players, but you are good enough to be effective at a job. Also, I felt that the point of the article isn't that anyone can code, it's that we are discouraging people who COULD have coded.
- JoeAltmaier 12y agoWhich, for a consultant, means more work for me.
- ffn 12y ago>Good programming is an art Exactly this (though OP's article touches on this too). All the BS about category theory, lambdas calculus, and "logic" aside, DHH was absolutely right when he said building large software systems is much closer to writing a novel than anything science or math. Because of this inherent creative art nature, programming often depends on divine inspiration (for lack of a better term) - sometimes you sit down, and immediately see how all the workflows and data-structures, sometimes you can beat you head against a screen for months and wind up refactoring half of it. In my opinion, the best way to tell if you are cut out to be a great programmer or not is whether you can finish and publish a project or not. Sorting algos, typing speed, functional programming, monads, es7-await, and all that jazz that interviewers like to look for can all be learned (and, comparatively, they are easy to learn), and even if you learn them, it won't make you a good programmer if you can't build extremely complex and yet detailed systems in your head.
- hindsightbias 12y ago> good programming is an art If the approach to encouragement is to require artisinal comparisons for success, then you're alienating many right out of the gate. Most kids loathe piano lessons. But they can still be 10-100X better at it than anyone here and not need to stroke their egos by calling themselves artists.
- dean 12y ago"In a fixed mindset, people believe their basic qualities, like their intelligence or talent, are simply fixed traits. They spend their time documenting their intelligence or talent instead of developing them. They also believe that talent alone creates success—without effort. They’re wrong." http://mindsetonline.com/whatisit/about/ http://mindsetonline.com/whatisit/about/
- themagician 12y agoGood programming is an art. The same can be said for good photos, or good works or fiction, or great compositions. The reality is that most computer programs don't need to be good. In most cases they don't even need to be efficient. They just need to work. Even then, they usually just need to work for a short time because of the ephemeral world of software development we live in. There are some really incredible engineers out there. When I look at their code I'm often in awe. "Why didn't I think about that," is what I think to myself. Or someone is using some bizarre function or mathematics that I don't understand to achieve something with an efficiency I couldn't ever come close to in my own code. Most people who make a living writing code are just writing the same things over and over again for different employers. There's no elegance in what they do. There's no art. I make websites, apps, and simple programs for automation. Sometimes the end result looks pretty, but if I'm being honest with myself the code is very… meh. Anyone could do it. Living in the Bay Area I can safely say it's mostly a dog and pony show. There are a few people doing something really interesting, actually pushing the limits of technology. Most of us are not those people. Most of us (myself included) are writing garbage for silly products that people use to distract themselves. It's fun, but not really challenging. Most of the people I work with have no idea what hard work actually is. Working in the Bay Area is the easiest thing I've ever done. Honestly, I didn't realize life could be so easy. Learn how to sell yourself, make something appear on an iPad, and people want to pay you $100k/yr. Sometimes I feel like a thief, but everyone around me is doing the same thing.
- Goladus 12y ago> "anyone can become a concert pianist" There's a huge range of skill between "concert pianist" and "no good at piano." That's kind of the point of the speech, I think There are hundreds of pianists with a very high degree of skill, but that are not concert pianists. Many are essentially freelancers and take gigs as they come-- choir accompanist, pit orchestra pianist, keyboardist in a band, resident organist in a church... etc.. Many of those pianists are quite skilled and talented, even if they are nowhere near skilled and talented enough to be a reknowned "concert pianist" like Murray Perahia, Emanuel Ax, Alicia de Larrocha, Mituko Uchida, etc.. The excessive focus on the idea of a "concert pianist" talent leads to this situation where the day to day programmers aren't getting the credit they deserve. For more on the under-appreciated musician analogy: watch the movie Waiting for Guffman and pay attention to the musicians. The dialog in the movie basically never acknowledges them. They're completely taken for granted by the other characters, but they are impeccable-- easily the most professional performers in the production. There's one point where one is playing the trumpet and timpani at the same time. I think that's the idea-- solid, productive programmers not being recognized for their talent, because they're compared to some incredibly high ideal. Though there's also this dunning-kruger thing where lots of mediocre programmers think they are way more skilled than they actually are either because they're the best programmer in their little bubble, because they're a devout adherent to some specific coding religion, but haven't ever really been measured against an objective standard. Specifically because there are so many words wasted on "rock stars" and "ninjas" as well as blubbers and someone's personal experience with some horrible developer whose incompetence caused so many problems, etc...