O klepaniu kodu i mitycznym ‘prawdziwym programowaniu’

By 14 September 2017 April 15th, 2018 ITlogy

Nawet nie wiemy, ile razy ten tem­at pojaw­iał się w mailach, komen­tarzach i pry­wat­nych wiado­moś­ci­ach. Dzisi­aj postaramy się rozwiać wszelkie wąt­pli­woś­ci i odpowiedzieć na pyta­nia: Jak nie zostać klepaczem kodu? Kiedy jest się “prawdzi­wym pro­gramistą”? oraz Czy bez studiów jest na to jakakol­wiek szansa? Ciekawi naszego zda­nia? No to zaczynamy.

Studia (niekoniecznie programistyczne)

Na tem­at studiów mam do przekaza­nia kil­ka reflek­sji. Zaczni­jmy od początku — ja nie mam studiów pro­gramisty­cznych (stu­diowałam Tech­nologię Chemiczną oraz Zarządzanie i Inżynier­ię Pro­dukcji). Kuba ma inżyniera z Infor­maty­ki i nie dokońc­zone stu­dia mag­is­ter­skie. Jako, że wpis ten piszę ja (Ania), to skupie się na włas­nych doświadczeniach.

Po pier­wsze, chemię skończyłam stu­diować kil­ka lat temu i nigdy nie pra­cow­ałam w tym zawodzie. Nie mniej stu­dia te były wyma­ga­jące, a także bard­zo rozległe. Moi zna­jo­mi, którzy zostali w branży mówili wprost, że w pra­cy muszą uczyć się wszys­tkiego od nowa (tudzież dokład­niej). Mogę się odnieść dziś do mojej chemicznej wiedzy — przez to, że nie była ona wyko­rzysty­wana na codzień, nie pamię­tam za wiele, a nawet śred­nio trudne zadanie z ter­mo­dy­nami­ki czy chemii fizy­cznej było­by dziś wyzwaniem. Wiedzi­ałabym jed­nak, gdzie zacząć szukać potrzeb­nych infor­ma­cji i najpraw­dopodob­niej po naucze­niu się pewnych rzeczy od nowa byłabym w stanie je rozwiązać.

Moje stu­dia inżynier­skie były bard­zo moc­no nastaw­ione na pokazanie całego spek­trum chemii i przed­staw­ie­nie pod­staw. Dopiero ostat­nio semes­tr pokazy­wał nam bardziej spec­jal­isty­czne rzeczy. Fak­ty­cznie, by w pełni je zrozu­mieć warto było znać te pod­stawy, niem­niej by np. wykon­ać spec­jal­isty­czną anal­izę instru­men­tal­ną prób­ki, o wiele bardziej były przy­datne równie specy­ficzne wiado­moś­ci z zakre­su danej metody pomi­arowej, czy konkret­nych sub­stancji, które należało wykryć. Przed każdy­mi labo­la­to­ri­a­mi musieliśmy więc przy­go­towywać się dokład­nie do wykony­wanego ćwiczenia. Nie znam oso­by, która nie uczyła się zarówno o nowej metodzie anal­i­ty­cznej, jak i o konkret­nych sub­stanc­jach, które będziemy rozpoz­nawać. Nawet pry­musi musieli/chcieli to powtórzyć przed zajęciami.

Na roku były różne oso­by. Niek­tóre fak­ty­cznie dzię­ki stu­diom odkryły, że chemia to ich powołanie, inni wiedzieli to znacznie wcześniej, ale spo­ra część … po pros­tu stu­diowała. Mieliśmy więc oso­by zain­stere­sowane przed­miotem, zain­tere­sowane dobry­mi oce­na­mi oraz zain­tere­sowanych zal­icze­niem. Każ­da z tych grup inaczej pod­chodz­iła do nau­ki. Każ­da ukończyła stu­dia z zupełnie innym poziomem wiedzy…

Ze studiów mag­is­ter­s­kich mogę dodać jeszcze jed­ną his­torię. Mieliśmy w ramach tech­nik wyt­warza­nia dzi­ał  obrób­ka skrawaniem. W gronie osób, z który­mi wtedy się trzy­małam nie było niko­go, kto miał znaczącą wiedzę z tej dziedziny (wszyscy po inżynierce zmie­nil­iśmy kierunek). Jed­na ze zna­jomych miała wuj­ka, który zawodowo pra­cow­ał na obra­bi­arce CNC. Poprosiła go o pomoc w pro­jek­cie. Jej pro­jekt, który na pod­staw­ie tych kon­sul­tacji, był uznany za tech­no­log­icznie poprawny, został słabo oce­niony. Dziew­czy­na przekaza­ła uwa­gi prowadzącego do swo­jego wuja. On zaśmi­ał się, i stwierdz­ił,  że jego zakład dawno by zbankru­tował ‚gdy­by poz­wolił sobie na takie straty w obróbce mate­ri­ału, jak i ilość czyn­noś­ci, które kom­p­likowały pro­ces. Z prak­ty­ki należało bowiem robić przede wszys­tkim tanio i z poszanowaniem surowca.

Co wyni­ka z tych reflek­sji? Żadne stu­dia nie uczynią z ciebie magi­ka, eksper­ta, spe­cial­isty. Wiedza nieuży­wana szy­bko paru­je z głowy. Nikt się za Ciebie nie nauczy, a samo zal­icze­nie nie gwaran­tu­je, że znasz i rozu­miesz dane zagad­nie­nie. Częs­to to co dzi­ała w labo­la­to­ri­um czy jest przekazy­wane na uczel­ni, jest zbyt oder­wane od rynku i współczes­nych prak­tyk. Oczy­wiś­cie stu­dia mogą też pomóc. Przede wszys­tkim w znalezie­niu swo­jej dziedziny, zapoz­na­niu z pewnym spek­trum ważnych tem­atów, czy po pros­tu naw­iąza­niu zna­jo­moś­ci, które zapro­cen­tu­ją na przyszłość. Jed­nak sam dyplom nie gwaran­tu­je niczego. 

Klepanie kodu

Co to tak w ogóle znaczy klepać kod? Dla mnie to pro­gramować bezmyśl­nie, bez zrozu­mienia. Bard­zo proste zada­nia, które nie wyma­ga­ją wysiłku, myślenia …

I ter­az pomyśmy przez chwilę od czego zależy, czy pro­gramista będzie miał takie zada­nia… Po pier­wsze od pro­jek­tu, bo cza­sem pro­jek­ty utrzy­man­iowe mogą po pros­tu pole­gać na takich drob­nych prz­eróbkach — z drugiej strony, jeśli dołącza­sz do pro­jek­tu, który jest na pro­dukcji już od kilku lat, to samo zapoz­nanie z już ist­nieją­cym kodem może stanow­ić wyzwanie. Niem­niej, w “nieciekawym pro­jek­cie” łatwiej o nieciekawe zadania.

W pro­jek­cie Scru­mowym to zespoł jest odpowiedzial­ny za podzi­ał zadań. I powiedzi­ałabym, że nieza­leżnie od pozy­cji, czy lat doświad­czenia, ta decyz­ja jest pode­j­mowana. Bardziej liczy się zaan­gażowanie, chęć nau­ki, pro­gres jaki robi się w ramach pro­jek­tu, albo, czy ma się w danej chwili czas. Nigdy nie byłam w sytu­acji, gdy zada­nia były dzielone na łatwe i trudne i przyz­nawane wg stanowisk/edukacji/płci itp. Fakt, cza­sa­mi w ramach firmy, by np. zmienić pro­jekt, musisz nauczyć się na tem­at danej tech­nologii, czy poz­nać konkren­ty wycinek biz­ne­su. Nie jest to jed­nak wiedza tajem­na, niedostęp­na, czy nie do przeskoczenia.

Wszys­tko jest w Twoich rękach. Swo­bo­da i doświad­cze­nie przyjdzie oczy­wiś­cie z cza­sem i będzie oku­pi­one ciężką pracą, jed­nak dzię­ki niej i Two­je­mu roz­wo­jowi będziesz mógł rozwiązy­wać coraz to bardziej skom­p­likowane prob­le­my, ale też odna­jdy­wać ciekawszą stronę tych prostych “małpich” zadań.

Klepanie kodu jest wyborem pro­gramisty. Być może boi się, nie jest jeszcze pewnien swoich umiejęt­noś­ci, nie chce zmieni­ać pro­jek­tu, czy firmy. Nie chce wziąć odpowiedzial­noś­ci za siebie, swój rozwój i kod. Woli pasy­wnie czekać na zada­nia. Woli marudz­ić, albo zwycza­jnie jest mu z tym co robi dobrze (i to też jest ok, nie każdy musi być Pro­gram­ming Guru, a good enough w wielu przy­pad­kach jest dobrą opcją). 

Nie chcesz klepać kodu? Ucz się, rozwi­jaj. Dociekaj, zadawaj pyta­nia. Staraj się zrozu­mieć prob­lem, samodziel­nie szukać rozwiązań. Bądź proak­ty­wny. Jeśli two­je zadanie jest pow­tarzalne i nużące z dużym praw­dopodobieńst­wem moż­na je zau­tomaty­zować. Doma­gaj się zadań, które będą dla Ciebie wyzwaniem, i które pch­ną Twój rozwój. Bądź odpowiedzial­ny nie tylko za efekt koń­cowy, ale też za cały pro­ces defin­iowa­nia User Story. 

Prawdziwy kod” dla “prawdziwego programisty”

Uwa­ga, zdradzę Ci sekret. On nie ist­nieje. A przy­nam­niej nie z poziomu Two­jego IDE i tego, co w nim wpisujesz.…

Wszys­tko co wyt­warza­my, to nie sztu­ka dla sztu­ki, ale coś, co w rezulta­cie ma zaspokoić potrze­by użytkown­i­ka. Prawdzi­wy kod jest wtedy, gdy przynosi korzyść biz­ne­sową, zara­bia na siebie.

Pro­gra­mu­jąc szy­bko powineneś zauważyć, że jest to bard­zo elasty­czne i różnorodne zaję­cie. Co więcej, że każdy z nas (pro­gramistów) będzie lubić coś innego. Są pro­gramiś­ci, którzy zaj­mu­ją się fizyką w grach, są pro­gramiś­ci przekłada­ją­cy mod­ele matem­aty­czne na kod, są tacy, którzy głównie sku­pi­a­ją się na opty­mal­iza­cji i zwięk­sze­niu wyda­jnoś­ci. Jed­ni mają bzi­ka na punkcie front-endu, inni wiel­bią back-end. Są tacy, którzy idą moc­niej w strone architek­tu­ry i wyboru tech­nologii, są też tacy, dla których bardziej intere­su­ją­ca będzie pra­ca bliżej klien­ta czy biznes anal­i­ty­ka. Jed­ni chcą poz­nać jak najwiecej różnych tech­nologii i języków pro­gramowa­nia, inni chcą dojść do mis­tr­zost­wa w bard­zo wąskiej dziedzinie.… Niem­niej ciężko szukać przykładu osób, które są świetne we wszys­tkim i płyn­nie, bez wysiłku, bazu­jąc na mag­icznej wiedzy nabytej nieświadomie, są w stanie pro­gramować wszys­tko, zawsze i wszędzie.

I choć obszary zain­tere­sowań są różne, każdy z nich jest tak samo ciekawy i nieciekawy jed­nocześnie. Bo tylko od TWOJEGO zaan­gażowa­nia, pasji, nau­ki i doświad­czeń zależy czy będziesz zad­owolona z tego co robisz ‚i czy dla Ciebie, Two­ja pra­ca będzie prawdzi­wą pasją, czy może zwykłym klepaniem kodu.

Nigdy nie odważyłabym się powiedzieć, że moj obszar zain­tere­sowa­nia jest lep­szy niż Twój. Jest inny, być może w innych jego mean­drach będę napo­tykać trud­noś­ci, a i inne zada­nia będą spraw­iały nam satys­fakc­je.  (Mój) jest dla mnie bardziej intere­su­ja­cy. Twój tak samo ważny. Bo razem z inny­mi aspek­ta­mi (które są intere­su­jące dla innych pro­gramistów) skła­da się na dzi­ała­jącą aplikac­je. Ba, bo dzię­ki temu, że Ty wolisz coś innego, razem świet­nie się uzu­peł­ni­amy i dostar­cza­my użytkown­ikowi naprawdę dobry produkt. 

A pod koniec dnia właśnie o to chodzi! O saty­fakc­je biz­ne­su, oraz o Two­je własne zad­owole­nie. I jasne, by być architek­tem, tech lea­dem czy ekspertem dziedzi­nowym, potrzeb­na jest wiedza, a także trochę lat różnorod­nego doświad­czenia. Dojś­cie do tego poziomu jest jed­nak : ‘sim­ple, but not easy’ i oznacza po pros­tu ciężką i wytr­wałą pracę nad swoi­mi umiejętnościami.