The promise of the “learn to code” movement
The learn-to-code movement is promising and represents an answer to preparing learners for a digital future. Nonetheless, educators have a responsibility to ensure computer science education fully suits the needs and characteristics of 21st-century learners. Michael Pollak/flickr, CC BY-SA
This week, educators, students and the public around the world are participating in Computer Science Education Week by organizing and leading one-hour coding tutorials.
By the start of the week, more than 2,700 Canadian coding events had been registered with Code.org, a not-for-profit organization in the United States that promotes the week. This annual event incorporates the spirit of the “learn to code” movement; it aims to attract interest and engage students from primary grades to senior secondary levels in developing coding skills.
Governments, corporations, associations in the computer science field and trend-setters all assert that learning to code will play a key role in the future. In this context, learning to code is often presented as a panacea to the job market problems of the 21st century.
But for educators, there are multiple factors to consider when deciding what coding skills and which approaches to promote. How should they present what coding offers?
We take particular interest in this topic. Together we combine years of training in computer science, educational technology and educational psychology; our research interest is to develop a teaching and learning model for introducing down-to-earth computer programming concepts and logic.
We want research in computer science education to suit the needs and characteristics of 21st-century learners. Otherwise, the cost will be an ill-prepared and disillusioned workforce.
In an era of an insecure job market, when redundant professions are projected to be eliminated while new ones arise, learning to code gives hope to our collective imagination.
It creates the promise of alternative sources of income as well as opportunities for self-employment given the demand of coding skills in a variety of industries.
Learning to code is not just a younger-generation trend. For example, Scratch is a popular tool used in and outside of classrooms to create, share and remix games. It allows intergenerational learning where youth, adults and seniors can create game prototypes.
Coding can be used to automate tasks, solve complex problems, forecast, or simulate events that did not happen yet. A trendy area of interest for businesses is data analytics, a field involving making sense of massive amounts of data.
When we live in a digital world, many problems we encounter with solving technical computer issues, controlling devices, or managing online brands can be solved with coding.
For a long time, researchers have associated coding with the development of problem-solving skills. Jeannette Wing coined the term computational thinking to denote attitudes and skills, including problem-solving and analyzing systems, that can be drawn from fundamental concepts of computer science.
This notion of computational thinking presented an opportunity for educators to explore how coding could be used as a means for developing other relevant skills, such as problem-solving, creative thinking and critical judgement.
Believe the hype?
In the U.S., jobs for computer programmers are projected to decrease because contracts are being outsourced. But the hype around coding is still increasing.
Due to this gap, critics suggest that the movement will potentially create a cheaper workforce. Once everyone learns to code, the market will become overcrowded and employers will not need to offer a competitive salary.
While participating in a coding event may suggest that learning to code is easy, the truth is that episodic experience does not translate to coding skills. In making learning to code attractive, there is a danger of misrepresenting computer programming by oversimplifying concepts. To develop as a coder requires effort, persistence and patience.
Computer science researcher Leon Winslow estimated in 1996 that it takes approximately 10 years to turn a novice into an expert coder. Researchers have been debating the best way to teach introductory computer programming. There is no consensus yet on the answer.
Further, how can we ensure that what kids learn today will be aligned with the jobs and needs of the future? We can only speculate.
Fourth industrial revolution
Klaus Schwab, founder and executive chairman of the World Economic Forum, highlights that with the emergence of the fourth industrial revolution, information and the ability to manipulate it will be essential for survival in a future workforce.
We do know information management and manipulation will be key to creating and maintaining physical, digital and biological systems that will be part of our homes and workplaces. We know we have complex problems to solve.
Coding can help by processing raw observations into concrete simulations: that means using data from the past and present to create model scenarios to forecast the future.
Such simulations could be used to fight climate change, to reduce traffic and even to fight racial bias in social media.
Creativity and critical thinking will also be fundamental, as these skills will probably be one of the only ways to compete with artificial intelligence.
Workers will require swift decision-making skills in an accelerated work environment requiring flexibility and adaptability.
This scenario does not preclude the capacity to create and understand code. But the requirements are more complex. A key in addressing future challenges through coding lies in assessing opportunities to complement the learn to code movement.
A coding mindset
We want to propose that beginner coders could start with an attractive and engaging activity, but should also explicitly develop what could be called “the coding mindset.”
This mindset represents a gradual development of computer programming knowledge and strategies, but also includes analyzing systems, solving problems, persisting in front of errors, being resourceful and collaborating.
To teach the coding mindset, educators need to include more explicit foundational computer science concepts and competencies, such as creating algorithms to solve problems, debugging existing programs, and designing systems to accomplish new tasks or gather data.
Learning to code should not be intimidating. But it should fulfil promises, not simply hype mythic dreams.