Bez poprawnej matury z informatyki nie będzie dobrych systemów publicznych

Miało być o czymś innym, ale będzie o maturze. Wczoraj była ta z informatyki. I było nie za dobrze… Generalnie można powiedzieć, że gównoburza i w ogóle, ale po pobraniu plików ze strony CKE chyba jednak nie do końca.

Dane w plikach zawierają błędy, choć według oficjalnych założeń nie powinny.

Wnioski

Jeżeli państwo nie jest w stanie przygotować poprawnych danych na egzamin maturalny, to nie można wymagać od państwa, że będzie w stanie sprawdzić, czy zakupiony produkt albo usługa informatyczna jest OK. Kupowane produkty i usługi są znacznie bardziej skomplikowane niż zadanie weryfikacji danych:

Listing 1. Weryfikacja poprawności danych – ręcznie przez porównanie wypisanych liczb

cat dane_6_2.txt | wc -l && cat dane_6_2.txt | grep [0-9]| wc -l

Listing 2. Weryfikacja poprawności danych – automatycznie przez komunikat

#!/bin/bash

ALL_LINES=`cat dane_6_2.txt | wc -l` 
VALID_LINES=`cat dane_6_2.txt | grep "[A-Z]+ [0-9]{0,4}"| wc -l`

if [ $ALL_LINES != $VALID_LINES ]
then
   echo "DANE NIEPOPRAWNE"
fi

Na ten problem nie pomoże zatrudnienie fachowców na pozycjach managerskich, bo oni nie mają zazwyczaj od lat styczności z kodem i pewne rzeczy im umykają. Jakoś nie wyobrażam sobie typowego menadżera, który robi CRki.

Jak zaradzić temu problemowi?

Rozwiązanie jest jak zwykle przy tego typu problemach, wielotorowe.

Upublicznić kod

Po pierwsze należy upublicznić kod źródłowy projektów realizowanych dla instytucji państwowych. To posunięcie jest tak naprawdę piekłem dla słabych programistów. Pamiętacie zapewne sprawę kalkulatora dla PKW. Skopanie pani Agnieszki za to, że jest słaba w programowanie, było zapewne uroczą krotochwilą dla wielu osób. Chętnie bym spędził jeden czy dwa wieczory w tygodniu, by toczyć bekę z programistów ePUAPu.

Na serio. Publiczny kod źródłowy uruchamia mechanizm jego weryfikacji przez wielu LOSOWYCH programistów. Ta losowość jest oczywiście nie do końca taka, jak myślimy. Jeżeli ktoś ma ochotę na przeglądanie kodu na githubie, zgłaszanie błędów czy tworzenie poprawek, to jest zapewne takim typem programisty, o którym możemy powiedzieć, że jest rzemieślnikiem (recenzja książki o SC za niedługo). Weryfikacja obejmuje też różne aspekty. Począwszy od jakości kodu, poprzez jego architekturę, a kończąc na bezpieczeństwie. Tu spotkałem się z argumentem, że „przyjdą blackhaty i będą crackować”… No publicznej części kodu Linuxa jakoś mało kto crakcuje. Jak już trafiają się 0day to w kodzie własnościowym. Ponieważ poza blackhatamiW są też whitehatyW i greyhatyW, którzy po znalezieniu błędu go zgłoszą (czasami wraz z poprawką).

Zmienić podejście do IT

Po drugie musi nastąpić zmiana podejścia do technologii na poziomie systemu reprezentowanego przez państwo. Dziś jest ona często traktowana jako zło konieczne, w dodatku drogie. Trzeba natychmiast skończyć z akcjami typu „wydrukuj wniosek złożony przez internet”, czy też „przesłanie emailem się nie liczy”. To wymaga jednak wdrożenia systemu, który zapewniałby bezpieczeństwo – państwowy system podpisu cyfrowego. Skoro mamy mieć dowód biometryczny, to chyba znajdzie się tam miejsce na certyfikat i klucz?

BTW, na rewersie każdego dowodu na dole jest zestaw znaczków pozwalających na automatyczne wprowadzanie danych. Czy ktoś kiedyś z tego korzystał?

Po trzecie trzeba też w końcu zrozumieć, że państwa nie stać na chujnie. Niestety w państwowym IT, poza bardzo wąską grupką ludzi z misją pracują osoby mierne. Parafrazując minister Bieńkowską „złodzieje albo idioci”. Nie widzę innego wytłumaczenia dla podjęcia pracy za pieniądze znacznie poniżej rynkowych. I wiem, co mówię, bo „pierwszy etat” był na państwowym garnuszku.

Wykorzystać potencjał naukowy

Ostatnim elementem jest zaangażowanie środowisk akademickich w proces informatyzacji. Jednak nie na poziomie wymyślania oderwanych od rzeczywistości koncepcji. Uczelnie publiczne mają odpowiednie zaplecze naukowe, by opracowywać rozwiązania, które mogą być następnie wdrażane. Bardzo podoba mi się model, w jakim pracuje NASA. Agencja opracowuje pewną część technologii, prowadząc badania podstawowe. Następnie ogłasza konkurs na praktyczną implementację rozwiązania. Firmy prywatne traktują te konkursy jako możliwość wypromowania własnego produktu. To, że poniosą straty na kontrakcie z NASA, nie jest istotne, bo zarobią na późniejszych wdrożeniach na rynku cywilnym i na innych kontraktach z państwem, które wykorzystują opracowane na potrzeby konkursu technologie.
Uczelnie mogą poza badaniami podstawowymi prowadzić ocenę przydatności poszczególnych implementacji i wdrażać je w formie programów pilotażowych. Oczywiście z zachowaniem otwartości.

Jeszcze o maturze

Oczywiście każdy prosty, czteropunktowy plan rozwiązania skomplikowanego problemu jest słaby. Jednak nie chcę, by powyższe rozwiązanie było traktowane jak gotowiec. Mam świadomość, że za tym prostym opisem kryje się wiele problemów. Techniczne stanowią tylko niewielką część. Znacznie poważniejsze są te prawne czy społeczne. Bardzo ciężko jest zmienić prawo tak, by pasowało do wizji otwartych projektów. Jeszcze ciężej jest zmienić ludzką mentalność, by zaakceptowała prymat maszyny.

Nie doczepiłem się jeszcze do treści zadań. I nie doczepię się, bo nie ma do czego. Matura ma sprawdzać wiedzę z całego okresu nauki. Ciężko też od licealisty wymagać znajomości zaawansowanych technik programistycznych. Same zadania, te nieszczęsne liczby skojarzone, nie były takie złe. Podejrzewam, że nie jedno kata z TDD czy innego programistycznego BSDM mogło, by je wykorzystać.

Jedna myśl na temat “Bez poprawnej matury z informatyki nie będzie dobrych systemów publicznych

  1. A mi sie wydaje, ze zabraklo po prostu jakiejkolwiek kontroli czy procedury weryfikacji. No bo jak wytumaczyc, ze majac caly rok na przygotowanie zadan, majac rozwiazanie nikt nie wpadl na pomysl zeby odpalic algorytm na danych i sprawdzic czy wszystko dziala?

    I nawet jezeli wszystkie dane byly wklepywane do tego pliki txt recznie przez Pania Zosie to trzeba sie liczyc z mozliwoscia popelnienia bledu. I to nie ta osoba powinna poniesc konsekwencje tylko te nad nia za brak kontroli.

    Jak zwykle zawiodl system.

Napisz odpowiedź

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax