In my last blog I have explained what coding is. Relegated to a footnote in that blog was a comment on why the terms ‘coding’ and ‘programming’ are often used interchangeably, but they are not quite the same. In this blog post I will expand on the difference between the two.
Let us consider a programming task: we want to write a game that consists of a ball that moves across the screen and the player needs to steer it past obstacles, with the speed of the ball and the number of obstacles increasing as the level of difficulty increases. Before a programmer can start writing code, they need to do some planning and some decisions. This is were programming starts: the task needs to be broken down into discrete steps, deciding what comes first and what comes next; decisions also need to be made on which programming tools are best suited for the various aspects of the game, such as how to make the ball move, how to change its speed, how to define the obstacles etc…
A lot of work happens before a single line of code is written. Once this initial planning is complete, the programmer can start translating those ideas into the language that the computer can understand – this is called coding. Coding requires a good knowledge of the programming language that is being used in order to use the correct commands and the correct syntax. However simply knowing a programming language is not sufficient to write a computer program. The most important skills are the programming skills required in structuring your computer program efficiently.
This is equivalent to a successful writer writing a novel: a good knowledge of the English language (or any other language) is necessary but not sufficient to write a good novel. Someone who simply knows how to code, in the strict sense of the word, won’t be able to write computer programs.
However, as mentioned above, the terms are often used interchangeably and 'coding' is used, especially in an educational context, to mean 'programming'. In part this is probably due to the fact that coding sounds like the more ‘impressive’ word of the two.
The distinction however also points to different emphasis that can be placed on the teaching of programming/coding. Often, the focus on teaching children is to teach them the syntax and commands of a programming language rather than to teach them how to think computationally. That is not good enough…