Why can’t programmers.. program?
Answer by Jayesh Lalwani:
The problem isn’t that programmers cannot program. The problem is we haven’t figured out how to identify programmers from non-programmers, short of asking them to program.
This has to do with some notions in education that have built over the years, and programming kind of shatters them all. This makes educators pull their hair out. Back in the 19th century, educators observed that there are most students who are brilliant, most students are average, and some students are dumb. Moreover, brilliant students are brilliant in multiple things, whereas average students might be good in some and bad in others, whereas dumb is as dumb does. So, they started hypothesizing that there is a quality to a person that determines how good s/he is good at learning something. This quality was called intelligence. High intelligence students were good at learning most thing, average intelligence were average at most things, and low intelligence were bad at most things.
Or put it another way, human ability to learn falls on a bell curve. If you put intelligence on the X axis, and number of people on the Y axis, time and again, it has been shown that the plot will roughly look like thisOur entire education system is built around this curve
So, the question arose: is there a way we can measure intelligence? Previously the only way you could measure intelligence was by seeing how well they did in class. But it’s too late. If you could measure intelligence before admitting the student, you could put them in a class that meets their intelligence. High intelligence students can have a challenging syllabus, and low intelligence students could be given extra help. So, they did a bunch of more analysis, and figured out that mathematical aptitude more or less correlates with the ability to learn. This is what lead to IQ tests. And this is what being used now
Over time the concept of a standardized test given before the student enters college has been expanded to entrance exams. The idea is that the college measures the aptitude of the student to learn using the standardized entrance exam, and admits the best students that are willing to go there. This is what almost all engineering colleges use. The assumption is that having a good standardized tests guarantees a minimum amount of success for the students, which translates to increased reputation for the college, which results in more students trying to get in, which results in better students, and so on and so forth
The problem is programs show a double hump in the ability curve. If you take programming ability on the X axis and number of students with that ability on the Y axis, you see this
What that means is many average students are really good at programming, and many bright students suck at it, and there aren’t many average programmers. This is freaking the education community out. Because that means all their entrance exams are ineffective. They could be rejecting students who are brilliant programmers but scored low on entrance exams, and they might go to some no name university and increase the reputation of the no name university
It’s not that programmers can’t program. By definition, programmers are people who can program. The problem is we have these hotshot universities claiming people to be programmers who cannot program.