Z programistą w cztery oczy
Rozmowa z Gynvael Coldwind
Na co dzień pracuje w firmie Google, po godzinach prowadzi bloga oraz nagrywa podcasty o programowaniu (http://gynvael.coldwind.pl/). Hobbystycznie programuje od ponad 20 lat.
Zacznijmy od początku - jak zostać programistą?
Przede wszystkim należy zacząć programować i poznać kilka różnych języków programowania. W międzyczasie oczywiście trzeba nauczyć się programować (znajomość języków programowania oraz umiejętność programowania to dwie różne sprawy), a także zaznajomić się z ekosystemem w którym działają programy (architektura komputera, sieci, itp.), algorytmiką, oraz narzędziami używanymi w programowaniu (systemy kontroli wersji, IDE/kompilatory, testy, itd.). W międzyczasie dobrze jest wybrać jedną lub kilka technologii, które nam się najbardziej podobają i w których chcemy się specjalizować, i poznać je naprawdę dobrze.
Warto również wyrobić sobie nawyk nieustannego dokształcania się - informatyka jest działką, która zmienia się w szybkim tempie i codzienna nauka jest czymś normalnym, a wręcz oczekiwanym.
Jakie znaczenie mają studia informatyczne – czy są konieczne aby zostać programistą?
Studia informatyczne nie są konieczne, ale są miłym dodatkiem do nauki we własnym zakresie - na szczęście samokształcenie w przypadku informatyki jest bardzo ułatwione z uwagi na różnorodność łatwo dostępnych materiałów; choć trzeba zauważyć, że większość z nich jest napisana w języku angielskim, który jest jednak wymagany do pracy w tej branży.
Niemniej jednak studia mają kilka zalet: pozwalają zaznajomić się z naukowym podejściem do informatyki, dają dodatkowe kilka lat podczas których można skupić się na nauce, a także pokazują pewne elementy informatyki, o których w innym wypadku moglibyśmy się nie dowiedzieć i do nich nie sięgnąć.
Czy dobry programista musi być dobrym matematykiem?
Odpowiedź na to pytanie zależy od specyfiki tematu, którym na co dzień zajmuje się (lub będzie się zajmować) konkretny programista. W zdecydowanej większości niespecjalistycznych zastosowań programowania wystarczą silne podstawy matematyki (tj. materiał ze szkół podstawowych i średnich). W innych przypadkach, takich jak współczesna grafika komputerowa (np. programowanie shaderów), dobra znajomość pewnych aspektów tzw. matematyki wyższej zdecydowanie się przydaje.
Czy do tego aby być dobrym programistą konieczny jest talent, czy ciężka praca to 99% sukcesu?
Abstrahując od pytania czy istnieje coś takiego jak "talent programistyczny", o sukcesie programisty decyduje jego doświadczenie praktyczne (niekoniecznie zawodowe) oraz wiedza teoretyczna i umiejętność posługiwania się nią. Zdobycie obu jest niezależne od talentu i wymaga sporych ilości czasu i dużych nakładów pracy ze strony osoby zainteresowanej. Kluczem do sukcesu jest więc po prostu zamiłowanie do programowania i informatyki, dzięki czemu czas potrzebny na zdobycie doświadczenia i wiedzy będzie czasem bardzo mile spędzonym.
Jaką drogę Pan przeszedł aby znaleźć się w tym miejscu, w którym Pan obecnie się znajduje (jak wyglądała Pana ścieżka kariery)?
Przygodę z programowaniem rozpocząłem mniej więcej w wieku 7 lat, kiedy dostałem 8-bitowy komputer Atari 800XL. Komputer ten miał wbudowaną bardzo ciekawą grę - Atari BASIC - jest to oczywiście język programowania, choć z perspektywy siedmiolatka była to po prostu kolejna, bardzo ciekawa gra.
Kilkanaście lat później, po liceum, trafiłem na studia na Politechnikę Wrocławską (WPPT/Informatyka), a w międzyczasie zainteresowałem się dodatkowo inżynierią wsteczną i bezpieczeństwem komputerowym. Od drugiego roku pracowałem zdalnie dla jednej z polskich firm antywirusowych, a od trzeciego dla hiszpańskiej firmy zajmującej się bezpieczeństwem komputerowym - Hispasec Sistemas, w której spędziłem prawie cztery kolejne lata.
W międzyczasie dostałem propozycję podejścia do rozmów kwalifikacyjnych w Google, które udało mi się pozytywnie przejść i pracuje tam do dzisiaj.
Dlaczego wybrał Pan pracę w Google?
Powody były dwa: po pierwsze, Google jest uznawane za jednego z najlepszych pracodawców na rynku (całkiem zasłużenie zresztą), a po drugie, pracuje tam wielu cenionych ludzi z branży, co daje dodatkowe możliwości rozwoju.
Jakie technologie programistyczne uznaje Pan za najbardziej przyszłościowe?
Jest to zdecydowanie trudne pytanie. Z języków programowania - C oraz C++ cały czas się silnie trzymają w niskopoziomowych rejonach informatyki. Java również nie traci na popularności, a obecnie na topie wydają się być technologie webowe (JavaScript, itp.) oraz mobilne (Android, itp.). Po stronie serwerowej mógłbym wskazać systemy rozproszone, tj. działające na wielu współpracujących ze sobą serwerach naraz.
Co by Pan poradził młodym programistom rozpoczynającym pracę?
Poza programowaniem bardzo ważne jest ciągłe dokształcanie się, szczególnie to nieformalne czynione we własnym zakresie - jest to coś, czego nie można zaniedbać. A poza tym warto spróbować różnych rzeczy i wyspecjalizować się w tym, co interesuje nas najbardziej.
Bardzo dziękuję za rozmowę.