Nawet nie wiemy, ile razy ten temat pojawiał się w mailach, komentarzach i prywatnych wiadomościach. Dzisiaj postaramy się rozwiać wszelkie wątpliwości i odpowiedzieć na pytania: Jak nie zostać klepaczem kodu? Kiedy jest się “prawdziwym programistą”? oraz Czy bez studiów jest na to jakakolwiek szansa? Ciekawi naszego zdania? No to zaczynamy.
Studia (niekoniecznie programistyczne)
Na temat studiów mam do przekazania kilka refleksji. Zacznijmy od początku — ja nie mam studiów programistycznych (studiowałam Technologię Chemiczną oraz Zarządzanie i Inżynierię Produkcji). Kuba ma inżyniera z Informatyki i nie dokończone studia magisterskie. Jako, że wpis ten piszę ja (Ania), to skupie się na własnych doświadczeniach.
Po pierwsze, chemię skończyłam studiować kilka lat temu i nigdy nie pracowałam w tym zawodzie. Nie mniej studia te były wymagające, a także bardzo rozległe. Moi znajomi, którzy zostali w branży mówili wprost, że w pracy muszą uczyć się wszystkiego od nowa (tudzież dokładniej). Mogę się odnieść dziś do mojej chemicznej wiedzy — przez to, że nie była ona wykorzystywana na codzień, nie pamiętam za wiele, a nawet średnio trudne zadanie z termodynamiki czy chemii fizycznej byłoby dziś wyzwaniem. Wiedziałabym jednak, gdzie zacząć szukać potrzebnych informacji i najprawdopodobniej po nauczeniu się pewnych rzeczy od nowa byłabym w stanie je rozwiązać.
Moje studia inżynierskie były bardzo mocno nastawione na pokazanie całego spektrum chemii i przedstawienie podstaw. Dopiero ostatnio semestr pokazywał nam bardziej specjalistyczne rzeczy. Faktycznie, by w pełni je zrozumieć warto było znać te podstawy, niemniej by np. wykonać specjalistyczną analizę instrumentalną próbki, o wiele bardziej były przydatne równie specyficzne wiadomości z zakresu danej metody pomiarowej, czy konkretnych substancji, które należało wykryć. Przed każdymi labolatoriami musieliśmy więc przygotowywać się dokładnie do wykonywanego ćwiczenia. Nie znam osoby, która nie uczyła się zarówno o nowej metodzie analitycznej, jak i o konkretnych substancjach, które będziemy rozpoznawać. Nawet prymusi musieli/chcieli to powtórzyć przed zajęciami.
Na roku były różne osoby. Niektóre faktycznie dzięki studiom odkryły, że chemia to ich powołanie, inni wiedzieli to znacznie wcześniej, ale spora część … po prostu studiowała. Mieliśmy więc osoby zainsteresowane przedmiotem, zainteresowane dobrymi ocenami oraz zainteresowanych zaliczeniem. Każda z tych grup inaczej podchodziła do nauki. Każda ukończyła studia z zupełnie innym poziomem wiedzy…
Ze studiów magisterskich mogę dodać jeszcze jedną historię. Mieliśmy w ramach technik wytwarzania dział obróbka skrawaniem. W gronie osób, z którymi wtedy się trzymałam nie było nikogo, kto miał znaczącą wiedzę z tej dziedziny (wszyscy po inżynierce zmieniliśmy kierunek). Jedna ze znajomych miała wujka, który zawodowo pracował na obrabiarce CNC. Poprosiła go o pomoc w projekcie. Jej projekt, który na podstawie tych konsultacji, był uznany za technologicznie poprawny, został słabo oceniony. Dziewczyna przekazała uwagi prowadzącego do swojego wuja. On zaśmiał się, i stwierdził, że jego zakład dawno by zbankrutował ‚gdyby pozwolił sobie na takie straty w obróbce materiału, jak i ilość czynności, które komplikowały proces. Z praktyki należało bowiem robić przede wszystkim tanio i z poszanowaniem surowca.
Co wynika z tych refleksji? Żadne studia nie uczynią z ciebie magika, eksperta, specialisty. Wiedza nieużywana szybko paruje z głowy. Nikt się za Ciebie nie nauczy, a samo zaliczenie nie gwarantuje, że znasz i rozumiesz dane zagadnienie. Często to co działa w labolatorium czy jest przekazywane na uczelni, jest zbyt oderwane od rynku i współczesnych praktyk. Oczywiście studia mogą też pomóc. Przede wszystkim w znalezieniu swojej dziedziny, zapoznaniu z pewnym spektrum ważnych tematów, czy po prostu nawiązaniu znajomości, które zaprocentują na przyszłość. Jednak sam dyplom nie gwarantuje niczego.
Klepanie kodu
Co to tak w ogóle znaczy klepać kod? Dla mnie to programować bezmyślnie, bez zrozumienia. Bardzo proste zadania, które nie wymagają wysiłku, myślenia …
I teraz pomyśmy przez chwilę od czego zależy, czy programista będzie miał takie zadania… Po pierwsze od projektu, bo czasem projekty utrzymaniowe mogą po prostu polegać na takich drobnych przeróbkach — z drugiej strony, jeśli dołączasz do projektu, który jest na produkcji już od kilku lat, to samo zapoznanie z już istniejącym kodem może stanowić wyzwanie. Niemniej, w “nieciekawym projekcie” łatwiej o nieciekawe zadania.
W projekcie Scrumowym to zespoł jest odpowiedzialny za podział zadań. I powiedziałabym, że niezależnie od pozycji, czy lat doświadczenia, ta decyzja jest podejmowana. Bardziej liczy się zaangażowanie, chęć nauki, progres jaki robi się w ramach projektu, albo, czy ma się w danej chwili czas. Nigdy nie byłam w sytuacji, gdy zadania były dzielone na łatwe i trudne i przyznawane wg stanowisk/edukacji/płci itp. Fakt, czasami w ramach firmy, by np. zmienić projekt, musisz nauczyć się na temat danej technologii, czy poznać konkrenty wycinek biznesu. Nie jest to jednak wiedza tajemna, niedostępna, czy nie do przeskoczenia.
Wszystko jest w Twoich rękach. Swoboda i doświadczenie przyjdzie oczywiście z czasem i będzie okupione ciężką pracą, jednak dzięki niej i Twojemu rozwojowi będziesz mógł rozwiązywać coraz to bardziej skomplikowane problemy, ale też odnajdywać ciekawszą stronę tych prostych “małpich” zadań.
Klepanie kodu jest wyborem programisty. Być może boi się, nie jest jeszcze pewnien swoich umiejętności, nie chce zmieniać projektu, czy firmy. Nie chce wziąć odpowiedzialności za siebie, swój rozwój i kod. Woli pasywnie czekać na zadania. Woli marudzić, albo zwyczajnie jest mu z tym co robi dobrze (i to też jest ok, nie każdy musi być Programming Guru, a good enough w wielu przypadkach jest dobrą opcją).
Nie chcesz klepać kodu? Ucz się, rozwijaj. Dociekaj, zadawaj pytania. Staraj się zrozumieć problem, samodzielnie szukać rozwiązań. Bądź proaktywny. Jeśli twoje zadanie jest powtarzalne i nużące z dużym prawdopodobieństwem można je zautomatyzować. Domagaj się zadań, które będą dla Ciebie wyzwaniem, i które pchną Twój rozwój. Bądź odpowiedzialny nie tylko za efekt końcowy, ale też za cały proces definiowania User Story.
“Prawdziwy kod” dla “prawdziwego programisty”
Uwaga, zdradzę Ci sekret. On nie istnieje. A przynamniej nie z poziomu Twojego IDE i tego, co w nim wpisujesz.…
Wszystko co wytwarzamy, to nie sztuka dla sztuki, ale coś, co w rezultacie ma zaspokoić potrzeby użytkownika. Prawdziwy kod jest wtedy, gdy przynosi korzyść biznesową, zarabia na siebie.
Programując szybko powineneś zauważyć, że jest to bardzo elastyczne i różnorodne zajęcie. Co więcej, że każdy z nas (programistów) będzie lubić coś innego. Są programiści, którzy zajmują się fizyką w grach, są programiści przekładający modele matematyczne na kod, są tacy, którzy głównie skupiają się na optymalizacji i zwiększeniu wydajności. Jedni mają bzika na punkcie front-endu, inni wielbią back-end. Są tacy, którzy idą mocniej w strone architektury i wyboru technologii, są też tacy, dla których bardziej interesująca będzie praca bliżej klienta czy biznes analityka. Jedni chcą poznać jak najwiecej różnych technologii i języków programowania, inni chcą dojść do mistrzostwa w bardzo wąskiej dziedzinie.… Niemniej ciężko szukać przykładu osób, które są świetne we wszystkim i płynnie, bez wysiłku, bazując na magicznej wiedzy nabytej nieświadomie, są w stanie programować wszystko, zawsze i wszędzie.
I choć obszary zainteresowań są różne, każdy z nich jest tak samo ciekawy i nieciekawy jednocześnie. Bo tylko od TWOJEGO zaangażowania, pasji, nauki i doświadczeń zależy czy będziesz zadowolona z tego co robisz ‚i czy dla Ciebie, Twoja praca będzie prawdziwą pasją, czy może zwykłym klepaniem kodu.
Nigdy nie odważyłabym się powiedzieć, że moj obszar zainteresowania jest lepszy niż Twój. Jest inny, być może w innych jego meandrach będę napotykać trudności, a i inne zadania będą sprawiały nam satysfakcje. (Mój) jest dla mnie bardziej interesujacy. Twój tak samo ważny. Bo razem z innymi aspektami (które są interesujące dla innych programistów) składa się na działającą aplikacje. Ba, bo dzięki temu, że Ty wolisz coś innego, razem świetnie się uzupełniamy i dostarczamy użytkownikowi naprawdę dobry produkt.
A pod koniec dnia właśnie o to chodzi! O satyfakcje biznesu, oraz o Twoje własne zadowolenie. I jasne, by być architektem, tech leadem czy ekspertem dziedzinowym, potrzebna jest wiedza, a także trochę lat różnorodnego doświadczenia. Dojście do tego poziomu jest jednak : ‘simple, but not easy’ i oznacza po prostu ciężką i wytrwałą pracę nad swoimi umiejętnościami.