Live data from Hacker News

The programming talent myth

lwn.net

211–220 of 354 posts

Re: The programming talent myth

#211
post #152

Earlier quoted context omitted.

> To be a full-stack developer these days requires so much more than the ability to create a working program. The big picture is very big, it takes many years to get a really sound grasp of it This is a major point that tends to be overlooked by a lot of people. There's a big difference between just "coding" something to make a little feature work, and actually building an architecture that can support many kinds of…

> Many people can't seem to make the jump to the "bigger picture" version of programming TBH I am not sure there is even a viable "smaller picture" version of programming. Sure you can write some simple scripts and compile some C++ or Java or run some python. But I have to think 99.99% of what you could actually make a living doing would require knowing a stack at least from the database up to the browser or desktop.

You can know the stack but then write raw code with nested if statements and for loops to just implement the current requirements to the letter. As soon as a small change is introduced to the requirements, you're screwed.

Re: The programming talent myth

#212
post #134
post #94

Earlier quoted context omitted.

Been screwing with computers since 9 or so, and programming since 11 or so. I'm now about 4 years into my professional career and usually get the typical "amazing programmer" remarks, that I'm fast, smart, good code, beyond my years, etc. I think that a lot of things go into it. First, practice, practice, practice. I spent waaaaay too much time in high school writing/designing/building projects. By the time I hit uni…

"or that 10x chef" I like the chef example. I know from past discussions here that there is a large contingent of HN posters who are terrified of their own kitchen, which is a shame.

Indeed.

My spouse got sick with a pretty nasty colon disease. She was not able to do much for a long time.

Cooking got fun. I still suck, but I suck a whole lot less now. But that's not important. What matters is cooking turned into fun. I play, explore, and enjoy learning new things, which come increasingly easy. And the more you play, the better the food. The better the food, the more you are surrounded by people who enjoy your food. We will cook together now. And it's a nice evening. Get some good, or new ingredients, and go.

Chefs are awesome.

And they share too. They know the strong relationship people have with food can bridge a lot of differences. And when people enjoy the work, there is a lot of simple gratification and bonding associated with all of that. I can totally see doing that for a career and being very happy. Strange, having it all be so foreign not so long ago...

The thing is, most of us can do this. Good, basic, well prepared food is within reach of most anyone. Worth it, IMHO.

Re: The programming talent myth

#213
post #124

Earlier quoted context omitted.

I guess the ability to overcome the urge to seize up is, itself, something one needs to acquire. There is little in my life that I'm afraid to attempt. Investigate a problem and break it down into its component parts, repeat ad nauseam. I know too many folks who just throw their hands up and don't even tackle it. Now you also need to recognize when you're in over your head (in terms of knowledge, in terms of capital,…

It's an attitude, and while definitely harder to develop than technical knowledge, it's not innate ability that one cannot acquire later in life. On the other hand, some people never develop this in their whole lives.

But if it does not come (somewhat) naturally, why would you bother to develop it?

We get so caught up in the question of "can everyone program" that we forget to ask if everyone should. There's a massive contingency of folks who couldn't care less about breaking down problems into their constituent parts and writing code to solve them.

I am a big believer that a person should try many things in varied fields -- math, art, science, music, athletics, and so forth -- and discover what they're 1) naturally gifted in and 2) what they're interested in. Then they should nurture those skills.

We would never dream of taking a person who was not gifted at basketball, and also hated it, and push them to try and be in the NBA. We don't encourage tone-deaf singers, who also don't get a kick out of performing, to become touring musicians.

In many other fields we acknowledge that a level of talent is necessary, and we also accept that not everyone is born with that talent. Further, we accept that not everyone even cares to HAVE that talent. Yet in programming we further this notion that if you aren't good at programming or don't want to learn, you're not trying hard enough, the fault lies with you - ur doin' it rong! It's the worst kind of narcissism to think that people who can't or won't do this thing we love are simply being defective people.

Re: The programming talent myth

#214
I think it comes down to whether you have high standards. Or were taught with high standards. Or were mentored with high standards. And whether as you grow you have the luxury and the persistence to keep them up. If you do, you fold in stronger and stronger building blocks that over time 'scale' and allow one to move effectively and often more quickly. If you could measure it, it would have to do with the density of the parent tree nodes within which you approach problems. Some people are lucky to have grown under rigorous conditions while yet still being exploratory and developing breadth.

If 'talent' is a function of tree node growth though, talent is not going to be bimodal. It's going to be unimodal with some long-tail bias because of the rewards theoretically of being really good at programming.

Re: The programming talent myth

#215

The problem with the argument that "Programming skill can't be bimodal because that would be elitist and make me feel bad about myself being an elitist" is that there's a lot of evidence that programming skill is bimodal. Look at fizzbuzz as an obvious, if not entirely complete, example. Would it make us all feel better if programming skill weren't bimodal? Sure. But a roomful of people clapping at that proposition d…

> Look at fizzbuzz as an obvious, if not entirely complete, example. I am not entirely convinced this is not partially a resume screening and talent pipeline problem. Has anyone ever given Fizzbuzz problems to everyone who applied to a position? If you haven't, have you ever considered that your screening process may be broken in the sense that you are passing too many liars who then bomb the Fizzbuzz portion, but wh…

We give fizzbuzz style tests to all our candidates. Most fail, but it's not an indicator of experience at all. Some of the quickest to pass just got out of GA and never worked in the industry before. It really tests aptitude at a specific type of problem. Because of this it does not make or break the interview. We also look at their portfolio/code samples as well. After interviewing many candidates I've found the one's who pass our fizzbuzz tests also have much better code.

Because of this I'm convinced that aptitude and passion are significantly important to the ability to program. Just grinding your way through CS classes will not a programmer make.

I should add we let the candidates use google, so even if they don't know modulus or whatever, they still can prove their ability to look up things.

Re: The programming talent myth

#216
post #165
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…

The problem with relying on personal anecdotal evidence is that it is inherently biased. The only way to truly answer the question is find a way to reliable measure coding skill. Otherwise you find yourself making the same mistake you think Jacob is making. Using faulty data to back up an assumption. Part of the thrust of Jacob's talk was that there is probably a whole class of developers out there who would be just…

Hear, hear!

I started on AmigaBASIC and later ARexx. QBasic on later 386/486 machines. Pascal, OOTuring (a Pascal-like educational language), and C in high school. Perl near the end of high school. Python in my early twenties. Common Lisp in my late twenties. Have tried a bit of Haskell and OCaml here and there. Though I'd say I've settled on Python, C, and Common Lisp... trying to make brain space for OCaml only because I find Mirage to be such a great idea.

I've given talks on BloomL implementations, constraint propagation solvers in game level design, and have written various bits of libraries and such over the years. Nothing terribly "ninja" like here. Depending on the audience I may sound like a wizard or a clueless hack. The reality is I'm probably somewhere in the middle in skill if programming were a quantifiable skill. The only reason I can cite these things is because I tried and learned some things not because I was born with some legendary ability to whisper to a computer what I want it to do. At the end of the day they are just machines and there's nothing super-human or special about learning how they work. It just takes time and effort like anything worth doing.

The theory, as I understand it, is that without sufficient evidence we must assume that programming ability follows the same bell-curve distribution as every other quantifiable skill we can measure.

Re: The programming talent myth

#217
Programming benefits from dogged perseverance. If you have lots this trait, it can overcome other shortcomings.

It also benefits from being thorough and detailed: analyzing all the cases that may occur, forming all the conceivable hypotheses and so on.

It doesn't matter if it takes you five hours of hacking on something to finally see a solution that some brilliant programmer came to in 45 minutes of hacking.

Maybe it was luck; his or her brain generated some spontaneous idea which revealed some aspect on the problem resulting in a breakthrough, while you were methodically working through various hypotheses (including the boring ones).

Brilliance will lose in the long run to dogged perseverance and thoroughness.

Brilliance has an advantage in dealing with badly structured programs; the brilliant mind has a great memory and can simultaneously hold a lot of the program in consideration: for example, to visualize a complicated run-time interaction between numerous scattered pieces of code. The more brilliant mind can handle a larger instance of this sort of thing than a less brilliant mind. But there is a limitation on it. It's kind of like being muscular. It's impressive that you can bench 300 pounds, but it's useless in the big picture where we might need to lift 30,000 pounds. And where we therefore use a machine to do it, and that machine can be easily operated by a "90 pound weakling".

We can erase the advantage of the brilliant mind by not structuring the code such that only the most brilliant minds can visualize how some scenario arises in order to identify a problem. And we can also use tools: tool to help us visualize, analyze, validate, and so on.

Where we ultimately need brilliance is in forming ideas. Someone who comes up with great product ideas (and ones that sell, too) cannot be replaced by a machine, or by someone who just has perseverance and thoroughness in the face of details.

Re: The programming talent myth

#218
post #165
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…

The problem with relying on personal anecdotal evidence is that it is inherently biased. The only way to truly answer the question is find a way to reliable measure coding skill. Otherwise you find yourself making the same mistake you think Jacob is making. Using faulty data to back up an assumption. Part of the thrust of Jacob's talk was that there is probably a whole class of developers out there who would be just…

Every human ability has a natural distribution of what for a better word we can call "talent". This is as true of running or tennis as it is of coding. To claim otherwise is to tell people who aren't naturally very good at tennis that they are moral failures for not working hard enough at it, which is insulting and demeaning as well as false.

Furthermore, there is evidence that the ability to code is non-linearly dependent on some fairly uniformly distributed basic abilities. The bimodal mark distribution of first year software courses is evidence of this. It is trivial to reproduce it using the assumption that the underlying skill-set is uniformly distributed, but there is a threshold of ability below which coding becomes very hard: http://www.tjradcliffe.com/?p=1471

There is a very simple way to disprove this hypothesis: find a way to teach coding that will get rid of the bimodal distribution of marks, which has been vigorously attacked by educators for decades without progress. The things we have learned in that time are:

1) It doesn't matter how passionate the teacher is about believing that "everyone can learn to code"

2) It doesn't matter what language is used

3) It is very hard to predict who will be good and who will be bad.

Because of this, there are three reasons we know cannot be the source of the problem: the attitude of the teachers, the langauge used, or the number of years experience prior to university. If any of those were the cause the extensive research on this issue would have revealed them in the 80's.

I'm prefectly willing to believe that most people can be taught to code, and if I can be shown evidence of a teaching method that gets rid of the bimodal distribution I'll happily abandon the barrier-to-entry model I've proposed in the link above, but until then, it can't be called anything less than a plausible hypothesis. Certainly not a "myth".

Re: The programming talent myth

#219
post #208

The importance of talent is often overstated, but it's not a myth. The years I spent trying to do software development were like beating my head against the wall. Everyone seemed to be much better than me, and it led me to give up after a few years of starting and stopping. If I couldn't even manage to make a simple application, what was the point when so many people made one every day? So I gave up and focused on ot…

This is all anecdotal but learning to program is (IMO) somewhat like math in that it is virtually impossible to learn it while not feeling confused and lost because there's a lot you have to internalize (and often this includes multiple concepts sort of all at once) before everything clicks and makes sense.

Talent is a thing, surely, but IMO the primary "talent" when it comes to learning to code is having the mindset where being lost isn't a problem for you. Some people hate this feeling of not intuitively knowing what is going on (possibly for an extended period of time!) while others embrace it, the latter tend to be the ones who end up excelling at programming (and/or math).

"Most of the code I wrote even before finding a need is solid, efficient, and secure. But that's because I'm so bad at it that I have to be careful. If I don't write clean, efficient code, I won't be able to understand it well enough to fix it when something goes wrong."

If your code is good it is because you are a good programmer. Full stop. Not being able to understand and fix your own code if you aren't writing it cleanly (and as simply as possible while doing the job) is universal.

"Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it?" - Brian Kernighan

Re: The programming talent myth

#220
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…

Agreed, and I think this applies to nearly everything in life. Everyone can learn, but it takes a certain something, which you can't learn, to become great. I spent years in life drawing classes, about 6 hours a week. There was always a clear divide between those that were great, and everyone else. Those that were great, reached that level quickly, and everyone else improved, but remained slightly above average at be…

This quality can be teased out of more people than we think.

A whole lot of "that quality" comes down to a couple things. One is basic inhibition. Learning to shed this dramatically improves one's potential for performance activities of any kind, and speaking in public is a performance activity for sure.

The other is coming to understand people better. Empathy is a part of this, but so is just understanding how different people are and how they respond to things varies just as much. There are commonalities, of course, but there comes a basic security from being able to read the crowd and that feedback feeds into the lack of inhibition, allowing a person to shine much brighter than they would otherwise.

This from a geek who had a fair amount of music, theatre early on. I still remember the "unlock" where I came to understand the importance of conveying intent, being humble, and not having that basic fear that locks one up so much. Failure is OK. So are basic gaffes and mistakes. People are way more forgiving than we are to ourselves.

I think Elon could improve considerably. He doesn't need to, and he's got his time priorities right where he wants them. Maybe sometime in the future those could change. Should that happen, some time spent with the right kind of people could very well open him up to a degree we may find surprising. Elon has deep passion and resolve and drive. Those things, brought out in a bit less stiff fashion may have an impact he would value someday.

In a very real sense, those that pick it up quickly, care more too. I sometimes mentor engineering types who need these skills for things like pre-sales, or to begin consulting and selling in various ways. Reducing inhibition is important. For many, it's simply not knowing what will happen, so the default is to do the minimum to limit risks and unknowns. Caring is also important. For many, the speech or show more generally, isn't core. Does not matter as much as the tech, or whatever it is being spoken.

Cracking that tends to be linked to understanding the selling of ideas, movements of money, and a lot of other things get driven by those who can handle people, and there is a science, and I would argue, technical aspect to that just as there is any thing with sufficient dynamics as to not be obvious at first glance.

Post reply on HN