Przyjęło się, że ważne postanowienia podejmuje się na nadchodzący nowy rok. To dlatego, że nowy rok już za pasem, zdecydowałem się podzielić z Wami tym, co wyniknęło z pewnego mojego noworocznego postanowienia. Dwa lata temu, a dokładnie na początku 2016 roku postanowiłem sobie, że nauczę się programować w Swifcie i zostanę deweloperem.

O mojej przygodzie z nauką Swifta pisałem sześć miesięcy później na łamach MyApple Magazynu. Przypomnę tylko, że moją przygodę z programowaniem rozpocząłem mając 41 lat na karku. Kilka osób pukało się w głowę, słysząc, że w tym wieku postanowiłem nie tylko nauczyć się programować, ale i zostać zawodowym programistą. Zwłaszcza, że moje doświadczenie ograniczało się do przepisywania prostych programów w Basicu do pamięci komputerów ZX Spectrum czy Atari XL/XE z magazynu Bajtek gdzieś w drugiej połowie lat 80. ubiegłego wieku.

We wrześniu ubiegłego roku dzieliłem się z Wami radami, jak podejść do niełatwego przecież zagadnienia jakim jest nauka programowania, zwłaszcza jak przez całe wcześniejsze życie robiło się coś z goła odmiennego. Pisałem wtedy o tym, jak ważne jest otoczenie czy możliwość odcięcia się od niego, by dobrze chłonąć wiedzę, a więc jak ważna jest dobra muzyka tła i słuchawki. Pisałem o tym, że trzeba dużo samo zaparcia, że czasami trzeba zacisnąć zęby jeśli czego się nie rozumie.

Dzisiaj, z perspektywy tych dwóch lat, porównałbym naukę programowania do pracy detektywa (a przynajmniej do obrazu tej pracy przedstawianego w powieściach i filmach kryminalnych). Przyjmuje on informacje, które nie zawsze są dla niego od razu zrozumiałe, a często długo wydawać mu się one mogą zupełnie niepowiązane czy wręcz pozbawione sensu. Dopiero po jakimś czasie pojawia się kolejny element układanki, który łączy tamte poprzednie w całość i odkrywa ich głębszy sens. W nauce programowania jest to proces stały. Przez ostatnie dwa lata co chwila uczyłem się czegoś, co początkowo trudno mi było zrozumieć, ogarnąć całościowo. Dopiero później czy to przez podanie tematu przez autora kolejnej książki w trochę inny sposób zaczynałem rozumieć dane zagadnienie, zastosowanie pewnych koncepcji programistycznych, np. delegacji, domknięć i protokołów (o których także pisałem rok temu). Dzisiaj stosuję je z powodzeniem w kodzie swoich własnych aplikacji i dobrze je rozumiem, choć jeszcze rok temu wydawały mi się czarną materią - wiedziałem, że istnieją i musiałem je stosować (np. domknięcia w instrukcjach wykonujących odpowiednią akcję z okna alertu), ale nie byłem w stanie zrozumieć jak działają i jak poprawnie się je wykorzystuje.

Pod dwóch latach nauki wciąż wiem mniej niż więcej i cały czas uczę się czegoś nowego i wiem, że już tak zostanie. Programowanie sprawia mi jednak coraz więcej frajdy m.in. dlatego, że jestem w stanie tworzyć coraz ciekawsze aplikacje, często pod swoje własne potrzeby, jeśli nie jestem w stanie znaleźć odpowiedniej aplikacji w App Store czy Mac App Store. Dalej nie są to może bardzo rozbudowane projekty, ale takie, które z powodzeniem przydają mi się w codziennej pracy, nauce czy generalnie życiu, a z jednego w ramach testów beta w App Store korzystają już także inni użytkownicy.

Swift zmienił moje życie

Przez ostatnie 10 lat zajmowałem się głównie pisaniem o aplikacjach. Pracowałem z domu, byłem panem swojego czasu, choć od lat narzuciłem sobie bardzo dużą dyscyplinę i nie miałem problemu z bliską obecnością łóżka, a dzięki dobrej organizacji pracy znajdowałem też czas na naukę programowania w Swift. W pewnym stopniu ta tzw. strefa własnego komfortu opóźniła o kilka miesięcy decyzję o poddaniu weryfikacji zdobytej przeze mnie wiedzy i doświadczenia. Jesienią tego roku zdecydowałem się wreszcie by to zrobić. Spotkałem się z ekipą jednego z łódzkich domów programistycznych (którą poznałem m.in. podczas spotkań łódzkich deweloperów Swift - Łódź wiOSłuje) i poprosiłem o taką właśnie weryfikację. Przez kolejne miesiące dwie godziny dziennie poświęcałem na testowy projekt, który tworzyłem według dostarczonych wytycznych. Rozbudowałem go znacznie o swoje własne pomysły i rozwiązania, które wymagały ode mnie poznania nowych bibliotek, a często niestandardowych rozwiązań względem domyślnych dostarczanych przez Apple. Kiedy aplikację ostatecznie wysłałem do App Store z zamiarem ograniczonej dystrybucji jej testowej wersji przez TestFlight, przyszedł czas na rozmowę. Okazało się, że moja wiedza i doświadczenie jest wystarczające bym podjął w tej firmie pracę jako deweloper Swift. Od pierwszego grudnia pracuję już tam oficjalnie. Programowanie w Swifcie okazało się jeszcze większą przygodą i wyzwaniem niż przez ostatnie dwa lata nauki.

Wspominałem o aplikacjach, nad którymi pracuję. Projekt testowy, który miał pozwolić ocenić moją wiedzę, to aplikacja pogodowa. Początkowo prosta, jednak - jak napisałem wyżej - rozbudowana o kilka moim zdaniem ciekawych rozwiązań (szpilki na mapie pokazujące aktualne warunki temperaturę, dodatkowy widget w widoku Today itp.).

Jeśli ktoś z Was chciałby wziąć udział w testach tego programu w TestFlight to proszę podajcie mi przez prywatną wiadomość na forum Wasze adresy e-mail, na które mógłbym wysłać Wam zaproszenie.

Większym wyzwaniem okazała się tworzona początkowo tylko przeze mnie, a od ponad miesiąca wspólnie z Marcinem Maciukiewiczem (doświadczonym deweloperem, który wiele lat temu był twórcą m.in. pierwszej aplikacji dla iOS polskiego serwisu Blip) aplikacja dla macOS, będąca prostym czytnikiem PDF z trybem nocnym. Często uczę się programowania w nocy z eBooków w formacie PDF, które zawsze mają białe albo jasnoszare tło, co niestety bardzo męczy moje oczy. Próbowałem korzystać z wersji epub tych samych publikacji, jednak zwykle mają one problem z poprawnym wyświetlaniem bloków z kodem - są obcinane i trzeba je osobno otwierać, co jest bardzo niewygodne. Zostałem więc przy PDF-ach i męczyłem się wieczorami. Nie mogłem znaleźć żadnego prostego czytnika PDF, który odwracałby kolory. Odwracanie kolorów całego systemu nie było dla nie dobrym rozwiązaniem. Ostatecznie więc zdecydowałem się napisać program, który będzie to robił. Jego pierwszą wersję powinniście być w stanie pobrać już niedługo. Postaramy się sprężyć, by było to jeszcze pod koniec, a może na początku przyszłego roku.

Dwa lata temu moja wiedza o programowaniu była niemal żadna. Rok temu zacząłem uczyć podstaw programowania w klasie mojego syna (i robię to już kolejny rok). Teraz wypływam na szerokie wody programowania wołając „Ahoj przygodo!”. Mam 43 lata i właśnie rozpocząłem nowe życie.

PS. Jeśli ciekawi Was co w związku z tym z moją obecnością w MyApple, to informuję, że nigdzie się stąd nie wybieram.