Artykuły, Opinie i Wywiady, Wywiady
comment 1

Czy warto zostać programistą? Wywiad z Adamem Sznajderem

Branża IT rozwija się w zastraszającym tempie i chyba każdemu przez głowę przeleciała myśl – a może by tak zacząć kodować? Czy jednak gra jest warta świeczki? Czy warto zostać programistą? Czego warto się uczyć? O tym i wielu innych zagadnieniach związanych z pracą programisty rozmawialiśmy z Adamem Sznajderem,  programistą z Sumo Logic.

Jak wyglądała Twoja ścieżka kariery?

Pierwszą pracę rozpocząłem jeszcze w czasie nauki na Politechnice Warszawskiej. W E-point pracowałem jako młodszy programista JEE i zajmowałem się pisaniem aplikacji webowych w Javie dla dużych banków. Liznąłem tam też trochę Clojure i JavaScriptu. Świetny team leader i wysoki poziom zespołu pozwoliły mi na wyrobienie w sobie pierwszych dobrych nawyków i skupienie się na praktyce w większym stopniu niż w czasie studiów.

Po jakimś czasie dołączyłem do funduszu hedgingowego z Chicago jako Quantitative Developer. W TradeLink pisałem w C++ aplikacje, które same handlowały kontraktami krótkoterminowymi na giełdach całego świata. Programy obracały bardzo dużymi kwotami, a stanowisko było w pełni samodzielne, więc spoczywała na mnie ogromna odpowiedzialność. Co ciekawe, nie zajmowałem się tam tylko czysto technicznymi aspektami rozwoju aplikacji (programowanie, monitoring, utrzymanie), ale także rozwojem samych algorytmów handlu. Współpracowałem przy tym ze statystykami, którzy mieli zdecydowanie lepszy warsztat matematyczny niż ja.

Po dwóch latach ponownie postanowiłem zmienić pracę i dołączyłem do Sumo Logic, startupu z Doliny Krzemowej. Sumo zapewnia platformę do analizy dużych zbiorów danych maszynowych (logi, metryki itd.). Przetwarzamy w swoich systemach imponujące ilości danych, a naszymi klientami są bardzo duże firmy. W Warszawie mamy mały oddział, który składa się z tylko trzech osób. Zajmujemy się w nim głównie optymalizacją systemu pod względem szybkości działania oraz kosztów infrastruktury chmurowej. Programujemy w Scali i rozwiązujemy bardzo trudne, ale przy tym także bardzo ciekawe problemy.

Kogo szuka się na stanowisko, które obecnie zajmujesz? Jakie umiejętności są potrzebne?

Co prawda programujemy w Scali, ale nie wymagamy jej znajomości przy rekrutacji. Szczególną uwagę zwracamy za to na umiejętność rozwiązywania praktycznych problemów, znajomość algorytmów i struktur danych oraz programowania współbieżnego. Tak naprawdę szukamy osób, które są na tyle bystre oraz doświadczone, że mogłyby pracować w dowolnej technologii i będą w stanie samodzielnie realizować dość trudne i nieszablonowe zadania. Osobiście uważam za krytyczną także umiejętność efektywnego komunikowania się oraz dopasowanie osobowościowe do kultury firmy. Jeżeli ktoś nie potrafi przekazywać wiedzy lub nie jest w stanie dogadać się z kolegami, to nie przyniesie zbyt dużej korzyści zespołowi.

Jakiego języka programowania, Twoim zdaniem, należy się uczyć?

Można na to pytanie odpowiedzieć z różnych perspektyw. Truizmem będzie na przykład stwierdzenie, że przed wyborem języka należy zastanowić się, co chcemy tak naprawdę osiągnąć. Jestem zwolennikiem doboru właściwego narzędzia do problemu. Stąd można uczyć się języka pod daną dziedzinę (np. Objective-C, aby programować iOS). Jeżeli zaś mówimy o osobach, które dopiero zaczynają swoją przygodę z programowaniem, to myślę, że dobrze jest liznąć po trochu wszystkiego. Tylko poprzez próby można stwierdzić, czy coś komuś się podoba czy nie.

Sądzę, że również bardziej doświadczeni programiści powinni uczyć się nowych języków programowania, ponieważ często to właśnie niszowe nowości wprowadzają innowacje, które które po paru latach mogą trafić do mainstreamu. Takim wartym zainteresowania językiem może okazać się np. Pony. Tak samo zabawa z różnymi paradygmatami (np. funkcyjnym) pozwala na poszerzenie swoich horyzontów. Istnieją języki (np. Haskell), które nie mają zbyt dużego zastosowania w przemyśle, ale pozostawiają trwały ślad na sposobie myślenia programisty. Zdobyta w trakcie ich nauki wiedza jest uniwersalna i przydaje się np. w Scali.

Czego najbardziej nie lubisz w swojej pracy?

Jestem ogólnie bardzo zadowolony ze swojej pracy. Jeżeli miałbym wskazać jednak coś uciążliwego to zdecydowanie przeszkadza mi dziewięć godzin różnicy czasowej między Warszawą, a Redwood City, w którym mieści się główna siedziba Sumo Logic. Tego jednak nie da się przeskoczyć.

Jeżeli zaś mówimy o rzeczy, która mi ogólnie przeszkadzała w pracy, to jest to zdecydowanie monotonia. Powtarzalne zadania i brak rozwoju to coś, czego nie potrafię zaakceptować. Ilekroć zaczyna wiać w pracy nudą, zaczynam się rozglądać za nowymi wyzwaniami. Żyję w przekonaniu, że praca ma mi nie tylko zapewnić godziwe życie, ale także fascynować i ciągle uczyć.

Jeżeli przez dłuższy czas budzę się rano i nie mam ochoty iść do pracy, to znak, że muszę spróbować zmienić projekt, swoją obecną rolę w organizacji albo samą firmę.

Co jest dla Ciebie najciekawsze w Twojej pracy?

Samą czynność pisania kodu traktuję jako formalny zapis metody rozwiązania problemu. Można oczywiście zrobić to mniej lub bardziej elegancko czy poprawnie. To też jest sztuka. Niemniej jednak najbardziej fascynują mnie same problemy oraz proces ich rozwiązywania. Kryje się pod tym m.in. konieczność zrozumienia domeny, znalezienie warunków brzegowych i ograniczeń, analiza możliwych rozwiązań czy wybór tego najlepszego. Należy pamiętać, że naprawdę trudnych problemów nie rozwiązuje się z reguły w pojedynkę, tylko robi pewnego rodzaju burzę mózgów. Możliwość poznania, w jaki sposób inni podchodzą do danego zagadnienia czy poddanie swojego pomysłu ich ocenie, jest czymś, co poszerza naszą perspektywę oraz zmienia metodę, według której zaatakujemy następny problem. W Sumo mam możliwość nauki od wybitnych jednostek oraz pracuję nad problemami, których większość firm nie ma ze względu na zbyt małą skalę. Co więcej, możliwość obserwowania wykładniczego wzrostu firmy pod względem organizacyjnym i biznesowym jest także fascynująca. Takie doświadczenia uważam za bezcenne.

Co powiedziałbyś osobom, które chcą zostać programistami?

Czeka Was bardzo dużo pracy, ale chociaż bywa trudno, nie należy się zrażać, bo gra jest warta świeczki. Pamiętajcie, że technologie ciągle się zmieniają i nieustanna nauka jest podstawą tego zawodu. Dlatego nie należy się zbyt mocno przywiązywać do jednego języka programowania czy frameworka. Spróbujcie opanować do perfekcji rzeczy niezależne od konkretnych technologii: szybkie prototypowanie, rozwiązywanie problemów, algorytmy i struktury danych, zagadnienia związane ze współbieżnością, systemy rozproszone czy wpływ niskopoziomowych zasad działania komputera na działanie aplikacji. Piszcie jak najwięcej kodu, dołączajcie do projektów open-source i bierzcie udział w takich inicjatywach jak Google Summer of Code, czy ImagineCup. Pamiętajcie, że polski rynek pracy jest zorientowany na pisanie oprogramowania na zamówienie, a nie tworzenie innowacyjnych produktów. Stąd być może warto rozglądać się za praktykami w Stanach, na które ze względów wizowych dużo łatwiej się dostać niż do pełnowymiarowej już pracy. Pamiętajcie widząc oferty krajowych firm, że programowanie nie kończy się na Javie i Springu. Praca w firmach produktowych jest zdecydowanie ciekawsza, ale także trudniej ją zdobyć. Stawiajcie sobie ambitne cele, które nie będą ograniczone tylko do lokalnego podwórka. Rozwijajcie się także poza IT, bo umiejętności sprzedaży, komunikacji czy prezentacji również są w cenie. Pamiętajcie, że najlepsze oferty pracy nie pojawiają się w ogłoszeniach, więc zdobywajcie nowe kontakty, pielęgnujcie znajomości i dbajcie o markę swoich nazwisk.

 

  • pilik

    Warto, ale jeśli się do tego mocno przyłoży. Z mojej grupy specjalistycznej 15 osobowej jakieś 4 pracuje w zawodzie, reszta się podaje za specjalistów programowania. Jeśli ktoś sobie nie radzi na podstawie samych zajęć jakie miał na uczelni to od siebie z eduweb wideokursy mogę polecić. Bardzo treściwe i mocno pomagają.