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 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.
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.
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.
As was recently discussed though: there is no shame in good enough.
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.
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.
"“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."
Is dev bootcamp new? Looks cool!
It was born out of this thread:
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?