Skip to content

Comment on Sorry Dan Shipper and other coders, you are wrong.

Comments

How much of programming potential is innate? Is saying "I'm not built to be a coder" more like saying "I'm not built to learn a foreign language" (which is implausible and smacks of laziness if you're at least moderately intelligent), or more like "I'm not built to be six feet tall" (which is true for most of the world's population)? I'm interested in the truth here, not in just-so answers based on personal experience. Are there good scientific studies answering this question, and do they agree? And if programming potential is mostly innate, is there a simple test for it that doesn't take 6 months?

I'm repeatedly surprised by how often good coders take their skillsets for granted, as something everyone could learn in a short time if they set their mind to it. They think that just because computers make intuitive sense to them, and they can learn any new programming language or paradigm in a few weeks, a newbie could do the same -- albeit in a matter of months, perhaps. They learned their most important skills from toodling around on the internet, or deconstructing simple machines or programs or something, and they think that this means you don't need formal training, it can come to anyone with time.

The thing is, I don't think people appreciate how much of a deep skill thinking logically is. It's not something you can pick up in a weekend: there is a monstrous gap between the basic common sense appreciation of cause and effect that nearly everyone attains in their lifetime, and the rigorous analytic mind that can look at a series of instructions and deduce all possible outcomes. This is a skill that doesn't require formal training, yes, but it is a skill that must be mastered, with all its requisite 10,000 hours of training beforehand. The best programmers have all been doing this for years, deconstructing the world and its workings whenever they can, and learning the mechanical structure behind their every experience. This training has given them a unique mastery, and while it's not for me to say whether this skill is fundamentally innate or purely a result of practice, it certainly takes years to develop the right modes of thinking. All I can say is that mastery the ability to think logically is a prerequisite for programming in any deep sense, and not everyone has this skill. This is why when I ask my mathematician and physicist friends to look at a program, they can decipher it in minutes even if they don't consider it particularly gripping, while if I ask my writer and even medically trained friends they blankly stare at a wall of gibberish.

Sorry if this answer is more anecdotal than you are asking for, but in my experience there is a fundamental skill in programming that must be mastered that many programmers take for granted, and you can't expect people without it to pick up deep programming in a reasonable amount of time. That's not to say there's no useful place in a place with colleagues for someone who can't really synthesize new bulletproof code, especially in this age of Google and StackOverflow, but the kind of skill people need to whip up a prototype of a novel application on their own without outside assistance takes years. I think Zed Shaw is right in his response to this blog post, if you really are a "people person" than perhaps coming to a programmer with a completely thought-through user experience designed out matches your skillset better, and it's every bit as valuable to the final product as programming knowledge.

This is one of the best comments I've read on this topic. Again, anecdotally, I look at the world in a massively different way than other people in my family (other than my brother who is also good with computers). This way of thinking is repeat with looking under the hood, analyzing why things behave the way they do, and imagining other outcomes that could occur. There is also a lo more questioning, followed by needing to know the answer.

I wonder how you could define a study to determine corellation versus causation here. Maybe I think this way because I've spent so much time fighting computers. Or maybe I've been willing to spend so much time fighting computers because I think this way. It's a fascinating question to me.

The limiting factor for people isn't some innate attribute, it's time.

You need x amount of time coding, debugging, refactoring before you can call yourself a programming 'expert'. This is time that could have been spent learning some other skill like how to cook, how to fly a jet, how to bungee jump while flying a jet, etc.

The real question is, how much time is the person willing or able to invest in learning how to program?

You don't think that some people are simply better suited to tasks that require a high degree of logic than others? Really? I would think that day to day interactions would teach you that much... We're not all born as blank slates with near unlimited potential.

I distrust the blank slate theory as much as the next guy, but have some doubts specifically about programming. For example, in the programming profession you can find many folks who are similarly clueless about cooking. Would you believe if one of them said to you "You know, I just wasn't built for cooking"? Maybe the mindset necessary for programming (and logical thinking in general) is just very difficult to communicate, and some people just stumble on it by accident? That's why I'm asking for citations.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.