Pagine

domenica 30 settembre 2018

Schools need more than just coding

by Enrico Nardelli

(versione italiana qua)

Italian schools do not need coding alone — as if coding, together with devices and connectivity, were all it takes to bring them into the modern age. Infrastructure is undoubtedly essential: computer labs with working machines and fast networks are a must. But it is not enough to add "we will teach students coding because it is the new English that everyone needs". That kind of statement is wrong on two counts.

The first is talking about teaching coding (i.e. "computer programming") instead of teaching informatics. It is much the same mistake as confusing multiplication tables with the teaching of Mathematics. The times table is a practical tool through which children develop a feel for arithmetic operations, which in turn provide a conceptual key for understanding the world in quantitative terms. The subject taught in schools is Mathematics, of which arithmetic is just one area.

The second is that informatics is not a language in the strict sense. One might say it is, in the figurative way that Galileo said "the universe is written in the language of mathematics." But comparing it to English creates deep conceptual misunderstandings. Here is why.

To begin with, the languages used to write computer programs — the instructions that computers execute — are a far cry from natural languages. Programming languages have neither the flexibility nor the endless richness of reference to lived experience that spoken language possesses. Using the same word for both is like mistaking a mannequin for a living person.

Moreover, using the term "language" means overlooking the fact that informatics has established itself as an autonomous scientific discipline over several decades, with deep and wide-ranging concepts that have led some to describe it as a fourth great domain of scientific knowledge, alongside those of non-living matter, living matter, and human society.

Finally, talking about a "new English" reduces informatics to a mere tool that requires other skills to be of any real use. It is obvious to everyone that knowing English is not enough to become a successful entrepreneur, any more than it is enough to write as well as Hemingway.

Learning informatics is therefore significantly more than learning to program. It means, for example, understanding how the Internet works and what distributed computing involves. Or grasping how to analyse data and their relationships — both direct and derived — while also being aware of the implications of such analyses for individuals and for society. All of this should be part of every student's cultural toolkit, even if they never write a single line of code in their lives, because they will nonetheless be living in an increasingly digital world. It is also worth noting, en passant, that there is early experimental evidence suggesting that studying informatics at school helps improve performance in other subjects as well.

This is why it is essential to introduce a solid informatics education that enables Italian schools to align their educational mission with the demands of a digital society. In this regard, CINI (the National Inter-University Consortium for Informatics) had already submitted to MIUR (the Ministry of Education, Universities and Research) a detailed proposal, several months ago, for introducing the teaching of informatics into schools from primary level onwards. The proposal was developed by the community of university informatics lecturers, in collaboration with educationalists and school teachers.

In the meantime, the country has undergone significant political changes. The hope is that the new "government of change and of the internet" will grasp the importance of equipping students to be effective digital citizens. Learning informatics is essential for understanding, participating in, shaping, and contributing to the democratic development of society. It is essential to being the authors, rather than mere spectators, of one's own future.

This is a generational educational challenge, one that can only be met through the input and dialogue of all the stakeholders involved — and one that could also create real opportunities for economic growth in Italy. Not least because the informatics sector, known as computing in the USA, has been the leading sector there for new jobs since 2016 (see figure) and since 2017 has surpassed the manufacturing sector in terms of workforce demand.

But also because a "sophisticated" use of informatics — one that does not simply mean buying off-the-shelf solutions (which often work poorly and require constant tweaking) or relying on outside suppliers (who are generally behind schedule and over budget) — can give our productive system a real competitive edge.

Italian production, across most sectors, is characterised by a unique combination of quality and flexibility. In many fields we are among the best because we are able to track closely the shifting demands of the market while consistently maintaining very high quality standards. To continue excelling in this way, it is now essential to incorporate this sophisticated use of informatics into our production processes. That will only be possible if our universities produce a sufficient number of graduates — thereby also helping to reduce the significant gender gap that exists in this field.

None of this will be achievable without an adequate understanding, built up from the very first year of primary school, of what informatics is and of its "great beauty".

--
The original version (in italian) has been published by "Agenda Digitale" on 21 September 2018.

venerdì 28 settembre 2018

Coding or informatics: that is the question

by Enrico Nardelli

(versione italiana qua)

At the start of this year, the European Commission launched an ambitious Digital Education Action Plan. Starting from the entirely sound premise that "education and training are the best investments in Europe's future," it proposes, in order to bring education and training in line with the digital age, to act along three lines of action:

  1. making better use of digital technology for teaching and learning;
  2. developing relevant digital competences and skills for the digital transformation;
  3. improving education through better data analysis and foresight.

There is nothing to object to in the first line: it is well established that a well-calibrated use of digital technologies can improve both teaching and learning. The challenges all lie in getting that calibration right, but I trust that the new political leadership at MIUR and the experience of our teaching profession — among the finest in the world — will be able to identify and find the right solutions.

The third line is also highly valid: we live in the age of data, which we collect at every level. When properly analysed, data can tell us a great deal about the current state of affairs, at a level of granularity never before achieved. Here too, the devil is in the details: on one side, the need to guarantee people's privacy; on the other, the awareness that there is always a gap between what we measure and reality — a gap that must never be forgotten. Generals who have confused the map with the territory have never distinguished themselves in military campaigns.

I would like to say a few words about the second line, because for its implementation — beyond the accompanying measures relating to awareness-raising, communication, and closing the gender gap (all of them critically important!) — the concrete action proposed is to "introduce programming classes in all schools." Here, "programming" means "computer programming," that is, what the English call coding, a term that by now enjoys considerable currency in Italy too. I have already written (here and here) about why I do not think it wise to use the English term, but I will use it throughout the rest of this article for the sake of brevity.

My central argument is that this approach by the European Commission — centred on teaching coding rather than teaching informatics — is reductive. I draw a comparison between teaching coding and teaching informatics because teaching coding is, to use an engineering analogy, like teaching someone to build a bridge, whereas teaching informatics means teaching someone to design and build the bridge.

Designing means working within a space of needs and constraints and "creating" the solution — inventing a synthesis between competing requirements. This calls for a body of knowledge that goes well beyond what is needed simply to build. As someone trained as an engineer, I know this from experience. Two years of my university education were spent studying mathematics, physics, chemistry, and other foundational subjects that had no direct application to the construction of any complex artefact. Any doctor or lawyer will readily confirm that what sets the designer apart from the operative is precisely the breadth and depth of their foundational training.

Building means following a more or less defined plan that someone else has created. There is no requirement to know much beyond that, because someone else is handling — or has handled, or will handle — everything else. Talking only about "teaching coding" is therefore a reductive approach, because it focuses solely on the final, operational stage of a much more complex design process. It amounts to training a technically sophisticated workforce that will nonetheless remain a working class, subject to the directions of those who decide what to build, for whom, and when.

I note in passing — because this takes us into a political and social dimension that certainly deserves attention, but not here — that history (now more than ever magistra vitae) has shown that the basic levels of the labour force are the first to be replaced by machines. If we want our young people to acquire skills that will serve them throughout their working lives, it is better to train them as designers, not merely as executors.

I do not deny that programming can be a highly creative activity. But if we are talking about mass education, and if we teach only programming without educating young people about all the other aspects that make informatics the rich and multifaceted discipline it is, then we genuinely risk producing nothing more than an army of workers — one that will be easily sidelined by technological advances or turned into an "industrial reserve army."

For young people to have a real chance of finding a fulfilling path in the digital society — within a constantly evolving world of work — they need to be introduced from the outset to the scientific ideas underpinning the digital world, so that they can grasp its full significance.

One might object that there are many examples of successful start-ups born from the ideas of young people who had certainly never studied informatics formally. But if you look at the overall numbers, these are merely the exceptions that prove the rule. For a start, while the founder of Facebook was certainly not a computer science graduate, Google was born from the ideas of two Stanford informatics PhD students — one of the great cathedrals of computing research. Furthermore, for every start-up that makes it, there are at least a thousand that go nowhere, and so at a macroeconomic level — that is, in terms of growing a country — betting everything on start-ups is not a sensible strategy (another development policy debate worth having).

Similarly, there is a tendency to treat exceptions as if they were the norm. When it comes to programming, people cite geniuses like Linus Torvalds (creator of Linux) or Guido van Rossum (creator of Python), who single-handedly produced true masterworks. First of all, genius is an extremely rare quality, and what works for a genius cannot be used as a teaching method for mass education. Second, even those who are genuinely gifted still design: they do it in their heads, and very rapidly, as they develop — but the design phase is there all the same. Third, it is obvious that every project, at the point where it is expressed, requires a language through which to express it — which represents the "encoding" of the project. But this does not mean that the most appropriate term for someone who designs is "coder," or that the word "coding" encompasses the entire area of software design and development.

Let me be clear: incorporating informatics education into schools matters for every citizen's formation, regardless of whether they go on to become doctors or lawyers, musicians or writers. The digital society is here. Failing to teach in schools the science underlying its mechanisms would be like teaching children that babies are found under cabbage leaves, that the plague is spread by poisoners, and that stones move by horror vacui.

What makes a country great in the long run is not its exceptional talents, but the quality of its mass education. Europe's digital development requires the teaching of Informatics in schools, starting from primary level. This is the path that the United Kingdom has begun to follow; these are the trends in many advanced countries, both East and West; and this is what we have proposed as European associations of computer scientists.

--
The original version (in italian) has been published by "Il Fatto Quotidiano" on 17 September 2018.

Coding o informatica: questo è il problema

di Enrico Nardelli

(english version here)

All'inizio di quest'anno la Commissione Europea ha lanciato un ambizioso piano d'azione per l'istruzione digitale. Partendo dalla giustissima premessa che “istruzione e formazione sono i migliori investimenti nel futuro dell'Europa” propone, per adeguare la formazione all'era digitale, di intervenire lungo tre linee di azione:
  1. migliorare l'utilizzo della tecnologia digitale per l'insegnamento e l'apprendimento;
  2. sviluppare le competenze e le capacità digitali pertinenti ai fini della trasformazione digitale;
  3. migliorare l'istruzione mediante un'analisi dei dati e una previsione migliori.

Nulla da dire sulla prima linea: è noto che un uso ben calibrato delle tecnologie digitali può migliorare sia l'insegnamento che l'apprendimento. Certo, le difficoltà sono tutte nella buona calibrazione, ma confido che la nuova direzione politica del MIUR e l'esperienza della nostra classe docente (tra le migliori al mondo) saranno in grado di indicare e trovare le giuste soluzioni.

Anche la terza è estremamente valida: viviamo nell'era dei dati, che raccogliamo a tutti i livelli. Se ben analizzati ci possono dire molto sulla situazione attuale, ad un livello di granularità mai raggiunto prima. Anche qui il diavolo è nelle minuzie realizzative: da un lato la garanzia di privacy verso le persone, dall'altro la consapevolezza che tra ciò che misuro e la realtà c'è una distanza che non va mai dimenticata. I generali che hanno confuso la mappa con il territorio non hanno mai brillato nelle campagne militari.

Vorrei spendere qualche parola sulla seconda linea, perché per la sua attuazione, oltre a misure di accompagnamento relative alla sensibilizzazione, comunicazione e riduzione del divario di genere (tutte importantissime!) l'azione concreta che viene proposta è quella di “introdurre classi di programmazione in tutte le scuole". Qui con “programmazione” si intende “programmazione informatica", ovvero ciò che gli inglesi chiamano coding, termine che ormai anche in Italia gode di una certa notorietà. Ho già scritto (qui e qui) sul perché non ritengo saggio usare il termine inglese, ma nel resto di quest'articolo lo userò per brevità espositiva.

La mia tesi di fondo è che questa impostazione della Commissione Europea, centrata sull'insegnamento del coding invece che sull'insegnamento dell'informatica è riduttiva. Confronto l'insegnamento del coding con quello dell'informatica perché insegnare il coding vuol dire, per fare un paragone con l'ingegneria, insegnare a costruire un ponte, mentre insegnare l'informatica vuol dire insegnare a progettare e costruire il ponte.

Progettare significa operare in uno spazio di necessità e di vincoli e “creare” la soluzione, inventare la sintesi tra esigenze contrastanti. Questo richiede un bagaglio di conoscenze che non possono essere quelle soltanto finalizzate a costruire. Essendo un ingegnere di formazione, so bene di cosa parlo. Due anni del mio percorso universitario li ho passati nello studio di matematica, fisica e chimica ed altre materie fondazionali, che non avevano nessuna diretta applicazione alla costruzione di un qualunque manufatto complesso. Un medico o un avvocato potranno sicuramente confermare che la differenza tra l'operatore ed il progettista è tutta nella larghezza e profondità della sua formazione di base.

Costruire significa seguire un piano più o meno definito che qualcun altro ha creato. Non è richiesto di sapere molto al di là di questo, perché ci pensa (o ci ha pensato o ci penserà) qualcun altro. Parlare solo di “insegnare il coding” è quindi un approccio riduttivo, perché ci si focalizza solo sulla parte finale ed operativa di tutto un processo progettuale molto più complesso. Significa addestrare una manovalanza tecnicamente sofisticata, ma che sarà comunque una classe operaia sottoposta alle direttive di chi decide cosa costruire, per chi farlo e quando.

Noto di passaggio (perché entreremmo in una sfera politica e sociale che va certamente considerata, ma non in questa sede) che la storia (ora più che mai magistra vitae) ha evidenziato come i livelli base della manovalanza sono i primi che vengono sostituiti dalle macchine. Se vogliamo quindi che i nostri giovani acquisiscano competenze utili per tutto l'arco della loro vita lavorativa, è bene formarli a competenze da progettisti e non solo da esecutori.

Non nego che la programmazione possa essere un’attività altamente creativa, ma se parliamo di istruzione di massa e se insegniamo solo a programmare, senza educare i ragazzi su tutti gli altri aspetti che rendono l’informatica quella disciplina articolata e profonda che è, allora rischiamo davvero di formare solo un esercito di operai, che sarà facilmente messo fuori gioco dall’avanzamento della tecnologia o di un “esercito industriale di riserva”.

Per far sì che ragazzi e ragazze abbiano possibilità di scegliere una strada per loro soddisfacente nella società digitale, in un contesto lavorativo in continua evoluzione, vanno loro esposte da subito le idee scientifiche alla base del digitale, in modo che ne capiscano la valenza complessiva.

Si potrà obiettare che vi sono molti esempi di start-up di successo nate da idee di ragazzini che certamente non avevano svolto regolari studi da informatici. Ma, se si guardano i numeri complessivi, questi sono soltanto le eccezioni che confermano la regola. Prima di tutto, se chi ha creato Facebook non era certamente laureato in informatica, Google è nato dalle idee di due dottorandi in informatica di Stanford (una delle cattedrali della ricerca informatica). Inoltre, per ogni start-up che ce la fa, ce ne sono almeno mille che vanno a spasso, e quindi a livello macro-economico, cioè per far crescere un Paese, puntare tutto sulle start-up non rappresenta una scelta sensata (anche questo è un discorso di politica dello sviluppo da affrontare).

Analogamente, si tende spesso a considerare come tipico ciò che invece è un’eccezione. Per la programmazione, si citano geni come Linus Torvalds (creatore di Linux) o Guido van Rossum (creatore di Python) che hanno realizzato da soli dei veri e propri capolavori. Prima di tutto la genialità è qualità estremamente rara e ciò che va bene per un genio non può essere usato come metodo didattico per l'istruzione di massa. Secondo, anche chi è geniale progetta: lo fa nella sua testa, e molto velocemente, mentre sviluppa, ma è una fase comunque presente. Terzo, è ovvio che ogni progetto, nel momento in cui viene espresso ha bisogno di un linguaggio per la sua espressione, che rappresenta la “codifica” del progetto. Ma questo non implica che il termine più appropriato per chi progetta sia “coder” o che nel termine “coding” rientri tutta l’area della progettazione e sviluppo del software.

Attenzione, l’inserimento della formazione informatica nella scuola è importante per la formazione di ogni cittadino, anche se deciderà di fare il medico o l’avvocato, il musicista o lo scrittore. La società digitale è qui: non insegnare nella scuola la scienza alla base dei suoi meccanismi sarebbe come insegnare che i bambini nascono sotto i cavoli, la peste è trasmessa dagli untori e le pietre si muovono per horror vacui.

Ciò che fa grande un Paese sul lungo periodo non sono le eccellenze, ma la qualità della formazione di massa. Lo sviluppo digitale dell'Europa richiede l'insegnamento dell'Informatica nella scuola, a partire dalla primaria. Questa è la strada che hanno iniziato a seguire nel Regno Unito, queste sono le tendenze in molti paesi avanzati, sia ad oriente che ad occidente, questo è quello che abbiamo proposto come associazioni europee di Informatici.

--
Versione originale pubblicata su "Il Fatto Quotidiano" il "17 settembre 2018".