Nie uczmy dzieci programowania

Z góry przepraszam za ten krzykliwy tytuł, ale chciałbym, żeby temat wywołał dyskusję. Na jednym z dużych portali technologicznych przeczytałem dzisiaj tekst, który postulował wprowadzenie obowiązkowych lekcji programowania w podstawówkach – na fali akcji typu „Hour of Code”.

Od razu wzbudziło to mój sprzeciw. I nie dla tego, że uważam programowanie za bezwartościowe czy niepotrzebne. Przeciwnie – zabawę z programowaniem zacząłem nie mając jeszcze 10 lat, skończyłem informatykę na Politechnice i zawodowo zajmuje się projektowaniem systemów informatycznych. Sprzeciw mój budzi nie sam przedmiot, lecz postulowanie jego powszechności i argumenty za jego wprowadzeniem. I podstawowe pytanie. Po co?

Uczymy myśleć

Dzieci już w podstawówce mają przeładowane plany zajęć i sporo (moim zdaniem) niepotrzebnych przedmiotów. Pewnie, że fajnie, gdyby dziecko wiedziało co nieco o programowaniu. Ale również o motoryzacji, budowie maszyn, architekturze, budownictwie, ubezpieczeniach i systemach bankowych, ekonomii, karnistyce, elektronice… Dlaczego akurat programowanie? Wiele osób twierdzi, że jest to zajęcie szalenie rozwijające, pobudzające kreatywność i uniwersalne. Z tym mitem spróbuję rozprawić się później – teraz chciałbym skoncentrować się na rzeczy najważniejszej – uczeniu myślenia.

Dzieci w wieku 6-12 lat naprawdę nie potrzebują wiedzy specjalistycznej z dziedziny informatyki. Zapewne i tak bieglej posługują się komputerami i urządzeniami mobilnymi niż ich rodzice. Szkoła powinna rozwijać kreatywne myślenie, krytyczny umysł i samodzielność. Czy nauka języka programowania jest najlepszą metodą do tego celu? Śmiem wątpić.

Programowanie to nie nowe technologie

Kolejnym argumentem osób optujących za obowiązkowością nauki programowania jest to, że umiejętność kodowania pomoże wieść lepsze życie prywatne i zawodowe w świecie nowych technologii. Według mnie jest to całkowita nieprawda. Po pierwsze, programowanie to nie tylko malutki wycinek świata nowych technologii, a nawet malutki wycinek świata informatyki.

W tym drugim świecie jest dużo bardziej ciekawych i rozwijających zagadnień niż programowanie, na przykład: architektura komputera, budowa systemów operacyjnych, sieci komputerowe, bezpieczeństwo i szyfrowanie, teoria informacji, bazy danych, biometryka, automatyka i sterowanie… Dlaczego programowanie, a nie te dziedziny? Tutaj ktoś odpowie: „bo programowanie łączy te wszystkie tematy”. Po części tak, ale to prowadzi do kolejnego mitu. Czy programowanie pomoże nam lepiej obsługiwać komputer czy tablet? Lepiej obsługiwać tokarkę czy maszynę CNC? Pozwoli być lepszym architektem? Budowniczym? Ekonomistą? Jeśli nie, to po co programowanie społeczeństwu, które w 99% składa się z nie-programistów?

code

Klepanie kodu, zmieniające się technologie

Jakkolwiek by nie zaklinać rzeczywistości, programowanie to w praktyce często „klepanie kodu” – czynność dosyć mechaniczna i mało rozwijająca. Programowanie to trochę algorytmiki, znajomość składni języka i bibliotek oraz w przypadku bardziej rozwiniętych programistów – znajomość struktur danych i dobrych praktyk programistycznych. Mało tu miejsca na kreatywne myślenie, „rozwiązywanie problemów” czy nieszablonowy tok rozumowania. A na pewno nie w podstawówce, gdzie nie będą implementowane żadne skomplikowane algorytmy, a raczej proste pętle i instrukcje warunkowe, sterujące wejściami i wyjściami programu. Logiki dziecko powinno uczyć się na matematyce, a obsługi komputera na informatyce (technologii informacyjnej). Ale gdzie tu miejsce dla obowiązkowego programowania?

Kolejny argument jest taki, że umiejętność programowania przyda się w życiu zawodowym. Jasne – napisanie pętli w Pascalu w wieku 7 lat zrobi ze mnie programistę zarabiającego 15 000 na rękę. Bardziej obawiałbym się, że obowiązkowa lekcja programowania i ocenianie przez nauczyciela może zniechęcić zamiast zachęcić do wybrania tej ścieżki rozwoju zawodowego. Języki programowania i technologie z nimi związane zmieniają się bardzo szybko. Czy ktoś naprawdę myśli, że wiedza nabyta w wieku 6-8 lat przyda się 25-latkowi szukającemu pracy? Za 5-10 lat języki funkcyjne czy obiektowe będą zastępowane przez programowanie „graficzne”, polegające na przestawianiu „klocków” i opisywaniu ich zależności. Ba, wszystko idzie w stronę programowania językiem naturalnym (mówionym). A specjalistów-programistów używających języków niskopoziomowych potrzeba coraz mniej. Technologię przyszły programista poznawał będzie najwcześniej na studiach – a w praktyce dopiero w trakcie wykonywania swojej pierwszej pracy zawodowej – TAK SZYBKO zmienia się ten rynek.

Czy programowanie rzeczywiście przydaje się w życiu? Tak, jeśli jesteś programistą. A nie każdy nim musi być – przeciwnie – interfejsy aplikacji i urządzeń, z których korzystamy, są coraz prostsze i już nie trzeba znać komend DOS-owych, żeby otworzyć plik tekstowy czy uruchomić Windowsa 3.1. Nie mam złotego sposobu na uczenie dzieci myślenia, ale według mnie programowanie absolutnie nie jest rozwiązaniem problemu naszego szkolnictwa. A jeśli ktoś będzie chciał wzbogacić lekcje informatyki o elementy robotyki, algorytmiki czy budowy komputera? Podpiszę się pod tym obiema rękami – ale nie nazywajmy tego „nauką programowania”.