Śmignęło w mgnieniu oka. Tydzień temu minął pierwszy miesiąc od startu kursu Java w Software Development Academy w Krakowie. Ekipa silna liczbą 16 chłopa trzyma się dzielnie, ale każdy – bez wyjątków – musiał po drodze przeskoczyć potężne przeszkody. Nie raz i nie dwa. Najważniejszy wniosek – make it till you make it. IT na pewnym poziomie to żadne rocket science, to po prostu potężna ilość informacji, które trzeba bardzo solidnie przyswoić. A przyswajanie w tym zawodzie to żmudne dłubanie w kodzie – bez tego ani rusz. Tylko długie godziny w IntelliJ, które – przynajmniej dla mnie – oznaczają, że niemal każdą procedurę muszę opisać pięcioma linijkami komentarza (też tak macie?). Skompilować, uruchomić. Dodać funkcjonalność, przepisać, zoptymalizować powtarzalne operacje metodami, i tak w kółko. Dużo pracy. Tak to musi wyglądać.

Jak wyglądał ten pierwszy miesiąc?

Przede wszystkim od razu wskoczyliśmy w gita. Zobaczcie sami – zielone kwadraciki zaczynają pojawiać się już od 19 kwietnia, czyli od drugiego dnia zajęć.

2016rshah's Github chart

Ta praktyka – która była defacto wbrew sylabusowi kursu, bo zajęcia z Gita były zaplanowane na później – okazała się strzałem w dziesiątkę. Nie ma lepszej metody na zgłębienie Gita w inny sposób niż pracując na nim każdego dnia. Każdego! To pozwala utrwalić pewne nawyki, szybciej wykonywać stałe powtarzalne kroki, niezależnie od tego czy obsługujesz repozytoria z poziomu edytora czy konsoli (ale konsola jednak rulez i basta). Co prawda GIT na tym poziomie to żadna trudność – nie pracujemy jeszcze w zespołach, więc nie mierzymy się z konfliktami i mergowaniem różnych wersji.

Druga sprawa – trener. Pierwszy blok – Wprowadzenie do programowania – przerabialiśmy z aktywnym programistą z 15 letnim stażem. Trener, sam nie wiem, czy mogę używać nazwisk, był kapitalny. Przekozak, zapalony geek, ktoś kogo nazwać można urodzonym programistą. Dla tego akurat trenera był to pierwszy raz ze szkoleniem kompletnych amatorów, ale – no może poza pierwszymi zajęciami – szybko i elastycznie podchodził do przekazywania wiedzy. I tu wpada wielka zaleta takiego prawdziwego, stacjonarnego kursu, kiedy masz przed sobą mentora z krwi i kości – masz dostęp do branżowego insightu od gościa, który przeszedł przez wiele firm, przez wiele pozycji i jest bardzo dobry w tym, co robi. I możesz go zapytać o wszystko, o absolutnie wszystko. O to, jak w dużych firmach przyjmowani są juniorzy, o to jakie ścieżki kariery są dla kogo, o zarobki (bez tabu z jednej strony i bez ściemy z drugiej, że za rok będziemy łapać dychę na rękę).

Takie rozmowy – niekoniecznie o samym programowaniu – to jeden z kluczowych etapów, moim zdaniem. Bo, cholera, co tu dużo mówić – każdy z uczestników kursu podchodzi do tego zawodu z dużą dozą niepewności, z obawą. A ta tylko się pogłębia, kiedy nie możemy przebrnąć przez, wydawałoby się, proste ćwiczenie implementacji interfejsów. I wtedy właśnie potrzebny jest taki trener, jakiego my spotkaliśmy, który przy całej grupie mówi – to jest ok, rozwiążemy ten problem, powoli. To cholernie ważne.

Z pierwszym trenerem przeszliśmy przez niemal wszystkie elementy Javy, jako języka. Napisaliśmy kilkanaście prostych projektów, wypociliśmy sporo kodu ogarniając obiektową naturę Javy, a przy okazji posłuchaliśmy sporo historii prosto z branży. Było ciekawie. Trener był wymagający i to też jest wielką zaletą.

Następnie stosunkowe proste zajęcia z Gita i BitBucketa, praca w grupie i kolejny blok – Programowanie I poziom podstawowy. Kolejny trener i kolejna doza pracy. Spoooro pracy. Na tym etapie przechodzimy przez algorytmy, listy jedno i wielokierunkowe, drzewa – wszystko robimy od podstaw, sami próbując rozgryźć co się dzieje pod spodem i przełożyć to na kod. W tym momencie przynajmniej połowę, jak nie więcej każdych zajęć spędzamy na sileniu mózgu przed IntelliJ i pisaniem, pisaniem, pisaniem kodu.

Kurs idzie szybko i nie bierze jeńców – jak sobie nie radzisz i nie powiesz o tym na zajęciach, to zaraz odlatujesz w zaległości, spod których później się nie wygrzebiesz. Jest też jeszcze jeden problem – kurs to jedno, ale praca po kursie to drugie. A trzeba dużo pracować. Przynajmniej jedną – dwie godziny dziennie. To jest największy problem – jak pracując na etacie, przy 15 godzinnym dniu znaleźć jeszcze czas na efektywną(!) pracę przy kompie z materiałem z kursu. Rozgryzam to teraz.

Wyzwanie – czyli własny projekt na bazie tego, co do tej pory umiem

To taka publiczna deklaracja, z której mam nadzieję już niedługo się rozliczę. Chce zrobić jeden, stosunkowo prosty projekt na bazie tego, co już umiem:

1 – system zapisów na zawody sportowe. Bez interfejsu. Do kolekcji danych (jeszcze nie wybrałem do jakiej) wrzucamy obiekty, które zawierają imię, nazwisko, rok urodzenia, klub, przypisujemy im numer startowy. W drugim kroku randomowo dopasowujemy im wyniki zawodów (tu mam zagwozdkę – w jaki sposób efektywnie przekazać dane w formie 00:00:00, tak by później móc je porównywać i sortować np. quicksortem).
Późniejsze usprawnienia – zawodnicy są pogrupowani również w kategoriach wiekowych i chcemy móc sortować ich również po kategorii.
Obudowanie tego prostym interfejsem, który pozwalał by wrzucać dane z poziomu interfejsu do kolekcji.