Dostałem wiadomość od osoby, która od poniedziałku będzie się chlubnie zwała “tegorocznym maturzystą”. Taki tytuł oznacza mniej więcej tyle, co “dajcie mi spokój, jestem zajęty wmawianiem sobie, że powinienem się uczyć do egzaminów”. Po krótkim wstępie nadawca zwrócił się do mnie z prośbą o udzielenie paru wskazówek, które można by umieścić w poście pt. “Jak zdać maturę z informatyki tak, aby się dostać na wymarzony kierunek”. Pomyślałem “been there, done that” i odszedłem od ekranu, aby zebrać myśli.
(Trzy dni później.)
O, jakiś email! No tak, coś na deser chciałem sobie zostawić, a obiad okazał się sycący. W porządku. Dzieci, przynieście ten wygodny fotel i posłuchajcie w jaki sposób wujek Adrian przygotowywał się do “majówki”.
Dzieci?
Ach, no tak. To nie ten rozdział. W takim razie nie pozostaje mi nic innego jak zacytować generyczne fragmenty odpowiedzi, którą otrzymał ode mnie licealista.
Bon appétit!
Nie mogę Tobie dać spersonalizowanej rady, bo nie mam pojęcia czym dokładnie się interesujesz, co potrafisz, jaki jest Twój cel w tym wszystkim itd. Ale chętnie podzielę się moim - nazwijmy to - przepisem. Zbiorcza nota do moich rad: nie biorę pod uwagę różnic w podstawach programowych; bazuję tylko na moim egzaminie.
(…)
Do rzeczy.
Przede wszystkim - pisanie na klawiaturze. To się wydaje oczywiste, ale widziałem zbyt wiele osób pracujących na co dzień przy komputerze, które nie potrafią pisać bezwzrokowo i prawidłowo wszystkimi palcami. Jeśli chcesz zostać developerem to żadne zerkanie na klawiaturę nie wchodzi w grę. Musisz się tego nauczyć. To jest niezbędna umiejętność, aby cokolwiek robić. Nie mówiąc już o różnicy w tempie pisania. Matura z informatyki to wyścig z czasem. Jeśli możesz podczas egzaminu stwierdzić “dobra, napiszę to od nowa, zamiast szukać buga” przy zadaniu z C++/Javy, to jesteś na zdecydowanie lepszej pozycji. I pamiętaj - korzystanie z myszki bardzo spowalnia. Obowiązkowa lektura do tego akapitu: “Programming’s Dirtiest Little Secret” by Steve Yegge.
Aby napisać teorię to przejrzałem zagadnienia i definicje, które CKE podaje w swoich wymaganiach. Na poziomie matury wystarczy kojarzyć co jest czym i do czego służy. Aby zrozumieć rekurencję, należy zrozumieć rekurencję, ale to pewnie wiesz. Warto zamienić na spokojnie w domu kilka algorytmów z rekurencyjnych na iteracyjne dla wprawy. W moim przypadku wiedza ogólna i spędzenie kilkukrotnie kilkudziesięciu minut na przeglądaniu internetów okazało się całkiem dobrym pomysłem pod względem stosunku czasu spędzonego do efektów.
Środowisko: weź Windowsa. Jest jeden powód: Microsoft Office, a konkretnie Access. Jest zdecydowanie wygodniejszy niż odpowiednik z LibreOffice'a czy OpenOffice'a. Niektórzy podają drugi powód, jakim jest Visual Studio, ale myślę, że na poziomie matury to już jest to tylko bajer. W końcu zadanie z programowania rozwiązuje się w mniej więcej 50-150 linii kodu.
Arkusz kalkulacyjny i bazy danych ogarnąłem w jeden dzień, ale to ryzykowne było z mojej strony. Zrobiłem po jednym zadaniu z poprzedniej matury; przejrzałem dostępne funkcje w Excelu. Jeśli się rozumie ideowo jak to działa to wystarczy korzystać z wbudowanej pomocy (wyszukiwarka funkcji i ich dokumentacji).
(…)
W kwestii programowania: ja pisałem w C++, ale Java też wydaje się rozsądnym wyborem. Szczerze wątpię w słuszność wpisywania w deklaracji maturalnej Pascala, ale co kto woli. Warto korzystać w domu z tego samego środowiska (u mnie to był Dev-C++) i poznać je sensownie, przez co rozumiem korzystanie ze skrótów klawiaturowych (w sumie to kompilacja i ewentualnie debugger). Właśnie - naucz się korzystać z debuggera. Potrafi bardzo przyspieszyć wykrywanie błędów logicznych. Programy uruchamiałem/testowałem z wiersza poleceń, żeby od razu po wykonaniu nie znikało okno programu, i żeby nie musieć kombinować z tym. I pamiętaj - IDE mają pomoc (biblioteka standardowa) i podpowiedzi składni. Taka legalna ściągawka. Jeszcze dodam, że nie ma co się przejmować wydajnością. Przy kilku tysiącach linii w pliku, który się parsuje, to nawet nieoptymalne funkcje się sprawdzają. Warto znać na pamięć - jakkolwiek niepraktycznie w codziennym życiu to się wydaje - użycie popularnych na maturach funkcji, np. do zamiany znaku na numer kodu ASCII i na odwrót. Porób zadania z poprzednich, zobacz co się przydaje, zrób listę, naucz się. Lektura uzupełniająca: “Poradnik Początkującego Programisty” by Gynvael Coldwind.
Pamiętaj, że dzień wcześniej masz prawo przyjść i przygotować swoje stanowisko pracy. Ja wziąłem notebook i zrobiłem identyczne ustawiłem IDE identycznie jak u siebie. Sprawdź, czy nic się nie zawiesza, skompiluj jakiś program. Teoretycznie nie masz prawa prosić, aby mieć własną klawiaturę podczas egzaminu, ale jeśli przypadkiem osoba przygotowująca stanowisko będzie miała pod ręką model z Twoim ulubionym skokiem klawiszy, szerokością shifta i położeniem backspace'a to można mieć lekki bonus do prędkości pisania.
Ogólna rada: przez większość czasu nie przygotowuj się do matury z informatyki jako takiej, ale rób trudniejsze rzeczy. Wychodź poza ramy wymagań, pytaj często “dlaczego?” tudzież “ale po co?”, pisz jak najwięcej własnych rzeczy, a matura nie będzie problemem.
I serio: prawidłowe bezwzrokowe pisanie wszystkim palcami to jest podstawa. Pierwsza - wiem co mówię - umiejętność do zdobycia, jeśli spędzasz przy komputerze więcej niż kwadrans dziennie.
No, chyba że już potrafisz. Wtedy masz kilkanaście, kilkadziesiąt dni ćwiczeń z głowy.
W razie pytań - zarówno najmniejszych, jak i tych bardziej złożonych - śmiało pisz do mnie, a postaram się doradzić w miarę możliwości.
Tip na zakończenie: Excel domyślnie oznacza poniedziałek jako drugi dzień tygodnia.