Hacker Newsnew | comments | show | ask | jobs | submit login

This looks like it will be effective.

Something to think about...coding well takes a certain type of mind that most people don't have. Code is, as Fred Brooks says, "pure thought-stuff." You need to be able to build and understand multiple layers of abstract stuff all at the same time.

Coding is like having a vivid dream in that you're occupied with something entirely mental and disconnected from your physical reality. But unlike real dreams, it's coherent and rigidly structured, and fits in your conscious mind.

Some people can think this way. Most people can't, even if their mind is advanced in other ways.

I don't think most people, even the ones who are interested in Codeacademy, realize this.

(That said, I think it's useful for people to try to learn to code to understand the basics. And surely lots of people out there could code, but haven't learned yet. But most people will not be able to build complicated "apps and websites.")




I used to think exactly like this -- that coding well required some inherent differences in thought structure -- but not since I really started watching the progress of those I taught. As you learn, you're not just picking up information, the way you think changes. I'm now quite convinced that effectively everyone can pick up these odd thought processes, whether they're the ones required for programming, reverse-engineering, or otherwise; it just may take more work for some.

-----


I don't know - you read blog posts like the Spolsky one discussing this issue, and they claim that CS lecturers see a definate split between people that understand programming and people that don't, no matter how they try teaching the concept.

I personally believe that many people just can't grasp the ideas behind programming. But I would say that this is just because programming is hard - so hard that even those of us that are good enough at it to program for a living still struggle. It seems to me that the really good programmers are the ones that recognise just how rubbish they actually are at programming and try to do everything to make their code as easy to understand as possible. Functions that take up less than one screen, files that never have more than a thousand lines of code or so, using interfaces so that you don't have to understand implementation details, unit tests so that you can have confidence in a block of code and not have to doubt details when debugging, checking input values for functions. These are all things that you see in code written by those recognised as being good programmers, and yet they are all techniques that aim to reduce cognitive load when reading code. I don't think this is a coincidence.

So, if those of us that are good at this only just manage to get over the bar of adequecy, it stands to reason that there must be a lot of people that just don't make the grade, assuming a normal distribution of programming skill.

-----


There are a great many people out there who are intimidated by exactly this type of mindset. While this may be true for solving extremely complicated problems or building massive applications, the reality is that people across a vast number of professions outside of programming could benefit greatly from basic coding knowledge to solve simple problems. You may not be able build a software company on basic coding knowledge, but you also dont need to have some higher order of thinking or skill to be able to benefit from the basics.

-----


I find it very distasteful whenever anyone suggests that certain people have or don't have certain types of minds. Down this slippery slope lies the path to elitism and snobbery, and gender and ethnic stereotyping.

Minds are plastic, and people choose to fill them however they like. If you practice musical performance, you become more musical no matter how much "natural talent" you start out with. Though there are people with physical limitations and true tone deafness, they are few and far between.

Becoming better with practice holds for the development of problem solving strategies and heuristics as well; all anecdotal evidence aside, improving visualization ability and learning from experience is the formula for making "those who code well". What we lack in our education process today is teaching the ability to think critically and logically and the process of breaking larger problems into smaller, manageable ones - and this is why we have people who think they can't code, or simply won't code even if they have the honed mental tools to do the job well. The fact is, it is very hard to think in the abstract for extended periods and most people just don't want to do it.

-----


You don't think there are any genetic differences between people?

The mind is plastic, but there's a strong genetic component too...and this all has been debated soooo much...

I find it natural - not hard at all - to think in the abstract for extended periods. Most people don't.

Also I agree with you that it's a slippery slope. But only if you choose the wrong ski lift: The ski lift of assholeness. (How's this analogy going?) The truth is, there are plenty of facts out there that you could use to become an asshole with. Like the fact that your little brother is physically weaker than you. But that doesn't mean that you should beat him up. And it doesn't change the truth.

-----


Thank you for articulating this so crisply. I realize that I have the same idea as well that "most people can't".

Where did we get this idea come from? I'm genuinely curious.

I've recently taken a huge bet in the opposite direction of this assumption that not everybody can learn coding, and I'm very interested in what (if any) evidence exists on both sides of the argument.

-----


This paper doesn't necessarily answer why people can't program, it just points out some pretty interesting discoveries. http://www.cs.washington.edu/homes/reges/mystery/mystery.pdf

It's a paper that focuses on some strange patterns that came out of a statistical analysis of the 1988 Computer Science AP test. It turns out that there are a few questions that end up being a great indicator towards someone's natural programming ability.

Definitely worth the read.

-----


Great article. Thanks. This in particular blew my mind:

"“Educators of computer science have repeatedly observed that only about 2 out of every 100 students enrolling in introductory programming classes really resonate with the subject and seem to be natural-born computer scientists…I conclude that roughly 2% of all people ‘think algorithmically,’ in the sense that they can reason rapidly about algorithmic processes."

-----


But that is a quote from Knuth based on an older unpublished study, and seems to be a conjecture with weak evidence. Not sure it is actually mind blowing.

-----


I got it from thinking about it a lot, also reading Carl Jung...

Is dev bootcamp new? Looks cool!

-----


It is. Thanks.

It was born out of this thread: http://news.ycombinator.com/item?id=3267133

There are 20 willing students signed up to be experimented on in the spring. I'll definitely keep folks here posted on the results.

What does Jung have to do with this?

-----


Coding well being the key here.

As was recently discussed though: there is no shame in good enough.

http://blog.phiz.net/theres-no-shame-in-good-enough

-----




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact

Search: