Dobrze kodować można już w technikum

Dnia 14 marca 2018  odbył się  IX Małopolski Konkurs Własnych Prac Technicznych, na którym miałem przyjemność oceniać prace z kategorii Informatyka. Uczniowie małopolskich szkół średnich prezentowali swoje prace, które często zaskakiwały skomplikowaniem podjętych wyzwań.

Główną nagrodę zdobył uczeń, który połączył wiedzę z informatyki i elektroniki, prezentując w profesjonalny sposób swoje bardzo starannie wykonane urządzenie, a kod wykorzystywany do oprogramowania był umieszczony na portalu z programami o otwartym kodzie. W pamięci pozostaną także inne aplikacje, będące autorskimi rozwiązaniami, jak również bardzo poprawnie wykonane programy wspomagające życie użytkowników w każdym wieku.

Podczas prezentacji, naturalnie pytałem o testowanie aplikacji. Otrzymywałem odpowiedzi wskazujące na to, że już u uczniów jest świadomość tego, że dane wejściowe powinny podlegać walidacji. To dobrze wróży na przyszłość młodych twórców oprogramowania.

Trzeba mieć nadzieję, że talenty uczniowie będą rozwijać dalej. Naturalnie ciśnie się na myśl kontynuacja na uczelniach, lecz co zrobić jeśli na uczelni jeszcze nie ma wykładanego języka programowania, który doskonale wchodzi do głowy? Otóż … już wcześniej można być doskonałym programistą. Cytując prof. matematyki Borysa Komrakova (m.im. zdobył medal im. Mikołaja Łobaczewskiego): A programmer is at his best at 18,czyli programista jest najlepszy w wieku 18 lat. Jednakże znam ludzi, którzy zaczęli programować po 30-stce  i są bardzo produktywnymi programistami … najwyraźniej mają przekonania i chęć do życia oraz nauki niczym 18-latkowie.

Tester czy czeker?

Nie ma takiego słowa w języku polskim, ale w slangu miejskim istnieje czeker. W slangu testerskim też można go dodać, by jednym słowem określić osoby sprawdzające bez głębszej analizy, wszystko co mają spisane w dokumentacji. Czekerów poszukują ostatnio menadżerowie, którzy pobieżnie wgryzają się w temat testowania. W pogoni za automatyzowaniem wszystkiego, chcą „testerów automatycznych”, czasem pojawia się wersja bardziej poprawna – „testerów automatyzujących”, choć zasadniczo wypadałoby napisać „testerów programujących”. W dużej mierze, zasadniczym wyznacznikiem oceny takiego testera jest liczba lat pisania testów.

Co w tym złego, że czeker napisze masę testów sprawdzających wszystko … a raczej, to co napisał do zakończenia sprintu? Otóż, dobry tester zastanowi się, co przetestować i jak, a w jednym teście zawrze ścieżki, które przekrojowo sprawdzą najbardziej istotne elementy systemu. Jeśli czeker chce iść na ilość, to oczywiście po rozpisaniu wszystkich możliwych kombinacji działania aplikacji, napisze dla nich testy, często powielając kod i zmieniając po dwie linijki w kodzie testów: wykonanie innej operacji plus sprawdzenie komplementarnej z nią asercji.

Tester, w przeciwieństwie do czekera, zastanowi się jaki przekrojowy przypadek testowy warto napisać, zapyta deweloperów z zespołu o to, w jaki sposób powstawała aplikacja, a to pozwoli mu wywnioskować: co warto przetestować. Przykładowo, tester zapyta czy dany moduł jest wykorzystywany na wszystkich podstronach, a jeśli dowie się, że są 2 niezależne od siebie moduły, to dopisze drugi test, itd …