Skip to content

Can anyone become a programmer?

15/07/2017

Just as few can become a full time rock star, only a small number of Computing students will become a full time programmer, in fact between 30% and 60% will fail the first programming module.  However, a student could be mediocre at programming, yet strong in Networking.   This is similar to comparing an opera singer to a pop singer, they’re both singers, but with totally different characteristics, and both can make a living.

There are two discrete categories of students within computer science,  those who find programming easy and those who find it virtually impossible.  This issue is global, not just an issue for the UK.  Success in programming cannot be predicted by sex or age.  I find the research on programming to be both petrifying and electrifying, and there is no answer to the puzzle.

What can I add to the research regarding programming?  The first programming language that I was “taught” was Java.  It was an abysmal failure.  The college had to lower the pass mark from 40% to 37% as so many students had failed.  I have since learnt that Java is probably one of the worst languages to teach a novice.  I wholeheartedly agree with that research finding, as I have experienced it first hand.

Secondly at University, I noticed a mutually exclusive set of Computing students. Those graduates who were great at programming, generally struggled with networking.  Those who excelled at Networking, did not “get” programming.

Issues with programming:

  1. Working visual blueprints of programming concepts.  A student needs appropriate mental models of what is happening within a program.  For the majority,  these blueprints do not yet exist.   This lack of “seeing” what the program does, means many children will not predict what the output would be. If they cannot visualise  what needs to happen, they cannot code it.
  2. Decomposition.   We could argue that decomposition or creating mini steps, is the first skill that needs to be taught.  If we find students who can easily decompose an action into steps, this is a positive indicator of success.
  3. Language.  A step forward is to teach Python not Java as a first language, but this is not the solution.  Even with Python, high failure rates predominate.
  4. Cognitive Conflict.  Many students suffer cognitive conflict, as coding is not a skill that everyone can acquire.  If you’re tone deaf, no amount of singing, will make you a pop star.  Try explaining that concept to the policy makers.
  5. Its estimated that half of novices build a mental map of the program, the other half do not.  Those novices with a mental map score around 84%, those without, average 48%.
  6. A programming background is not a positive indicator of success – those who have read Classics could as easily succeed in coding.

The hidden factor within this story,  is that the numbers studying Computer Science at University has halved, at a time when we need to double the number of graduates.  So promoting a subject with high failure rates, to children needs careful consideration.

However, as politicians have a profound lack of understanding for technology, the argument will fall on deaf ears…. (see what I did there).

 

Reference:

https://arstechnica.com/information-technology/2012/09/is-it-true-that-not-everyone-can-be-a-programmer/

http://www.eis.mdx.ac.uk/research/PhDArea/saeed/paper1.pdf

http://www.eis.mdx.ac.uk/research/PhDArea/saeed/

From → Uncategorized

2 Comments
  1. I might do a post on this at some point, as there are so many points worth addressing. I’ve read two of the research papers, but not the Ars Technica one yet.

    How do the failure rates compare with those for maths and physics? Along with programming, neither of the subjects are learned without considerable mental effort and getting into the practice of approaching problems methodically. The biggest differentiator, in my experience, is whether someone’s prepared to put the hours in.
    Also, they seem to discuss programming in terms of ‘coding’, which is a pretty useless thing to attempt in isolation, without understanding the what the code is actually doing in the background and how it could be applied to real problems. This is why formal programming courses generally suck outside computer science programs.

    Like

    • I’d be really interested to see your opinion on this topic. As you say, there are so many facets to consider, so little research, versus so many failed attempts to solve the low pass rates.

      Like

Leave a comment