Understanding how to Learn how to program

There are a multitude of reasons why one may want to learn to program computers however many fall by the wayside because they underestimate the gravity of what they are trying to achieve or they are aware of the challenge which appears to them so overwhelming that they never even start.

However, like all problems, when broken down it can be done if approached with the right mindset and understanding of how to learn most effectively.

‘We don’t learn about things, we learn ways to think about things’

This quote from Marvin Minsky, one of the father of modern AI, hopefully demonstrates what is meant by ‘learn effectively’.

If you read one tutorial and feel that your learning quest is complete you will, almost, immediately come to the realisation that although you know the names of things and what they do in a basic manner this is only a single context in which these concepts can be applied and you therefore do not intrinsically understand them.

When you look straight on at a cube it will appear to be flat with four equal sides, a square. It is only when one begins to examine a cube from various other angles that you can begin to appreciate what differentiates a cube from a square, or any other shape for that matter.

The same goes for programming. If you read one tutorial you will understand the concepts involved from a mono dimensional perspective. If you read five tutorials concerning the same topic then you begin to see the concepts used in different contexts and can begin to appreciate the effect of that concept within the bigger picture. Once you’ve read five tutorials by five different people, explored forum discussions of these concepts and dismantled other peoples code and understood how they have applied the concepts then you will suddenly find that you can make things without needing to constantly look back to a tutorial because you see the concepts in three dimensions and are on the road understanding their full potential.

It is worth noting however that this process of understanding can take years or days. It all depends how complex the concept at hand and how you learn about it because a clear and concise tutorial can make all the difference compared to one in which a detail vital to understanding is missing.

Before becoming disheartened be aware that it is not necessary to always reach this level of total understanding to begin making something, applying the concepts you have learnt about is just another angle from which to learn; and any good programmer will be the first to admit that they haven’t even got to this level of understanding yet in every area of their programming knowledge. The journey is therefore a never-ending one.

‘The more you learn, the more you realise how little you know’ – Socrates