Łukasz Rozbicki o tym, czego uczą: startup, software house i korporacja
Nasz dzisiejszy rozmówca pracował w korporacji, rozwijał swój startup, a teraz zarządza zespołem programistów i zajmuje się rekrutacją w software housie. Zapytaliśmy go o to, gdzie początkujący programista najwięcej nauczy się na temat programowania.
Łukasz Rozbicki, Team Leader GogoApps, dzisiejszy rynek pracy przyrównałby do znanego dowcipu o programistach. Jeden mówi drugiemu, że odszedł z pracy. Drugi pyta, jak czuje się na bezrobociu. Ten pierwszy na to: “To najgorsze pół godziny mojego życia”. – To rynek pracownika. Bez dwóch zdań – komentuje Rozbicki. Jak wyglądała jego ścieżka kariery?
Zaczął pracę od zleceń, by później zatrudnić się w kilku dużych firmach: Redefine, Agorze i K2. Te miejsca pracy zostawił dla startupu Kekemeke, który rozwijał przez blisko 4,5 roku. Teraz pracuje w software housie GogoApps i zajmuje się m.in. zarządzaniem zespołem programistów, ale też rekrutacją. Z rozmowy dowiecie się m.in., jak kiedyś wyglądała ścieżka rozwoju programisty.
Zacznijmy od studiów. Skończyłeś studia na kierunku “inżynieria systemów”. Czego się na nich nauczyłeś w kontekście programowania?
Jeśli chodzi o program nauczania to trochę teorii oraz pobieżnych informacji na temat prowadzenia projektów. Więcej, niż w ciągu 5 lat studiów, nauczyłem się w ciągu pół roku pracy.
Dlaczego studia tylko w niewielkim stopniu przydały Ci się w pracy zawodowej?
Nie wiem, jak teraz wygląda program nauczania, ale za moich czasów bardzo mało było praktycznych rozwiązań, a dużo akademickich dywagacji i rzeczy przestarzałych, nieużywanych nigdzie nawet w 2006 roku.
Gdyby było więcej praktyki niż teorii – studia byłyby bardziej wartościowe?
Jasne! Ale na studiach musi być więcej praktyki użytecznej w życiu, czyli więcej projektów/przykładów opartych na faktycznych projektach komercyjnych. Raczej symulator skrzyżowania ulicznego to nie jest coś, co jest popularnym zleceniem, ale już np. zintegrowany system zarządzania kopalnią – jak najbardziej (a też wyzwań trochę jest). Do tego duży nacisk na metodyki wytwarzania oprogramowania. I to nie w formie trzech slajdów o waterfallu. Oczywiście może dziś już to tak wygląda.
A jak podzieliłbyś program nauczania na starsze języki programowania i nowe?
To proste: jeden, dość prosty język, by poznać w ogóle podstawy programowania (ale nie Turbo Pascal, jak w moim przypadku, tylko np. coś w stylu C/C++), a potem to po prostu używanie lub omawianie języków przydatnych komercyjnie. Ja na studiach przerabiałem Turbo Pascala, trochę C++, Adę 95 i Javę. O ile jeszcze ta ostatnia ma wciąż duży sens komercyjny, to reszta? Albo rynek pracy nie istnieje, albo próg wejścia jest dużo wyższy niż w rynek pracy dla PHPowca, Railsowca czy JavaScriptowca.
Już w trakcie studiów szukałeś pierwszych doświadczeń jako webdesigner/programista. Jak w 2007 roku wyglądał rynek pracy w branży IT?
Raczej te doświadczenia same mnie znalazły. Samym webdevelopmentem zainteresowałem się od starszego kolegi, który miał własną firmę, programował w PHP, w JS, tworzył designy.
W czasie studiów, jak już złapałem bakcyla “klepania stronek”, co się dało, to robiłem w formie stron internetowych. Inny kolega wiedząc to, zapoznał mnie z właścicielem małej, lokalnej “agencji”. Dla tejże agencji robiłem pierwsze zlecenia, dziś powiedziano by, że fullstackowe (PHP, HTML, JS).
Potem z jeszcze innym kolegą zaczęliśmy działać jako freelancerzy i kompleksowo tworzyliśmy rozwiązania dla klientów. Brzmi pięknie, a tak naprawdę sprowadzało się do używania naszego autorskiego CMSa wszędzie, gdzie się da i podmiance szablonów HTMLowych. Nie było wtedy jeszcze całego hype’u na JavaScript, jQuery dopiero co raczkowało, poważne firmy zajmowały się raczej Javą niż JavaScriptem. Oczywiście pojawiały się już takie jasne punkty jak K2 Internet, która to agencja uchodziła swego czasu za wzór dla webdevelopmentu.
Pracodawców było dużo? Były to raczej korporacje czy małe firmy?
Nie tak dużo, jakby się wydawało. Umowy/kontrakty miałem podpisane z pięcioma firmami, nie licząc obecnej. W tym było jedno korpo i jedna duża agencja interaktywna (jeszcze przed transformacjami w kierunku korpo).
Czego wtedy wymagano od juniora?
Pracy. Przede wszystkim nie przypominam sobie, by w ogóle operowano terminem “junior” w moim przypadku. Po prostu – web developer lub frontend developer. Nikt raczej nie zastanawiał się, czy umiem to czy tamto. Zakładano, że jak nie umiem, to się nauczę sam lub zapytam.
Na jaki zarobek mógł liczyć junior? Co należało do jego obowiązków?
W porównaniu do dzisiejszych stawek – kosmicznie niski. 2500-3500 “na rękę” przy umowie o pracę. Szału nie było, ale była zajawka, że się rozwija i robi fajne rzeczy.
Opowiedz proszę o swoim pierwszy miejscu pracy. Jakie wyzwania czekały na młodego programistę?
Pierwsze zlecenia: rób wszystko, co klient/szef sobie zażyczy. Czy to pisanie instrukcji, jak pobrać maila, czy to napisanie CMSa, czy to administracja jakimś serwerem linuksowym.
Pierwsza praca na etat: “tu masz opis projektu, tu projektu graficzne, tutaj dokumentacja do CMSa, wdróż”. I trzeba było kombinować. Najlepsza forma nauki według mnie.
Pierwsze zlecenia realizowałeś jako freelancer, ale później zatrudniłeś się w korporacji. Mówi się, że korporacja zmienia człowieka – jak zmieniła Ciebie?
Hmm, Redefine czy K2 ciężko było wtedy nazwać korporacjami. Agora dopiero pasowała do tego określenia. Jak mnie zmieniła? Zapomniałem, jak się efektywnie pracuje i wiem, że już nie chcę pracować w korpo. Chyba, że jako dyrektor.
Na pewno jakiś element z korporacji warto przenieść do mniejszych firm. Jaki element byś wybrał?
Procesy pomagające w uporządkowaniu pracy. Oczywiście bez przesady, by nie zrobić korpo-klimaty w firmie składającej się z 10 osób.
Dla juniora korporacja to dobre miejsce na pierwsze komercyjne doświadczenia? Poszedłbyś tą drogą jeszcze raz?
Tak, brak presji czasowej a jednocześnie możliwość nauki konkretnych technologii to duży zysk. A do tego wiedza na temat tego, czego nie robić i jak nie robić, jest bardzo cenna.
Gdzie programista może szybciej awansować? Gdzie więcej się nauczy?
W startupie raczej się nie awansuje. A na pewno nie w początkowych etapach rozwoju. Struktura jest bardziej płaska i po prostu każdy ciężko pracuje na sukces firmy. Firmy o pewnej stabilizacji rynkowej mają już określoną ścieżkę rozwoju (procesy…). Teoretycznie można powiedzieć, że w małej firmie prościej awansować, bo i procesy nie są takie surowe, i kadra zarządzająca jest bardziej zbliżona do pracowników, więc łatwiej można przepchnąć pewne decyzje kadrowe.
Spis treści
Czym zajmowałeś się w Redefine?
Moim głównym projektem była implementacja całego serwisu dla nieistniejącego już banku. Dostałem ko(s)micznego CMSa (raczej przez jego skomplikowanie, niż przez możliwości) i musiałem ekran po ekranie dziergać całość, używając HTMLa, jQuery i templatek Velocity (takie cudo javowe, nie wiem czy to się jeszcze gdziekolwiek stosuje; mam nadzieję, że nie…). W międzyczasie przygotowywałem proste mechanizmy galerii zdjęć dla platformy Ipla.
Dlaczego postanowiłeś zmienić miejsce pracy? Czego brakowało Ci u poprzedniego pracodawcy?
Względy finansowe i rozwój. Z projektami w Redefine mogłem żyć. Dostałem się do K2, firmy, która była moim marzeniem w czasach raczkującego juniora. Mówiło się, że K2 płaci marnie, ale jest świetnym wpisem w CV. Właściwie dokładnie tak było w moim przypadku.
Dla korporacji utarto określenie “ciepłej posadki”. To mit czy prawda?
Z mojego doświadczenia i z moim obserwacji wynika, że tak, to prawda. Oczywiście, znam też przypadki, gdy szanowany pracownik był zwalniany z dnia na dzień, bo coś się zmieniło w strategii firmy, ale z reguły, jak ktoś nie myśli o pracy jako “czymś więcej”, to usiądzie w korpo i już tam siedzi wiele lat. Jeśli komuś zależy na tym “czymś więcej” (przygoda, odrobina ryzyka, zmiana środowiska itp), to nawet z ciepłej posadki ucieknie szybko.
W końcu rzuciłeś wszystko i zacząłeś robić startup. Czym różni się praca w startupie od pracy w korporacji?
Chyba wszystkim. Prościej by było powiedzieć, co jest częścią wspólną. Ale i tu od biedy mógłbym powiedzieć, że samo programowanie (w moim przypadku). Choć z tym też różnie bywało, ponieważ w korpo raczej udawało się pracę niż faktycznie coś pożytecznego robiło. Startup to z kolei był dziwny miks przygody, wolności i ciągłej walki. Nauczył mnie patrzeć na produkt nie tylko z perspektywy kodu. A może nawet przede wszystkim nie z perspektywy kodu. Nauczyłem się, że “better done than perfect” to podejście sprawdzające się praktycznie zawsze.
Dla biznesu nieistotny jest test coverage, użycie takiego wzorca czy innego. Ważny jest końcowy produkt. Oczywiście, jego jakość jest ważna, ale nie za jakość kodu ktoś płaci i nie kodu używają potem ludzie, tylko finalnego produktu. Nie dla wszystkich to jest oczywiste.
Startup uczy ryzyka, asertywności, pokazuje drogę od początku produktu do jego końca (różnie zdefiniowanego). W korporacji nie ma miejsca na te rzeczy. Przynajmniej nie dla szeregowych pracowników. Ogólnie po niemal 5 latach w startupie mogę zawsze śmiało powiedzieć, że technologia nie ma totalnie znaczenia! Ważne jest cel i to, co trzeba zrobić by ten cel osiągnąć. A w jaki sposób to jest już sprawa drugo czy nawet trzeciorzędna.
Co przeniosłeś, jeśli chodzi o doświadczenie, z korporacji do Kekemeke?
Poza technologiami, które poznałem, to nic.
Teraz pracujesz w software housie, zarządzasz zespołem developerskim i zajmujesz się m.in. rekrutacją. Co w ciągu dnia zajmuje Ci najwięcej czasu?
Był taki moment, że mój kalendarz był zawalony od góry do dołu różnymi spotkaniami (na tematy technologiczne, rozwiązywanie konfliktów, rekrutacje, planowania), a na samo programowanie miałem godzinę lub dwie. Teraz udaje mi się ponad połowę dnia poświęcać na główny projekt firmy, w której pracuję. Przewodzę też jemu i w nim też udzielam się “przy klawiaturze”. Często jednak to wciąż są spotkania, planowania, rozwiązywanie kwestii technologicznych, niż faktyczne programowanie.
Jak Twoim zdaniem wygląda dzisiejszy rynek pracy w branży IT?
Jest taki dowcip o dwóch programistach. Jeden mówi drugiemu, że odszedł z pracy. Drugi pyta, jak się czuje na bezrobociu. Ten pierwszy na to: “To najgorsze pół godziny mojego życia”. To rynek pracownika. Bez dwóch zdań. Pensje szybują coraz wyżej, developerzy z 2-3 letnim doświadczeniem (czyli często wciąż juniorzy) zarabiają dziś więcej niż senior 5 lat temu. Z jednej strony to super, a z drugiej często ludzie oczekują więcej od firmy, niż sami mogą tej firmie zaoferować. Bo zewsząd napływają do nich sygnały o programistach zarabiających 15 tysięcy miesięcznie, wyznania typu “byłem budowlańcem, nauczyłem się htmla i teraz po pół roku zarabiam 10 tysięcy!”. Ale jeśli są pracodawcy chętni by płacić takim ludziom, to czemu by z tego nie korzystać? Prawdziwi specjaliści nie będą mieli jeszcze długo problemu ze znalezieniem ciekawej pracy.
Czego zazwyczaj brakuje kandydatom aplikującym do GogoApps?
Doświadczenia i pokory. Często to idzie ze sobą w parze, ale są też sytuacje, gdy ktoś mianujący się np. ekspertem od Reacta z 10 letnim doświadczeniem i oczekiwaniami rzędu 20 tysięcy netto zapytany o to, jak działa React (nie będę tu wchodził w techniczne szczegóły) odpowiada “nie wiem”.
To prawda, że częściej zatrudnia się tych, którzy mają mniej doświadczenia w programowaniu, ale bardzo dobrze rozwinięte umiejętności współpracy, dobrego komunikowania się w grupie i realizacji wspólnych zadań?
Z mojego doświadczenia powiem, że to raczej rzadkość.
Jak w GogoApps dbacie o rozwój umiejętności programistycznych członków zespołu?
Oferujemy pracę w „młodym i dynamicznym zespole przy projektach dla znanych firm”. A na serio, to po prostu wymagamy zaangażowania. Często sama tematyka projektu wymaga od programistów poznania nowych rozwiązań, narzędzi czy wzorców. Często developerzy sami prowokują dyskusje na tematy związane z tym, czym się zajmują. Czasem są burzliwe, ale zawsze coś z nich wynika. Zawsze ktoś pozna coś nowego, przeczyta jakiś artykuł, zapyta o coś. Staram się, by wzajemne code review były jak najbardziej szczegółowe i zawierające rozwiązania, a nie tylko przytyki do czyjegoś kodu.
To jest chyba najlepsza forma nauki, przez praktykę. Każdy z nas na tym korzysta, czy to junior, czy to senior. Współorganizujemy też różne meetupy technologiczne (na tematy Go, blockchainu, JavaScriptu). Na każdym takim wydarzeniu są ludzie od nas, zawsze chętni, by się podzielić wiedzą i chłonąć ją od innych.
Ogólnie po prostu oczekujemy zaangażowania w to, co się robi. Dzięki temu, siłą rzeczy, osoba ma okazję się rozwijać, poznawać coraz lepiej proces wytwarzania oprogramowania, technologie, procesy leżące dookoła.
Łukasz Rozbicki. Skrót ścieżki kariery: w 2010 roku frontend programmer w Redefine, później webdeveloper w K2 Internet S.A., Mobile Apps Programmer w Agorze, CTO w Kekemeke i TechLeader w GogoApps. W branży siedzi od 2007 roku. Z reguły porusza się w technologiach webowych (JavaScript).