“Jesteś programistą? Świetnie, naprawisz mi komputer?”

Czas czytania artykułu: 4 minuty
Michał
03-10-2018

Ile razy w Twoim życiu zawodowym dane Ci było spotkać się z powyższym lub bardzo podobnym do niego zdaniem? Zapewne niejednokrotnie - zarówno ze strony rodziny, jak i znajomych - przyszło Ci się zetknąć z niezrozumieniem materii Twojej pracy, pasji czy kierunku studiów. Co bardziej dociekliwi ciągnęli temat dalej, jednak rażeni piorunem Twojej zniecierpliwionej, a zarazem lakonicznej negacji, wybuchali: “Jak to? Tyle czasu przy komputerze spędzasz, a tak banalnej rzeczy nie umiesz?”. W tym miejscu dyskusja, teraz już całkiem ożywiona, najczęściej kończyła swój żywot, wiedza rozmówcy pozostawała niezaspokojona, a Ty spokojnie wracałeś do przerwanej trzydzieści sekund temu czynności. Może więc teraz jest czas na zadanie sobie fundamentalnego pytania, parafrazując Panoramiksa: “Jak to jest być programistą? Dobrze?”

Kwestia chęci

Okoliczności, w jakich się znajdujemy, otwierają szeroki wachlarz możliwości dla osób pracujących w szeroko rozumianej informatyce. Jedna z gałęzi informatyki, nasze programowanie, jest szczególnie nienasycona. Dzięki temu w większych ośrodkach miejskich nie występuje zjawisko bezrobotnego programisty. Ofert pracy skierowanych do przyszłych bądź obecnych developerów czy testerów nie sposób zliczyć, a liczba freelancerów pracujących w systemie B2B i software house’ów stale rośnie, skutecznie napędzając rozwój dziedziny IT. Tutaj należy jednak wyhamować dywagacje na temat branżowej sielanki inżynierów komputerowych i zastanowić się nad minimalnymi wymaganiami pracownika, aby stan równowagi rynkowej został utrzymany.

Najpierwszą z pierwszych kwestii w osiąganiu programistycznej nirwany jest chęć rozwoju, a konkretnie – samorozwoju. Teza może w oczach większości jawić się jako nieco wywrotowa, gdyż wiemy, że dobre chęci robią za bruk. Mam raczej na myśli ów zapał, z którym niewątpliwie zetknąłeś się w momencie, gdy Twój pierwszy kalkulator w wierszu poleceń pomyślnie wykonał operację dodawania (a nawet nie pozwolił na dzielenie przez zero!), czy też w końcu zrozumiałeś, że wskaźnik jest adresem pamięci, a nie zmienną. Tak skonstruowana wręcz dziecinna ciekawość świata i dociekliwość problemu powinna stanowić nieodzowny atrybut skutecznego programisty, a naturalnym skutkiem powyższych – chęć do poznawania nowych rozwiązań i optymalizacja tych istniejących. Ów pociąg do wiedzy winien być motorem napędowym ambicji każdego developera, gdyż jego wiedza nigdy nie będzie pełna. Determinuje to stopień dynamizmu rozwojowego poszczególnej technologii, w ogólności można powiedzieć, że programista z krwi i kości odczuwać będzie nieustanny niedosyt wynikający z niemożności objęcia wiedzą całej technologii. Nie należy załamywać rąk, gdyż zdobywanie kolejnych stopni wtajemniczenia na danym obszarze cieszyć będzie tym bardziej, im więcej serca włożymy w próbę jego zgłębienia.

jak-byc-programista-w-tekscie

Kwestia umiejętności

Jednym z metaforycznych opisów języka programowania jest przyrównanie go do języka obcego. Racja, przeróżne semantyki i gramatyki sposobów komunikowania się z maszynami mogą do pewnego stopnia przywodzić na myśl porozumiewanie się z obcokrajowcem w jego ojczystym narzeczu. Tu podobieństwa się kończą. Istotną różnicą, która częstokroć wpędza w kozi róg adeptów sztuki programowania, jest metodyka nauki nowego języka. Schody zaczynają się już na samym początku. Jesteś przytłoczony ogromem znaków zapytania do tego stopnia, że nie wiesz nawet które z pytań zadać jako pierwsze - gdy zaś spytasz, prawdopodobnie zostaniesz wprowadzony w jeszcze większą konsternację, bowiem trzy na dziesięć terminów użytych w zdaniu będzie brzmiało zaskakująco nieznajomo: “Niby po polsku, ale nadal nie rozumiem!”. Jedynym racjonalnym wyjściem będzie w końcu mozolne dłubanie w trywialnie z początku wyglądającym problemie. Gdy po trzech dniach udało się zdobyć ten, wydawać by się mogło, szczyt Twoich możliwości, przyjdzie czas na następny, dwa razy wyższy. Potem przyjdzie czas na kolejny, i kolejny, i jeszcze jeden. Ot, programistyczna szkoła charakteru. Dojdziesz w końcu do wniosku, że nie ma innej drogi do perfekcji, jak poprzez pomyłki. Powyższe zajmie oczywiście dużo czasu, nie tyle jednak, byś po drodze nie był w stanie, aplikując na stanowisko developera, nie zostać przyjętym na któreś z nich. Jeśli zdecydujesz się na podjęcie nowej pracy, będziesz w stanie zrewidować swoje podejście do poznanych wcześniej problemów przy wykorzystaniu znanych Ci rozwiązań, a to, w mojej skromnej opinii, ubogaca najbardziej.

Kwestia komunikacji

Stereotyp introwertycznego chuderlaka o karnacji osoby cierpiącej na światłowstręt, w kraciastej koszuli i okularach ze szkłami z denek od słoików Wecka powoli odchodzi do lamusa. Pomijając jednak rzecz o aparycji, głównym zarzutem stawianym wobec braci ludzi informatyki były ich trudności w komunikowaniu się z otoczeniem. Zarzut jak najbardziej słuszny i wciąż aktualny, szczególnie w przypadku tak koncepcyjnej pracy, jak programowanie. I tutaj czai się pułapka, gdyż, jak można przypuszczać, na wytrenowanie umiejętności miękkich nie ma jednoznacznego przepisu. Z uwagi na mnogość typów charakteru, które próbuje się ogólnie usystematyzować poprzez definicję indywidualnego stylu funkcjonowania, można napotkać podstawowe problemy w komunikacji interpersonalnej. Pokusiłbym się o stwierdzenie, iż kluczem do skutecznej pracy w środowisku programistów jest nieskrępowana czasem i przestrzenią wymiana informacji o swoich profesjonalnych problemach i postępie pracy (kłaniają się metodyki zwinne). Kilkuosobowe brygady programistów i testerów są w stanie zapewnić ciągłą integrację, rozwój i jakość oprogramowania na przestrzeni lat, więc nie przesadzę, jeśli przyrównam ów zespół do maratończyka, którego członkami są właśnie współpracownicy w ramach zespołu. Wszystko w myśl zasady: “Trzy godziny rozmowy oszczędzają trzech tygodni pracy”.

Programista - czyli kto?

W krótkich słowach: osoba przetwarzająca kawę na kod źródłowy lub w ujęciu nieco szerszym – osoba, która rozmawia z komputerem za pomocą specjalistycznego języka, czego widocznym efektem jest działanie wszelkiej maści programów i sprzętów. Mniej więcej taka odpowiedź powinna zadowolić ciocię, gdy ta przy rodzinnym stole zapyta, co właściwie umiemy w życiu robić. Nie będziemy oczywiście zanudzać jej opowieściami o stosowanych metodologiach, frameworkach czy procesach występujących w naszej pracy. Absolutnie podstawowa dla nas wiedza jest absolutnie zbędną, jeśli chodzi o definicję naszego zawodu. Powyższego tekstu nie należy traktować jako przepisu na programistę doskonałego, ani apoteozy ludzi pracujących przy wytwarzaniu oprogramowania. Są to wyłącznie granice, w ramach których warto rozważyć swoje istnienie, chcąc rozpocząć swoją przygodę z programowaniem.

O autorze

Michał
Michał, software developer
Niezmiennie od 1994 związany ze Szczecinem. Student informatyki WI ZUT w Szczecinie. Najmłodszy software developer w DGS. Zawodowo odpowiedzialny za warstwę UI aplikacji desktopowych. Pasjonat .NET, eksperymentator IoT, specjalista od gadania oraz na wskroś szczecińskiego braku umiaru.