Why is it so hard to learn programming?
Why is it so hard to learn programming? We could ask the same question about learning to read or write or do math, or even about learning to speak our own mother tongue? In the case of reading or writing, these are considered fundamental skills that we begin to learn from a very young age supported by parents and teachers who have also spent a lifetime developing these skills. One reason why it is hard to learn programming could be that on the whole we don't get the opportunity to learn until we are older.
It is known that we acquire foreign language skills more effectively at a younger age becoming bi-lingual or even multilingual if more than one language is routinely spoken in the home. Learning a second language at a later stage is more challenging . From my own experience of learning Thai I initially found it very hard to recognise the sound of the tones and the shapes of the written vowels and consonants. In time it became easier but I know that I still have a very long way to go before I could be considered proficient or able to conduct business in Thai language. Similarly with programming, until you start, the world of programming seems mysterious and remote indeed.
We need expert and experienced teachers to help us learn. We know that this is the case in any subject at school. In the case of programming, relatively few school teachers have experience not having had the opportunity to learn themselves. It is perhaps ironic that programming has enabled online courses such as "Programming 4 Everybody" to be developed thus making the opportunity to learn the skill of programming accessible to all.
It takes time to develop any skill to the level required to become an expert or professional. Many students are enthusiastic to learn programming and envisage themselves as quickly becoming a web-developer, game-maker, rocket designer or some other kind of programming superstar. Unfortunately, although the basic principles and constructs or programming are relatively easy to learn, there are many further layers and levels of knowledge and experience that are required before a programmer can produce a real life application.
Another aspect is that people think differently to computers. A programmer needs to give a great deal of attention to detail. A computer will not be forgiving of even the slightest error. There are many things that a novice programmer doesn't yet know, and they don't know what they don't know. They need to practice using the basic skills and knowledge that they have already acquired in a consistent and disciplined way at the same time as gradually expanding their knowledge and experience. A programmer not only has to understand a programming language, they also have to learn how to combine the appropriate constructs to a given application.
I feel that programming is not so much hard to learn, but like any other discipline, to become an expert or professional requires a long term process of learning, practice and experience. As with language learning, it is also certainly the case that some people have a greater natural aptitude for programming than others.
In the UK a brand new computing curriculum has been introduced whereby pupils from age 5-18 yrs will be introduced to computer science, programming and computational thinking. I am curious to see whether the youngest learners may be able to acquire programming language skills more readily as digital natives as opposed to an older generation who are immigrants into this new digital society .
 First Language Acquisition Vs Second Language Learning:What Is the Difference? Fawzi Al Ghazali,The University of Birmingham / The Centre for English Language Studies (CELS) / July 2006
 Digital Natives, Digital Immigrants:Some Thoughts from the Generation Gap by Timothy VanSlyke