Programistyczna czarna dziura

Pracowałem niedawno nad małą częścią projektu, dostałem go po innym pracowniku, który miał tak samo mało doświadczenia jak ja. Trafiło się ślepej kurze ziarno, miałem zrobić swoją część programu, byłem mile zaskoczony i jednocześnie przerażony. Potrzebna mi była jakaś programistyczna idea, jak rozwiązać problem, aby zleceniodawca był zadowolony. Z projektu zamierzałem wyciągnąć jak najwięcej, oddać go w dobrym stanie i być co najmniej zadowolonym z siebie i swojej pracy.

Otworzyłem nowy rozdział w swoim doświadczeniu. Nagle okazało się, że brakuje mi pomysłów.

I tu pojawia się ciekawa sytuacja: utknąłem i nie wiem, co dalej. Z jednej strony: mam niski poziom umiejętności (po co ja się za to zabrałem?). Z drugiej, pracuję sam, nie mam do kogo się zwrócić (jestem taki samotny!). Wyrzucam z głowy niedobre myśli, w rękę biorę piłeczkę do gniecenia i kombinuję.

Pierwszą myślą jest Slack – można się spytać członków tej społeczności o dany problem, można poprosić o pomoc na konkretnym kanale komunikacji. Moja ulubiona programistyczna grupa to DevsPL i Codenewbie. Uczestniczę tam w rozmowach mniej lub bardziej technicznych. Proszę o pomoc. Niesamowicie motywujące jest, gdy ktoś nieznajomy, kto jest tylko obrazkiem na ekranie, daje mi odpowiedź na pytanie. Akurat trafiłem na doświadczoną osobę, która miała jeszcze trochę czasu dla mnie, więc dostałem cenne wskazówki. Otrzymałem złoto za darmo.

Monkey mind. Programistyczna dziura w mózgu.

Gdy pojawiła się następna ściana, po prostu użyłem siły Google, a wyszukiwarka skierowała mnie na materiał z Youtube. Ambicja mówiła mi, że nie powinienem tego robić, tylko dojść do wszystkiego sam, a najlepiej to jutro, bo dziś mam dużo na głowie, a jak już mam rozwiązanie, to lepiej jutro, zrobię sobie kawę. Jednak zdławiłem tę małpkę w mojej głowie. Nie prokrastynujemy, droga małpko, nie zrobię później. Jeśli ma być zrobione, ma działać i najlepiej to już teraz, bo zabrałem się do roboty.

Droga chora ambicjo: dlaczego nie skorzystać z filmiku w Internecie? W końcu ktoś to zrobił, aby pomóc, aby pokazać rozwiązanie, nawet jeśli autor chciał się pochwalić, to co złego w tym, że ktoś robi świetną rzecz i jeszcze daje o tym znać światu? Tylko klaskać autorowi. Do roboty! Jeszcze nauczę się czegoś nowego, coś zostanie w mojej głowie. Być może za jakiś czas, gdy zetknę się z podobnym problemem, rozwiązanie pojawi się samo znikąd.

Weź się, stary do roboty

Dzień później następna czarna dziura. Zlecenie jest z Upworku nie jest skomplikowane, podjąłem się go, bo muszę zdobywać doświadczenie, to się przecież ceni. (Co ja robiłem na i po studiach?). Sio, małpko. Nie muszę teraz iść i zrobić czegoś innego. Pralka działa sama. Spadaj w tę czarną dziurę.

Czarna dziura rosła, nie dało się przejść kawałka kodu, zawsze błąd, zawsze nie tak, nie ma jak przeskoczyć. Należy zrobić przycisk i ruchomy sześcian. Spróbowałem i na Slacku i w Google, poszukałem dobrych praktyk, zaczęło coś świtać, ale jeszcze problem nie był wystarczająco rozwiązany. Utknięcie powinno być stymulujące, a nie deprymujące. Mogłem sobie pozwolić na chwilę przerwy, poszedłem na trening. Bieganie przełącza mózg na inne myślenie. Umysł pracuje oddzielnie, ciało samo biegnie, związek między jednym i drugim jest słabszy, zwłaszcza jeśli się biega po dobrze znanej trasie. Tym niemniej wciąż jestem w tym samym miejscu. Utknąłem.

Przeczytawszy kilka artykułów doszedłem do wniosku, że utknięcie jest problemem wielu koderów na każdym poziomie umiejętności i nigdy nie jest dla nich zabawne. Dobrze wiedzieć, że nie jestem pępkiem świata i nie tylko ja tak cierpię za miliony.

Pomógł mi jeden tweet, który kazał mi cofnąć się o krok lub nawet dwa i popatrzeć, gdzie kod jest niespójny. Miałem czas na przejrzenie kodu jeszcze raz, nawet na napisanie części od nowa i wtedy zrozumiałem, że nie umiem, więc muszę kombinować. Zaakceptowanie tego faktu jest lepsze niż usilna próba przebicia muru. Kombinowanie nie zawsze jest łatwe, jeśli nie masz wystarczających umiejętności. Wirtuoz gitary musi opanować chwyty do perfekcji, aby potem improwizować na jam session.

Nie nauczę się, jeśli nie będę kombinować, korzystać z wiedzy mądrzejszych, a potem na tej bazie wymyślać po swojemu.

Pomogło mi rozpisanie kłopotliwego kodu na kartce, w tym samym czasie pojawiło się kilka idei, które zapisałem sobie w oddzielnym miejscu i wrócę do nich gdy zdobędę nowe umiejętności. W pewnym momencie rozpisywanie stało się zabawą i głowa ochłonęła, pojawiła się jakaś programistyczna przyjemność kombinowania. Kasia, programistka z półtorarocznym doświadczeniem dała mi wskazówki, które działają.

#100DaysOfCode – minął pierwszy tydzień.