Q5d2szmw 1432535647

A bit of coding in school may be a dangerous thing for the IT industry

Teaching children to code is nothing new but does that teach them enough about the IT industry. Flickr/San Jos Library, CC BY-SA

A bit of coding in school may be a dangerous thing for the IT industry

Teaching children to code is nothing new but does that teach them enough about the IT industry. Flickr/San Jos Library, CC BY-SA

It sounds compelling, but what does Opposition leader Bill Shorten actually mean when he says all secondary school pupils should be taught “digital technologies, computer science and coding”? And, equally importantly, why?

In his budget reply speech, as part of a focus on science and technology education, he stated that “coding” should be part of Australia’s national curriculum.

He doesn’t define precisely what he means by “coding”, but it’s likely the speech was at least partly inspired by the work of code.org, a US-based multi-national computing education programme.

Barack Obama participated in one of the organisation’s largest projects, the introductory “Hour of Code” for primary school students, allegedly becoming the first US President to write a computer program in the process.

code.org‘s lessons introduce basic programming skills in bite-size chunks, in simplified programming environments that make it easy to get small examples working.

While a great deal of thought (and not a small amount of time, talent and money) has gone into constructing code.org’s lessons, many of the approaches are not new. Attempts to teach children programming date to the late 1960s with the Logo programming language.

One of Logo’s key innovations was “turtle graphics”, in which students learned programming by controlling the movement of a “turtle” that could move forwards or backwards, rotate, or raise and lower a pen to draw as it moved.

Turtle Graphics and the LOGO programming language. Screenshot

Hour of Code’s Frozen-based tutorial puts turtle graphics, and MIT’s graphical Scratch programming language, in Disney wrapping.

Programming tutorial at code.org. Screenshot

The fact that these approaches are evolutionary rather than revolutionary doesn’t make them bad. We speak from personal experience that learning to code in bite-size chunks can be both instructive and inspirational. This kind of introduction led us on paths that resulted in computing becoming our careers.

It’s fun, creative and much more accessible than pop-culture stereotypes about introverted “genius” programmers. By democratising access to such introductory lessons in coding, a broader pool of people may enter the profession, which is a very good thing.

It might be coding but is it IT?

But this approach to teaching, in focusing on the accessible and the enjoyable, has the unfortunate side effect of misrepresenting much of the work IT professionals really do.

To create and work with information technology at a professional level, both computer science and software engineering are essential skills. But they are rarely even hinted at in coding exercises for children, even at secondary level.

The core of the discipline of computer science – algorithmics (the topic of a new unit in the Victorian Certificate of Education) – is the science of solving problems by devising and analysing procedures. These procedures can then be turned into computer programs. It is rewarding, but much like its sister discipline mathematics, it’s hard, sometimes tedious and often highly abstract.

Similarly, a huge fraction of what IT professionals do falls in the domain of software engineering – the profession focused on building large software systems within the constraints of the real world. Planning, design and management of large development teams are very challenging problems.

That said, over the past 50 years we have learned a lot about how not to build large software systems, and have found systematic methods that work far better than unstructured trial and error.

Team effort

So, while getting some small programs to run might inspire students, the kind of things that can realistically be taught to a broad range of children only help a little as preparation for professional study in IT.

In fact, they might be counterproductive. The creative ad-hockery of individuals working alone or in pairs for short periods is not an approach that scales to large systems that actually meet the needs of their stakeholders. For that, you need the analysis that computer science brings and especially the skills and perspective that software engineering teaches.

But in our experience as tertiary educators, many students believe that they have come to university to learn how to perform solo ad-hockery in a particularly expert manner.

Consequently, they do not take anything that isn’t “programming” seriously until they run headlong into the year-long team projects in their final year of tertiary education.

At best, they have a lot of catching up to do. At worst, they don’t learn from the experience and enter the employment market without the skills and attitudes that successful IT professionals exhibit and that switched-on employers expect. Cowboy coders are those who can’t or won’t work in teams and who focus on code to the detriment of actual user needs, and they will find it difficult to compete for jobs.

Cowboy coding is hardest to discourage in those students with the most confidence in their own programming abilities, usually students with the most pre-university programming experience. Learning ad-hoc programming without exposure to computer science and software engineering runs the risk of exacerbating the misconceptions behind cowboy coding.

What if you don’t want to work in IT?

According to a report by the Australian Workforce and Productivity Agency, just 4% of the Australian workforce is employed in information technology roles. The majority of Australians, now and into the future, will not make information technology their career.

So what of those who don’t dedicate their lives to IT, what do they get out of a bit of exposure to coding at school?

Given the role that computing plays in our lives, there’s a strong argument that participation in our democracy will be enhanced by giving every Australian some knowledge of how computers function. A future attorney-general might not be quite so confused about the meaning of “metadata”, for instance.

One potential justification for coding in schools is that an increasing number of professions call for some programming skills. Scientists and engineers of all kinds, financial analysts and managers (among others) will have to either perform programming themselves, or work closely with those who do.

Even the relatively technology-phobic journalism profession is conducting a lively internal debate about the value of journalists knowing how to code, both to create interactive content and to support the kind of statistical analysis performed in data journalism (exemplified by the work of Nate Silver, the American statistician who writes about baseball and elections).

But it’s important to keep what non-specialists can achieve in perspective. If you want to see the results of amateurs struggling to design, plan and manage large, complex physical construction projects, watch an episode of the TV show The Block. Large software construction projects are difficult for amateurs to pull off for similar reasons.

Realistic ambitions

The Australian national curriculum already contains a proposed “digital technologies” section, and a revised version is likely to be adopted in the next few years. This curriculum proposes to teach computing with a heavy focus on computer science and software engineering, far beyond the coding mentioned in Shorten’s speech.

The proposed curriculum is extremely ambitious. Were it to be taken literally, Year 10 students across the nation would be expected to master abilities and bring a mindset that we struggle to achieve in our graduates, who have a strong interest in the topic and years of specialist training as well as the patience, focus and perspective that adulthood brings.

As such, we are extremely sceptical that much of this can actually be effectively taught to the end of mandatory curricula at Year 10 level, let alone earlier in secondary or primary schooling.

In practice, we think it likely that students in the compulsory years of schooling will do some experimental, creative small-scale coding in lessons like those provided by code.org, but at best will be told about computer science and software engineering, which has very limited effect.

Telling students about these disciplines, even at tertiary level, does not on its own lead to any ability to apply them, or even to recognise when they might be needed.

We believe that there is indeed justification for teaching students more about computers in the years of compulsory schooling. But this should be tempered with a clear focus on what we want students to learn, and some realism about what can be achieved in a school setting in compulsory lessons.

Otherwise, we not only run the risk of wasting valuable resources, we run the risk of actively harming students’ chances of later mastering the full range of skills required of IT professionals.