“Is this correct?” This is a typical question students new to coding ask their teachers. There’s nothing wrong in asking per se, especially in schools. Yet it highlights the difference between traditional academic education and the learning outcomes from coding.
A traditional academic education is based on achieving grades on assessments, exams or assignments. You respond to the assignment brief and submit your work or complete an exam and then you receive a grade on a scale of A+ to F, a percentage or similar.
Learning to code works differently. Developing a computer program requires learning from mistakes, making educated guesses, and testing various ideas and hypotheses. Errors are just feedback which guide students towards the right solution. Trial and error is the norm.
When a student writes a piece of code, and asks a Coding Mentor, “Is this correct?”, this simply highlights a culture where errors are frowned upon that was cultivated in the traditional classroom.
Our Coding Mentors are trained to respond to such questions by feigning ignorance and encouraging the student to test their code. By testing their code a student will receive feedback from a computer and can see for themselves whether it works or not. If it works, then great. If it does not work, that is ok. It means that this is not the correct solution, so let’s develop a new idea for a solution, build that, and then see whether it works.
The platforms we use to learn to code give students immediate visual feedback about their code. Immediate visual feedback is a great tool to use to teach oneself and learn from one’s own hypotheses as opposed to the learning from a traditional class where a student has to wait for the teacher to grade assignments or tests. Computer programs such as Scratch that we use in our classes provide instant visual feedback: either the code works as we expect it to or it doesn’t.
When working at the edge of human knowledge, no one really knows the answers or solutions. We make hypotheses, test them and we learn. This is fundamental to scientific endeavour. The same is true for computer coding, Thus, this is how we should also approach training our students.
In the future, the majority of human jobs, i.e. jobs not done by machine or AI, will be at the boundaries of human knowledge.
A recent article (25 June 2016) in The Economist discussed the implications of evolving technology and in particular automation and artificial intelligence in the nature of jobs, development of industries and delivery of education. The discussion highlighted that in order to be of value for human jobs, we will continue to learn for the rest of our lives, a university will not be sufficient for the development of a career, it is merely the beginning of lifelong learning. To cater to these changes,the education system will need to evolve.
It's time to re-orient students to a different approach to learning, one that encourages experimentation, and not default to asking, “Is this correct?” We can achieve this by exposing them to learning computer programming. Students should feel comfortable with the uncertainty of their code or work, testing their work and learning from feedback, without feeling ashamed or embarrassed that their first attempt of coding resulted in error messages or the program not behaving as expected.
No one writes code that is perfect the first time. Not even professional programmers. Let’s explore together, as students and educators, the boundaries of what we know. Studying stops when exams are over, but learning should not.