Bardzo się cieszę, że możemy porozmawiać. W pierwszej kolejności chciałem zapytać, jak to się stało, że znalazłeś się we FreshMailu, jaką rolę pełniłeś pierwotnie, a jak wygląda dziś Twoja rola?
Na wstępie chciałem bardzo podziękować za zaproszenie. Bardzo miło jest mi podzielić się swoim doświadczeniem i porozmawiać o kilku ciekawych aspektach pracy.
Do FreshMaila dołączyłem w kwietniu 2016 roku jako konsultant Big Data. Postawiono przede mną zadanie zbudowania nowoczesnej hurtowni danych do zbierania, przetwarzania i analizy danych tak, aby produkt mógł się lepiej skalować. Jednocześnie przy projekcie tego typu zarząd firmy liczył na możliwość stworzenia dodatkowych funkcjonalności.
Pracując z zespołem, miałem okazję obserwować go zarówno z zewnątrz, jak i od wewnątrz. Zaproponowałem kilka dodatkowych procesów, narzędzi i rozwiązań. Było to bardzo dobrze przyjęte przez sam zespół, jak i zarząd. Pod koniec roku zarząd zaproponował mi objęcie stanowiska CTO, które oficjalnie objąłem 1 stycznia tego roku.
CTO to bardzo ciekawe połączenie bardzo różnych aspektów miękkich oraz twardych w szeroko pojętym IT. Łączy się to równocześnie z wielką odpowiedzialnością – za cały produkt, a co za tym idzie – w firmie IT – za całą firmę i wszystkie osoby w niej pracujące.
Moją rolą jest zbudowanie kompetencji technologicznych, za które odpowiadam z ramienia zarządu. Zarówno w obszarze strategii rozwoju produktu, jak i budowania zespołu za tenże produkt odpowiadający. Na co dzień to bycie liderem, wspomaganie osób, z którymi pracuję oraz rozwijanie kultury pracy.
Z perspektywy programisty objęcie stanowiska CTO nie jest łatwe. Wiąże się to niestety z całkowitym zrezygnowaniem z programistycznych ambicji. Mógłbym „zakodzić” pewne aspekty systemu samemu lub z wybranym zespołem. Uważam jednak, że warto poczekać, aż cały zespół rozwinie swoje umiejętności w danym kierunku. Dzięki temu będzie mógł zbudować dane rozwiązanie samemu. I należy zawsze zrobić co w naszej mocy, aby usunąć się w cień, a zespołowi dać wszystko, aby doszedł do miejsca, które widzi się w swojej wizji. Dalej zostaje już obserwacja, przykręcanie śrubek w odpowiednich miejscach i ciągłe inspirowanie ludzi do dalszego rozwoju. Staram się widzieć członków naszego zespołu, gdzie będą swoimi umiejętnościami za 6-12 miesięcy i robić wszystko, aby tam właśnie dotarli.
Aspektem często zapominanym, myśląc o stanowisku CTO, jest aspekt biznesowy. To całkiem inna strona tej roli. Ta część mojej pracy jest często bardzo nietypowa dla osób związanych z programowaniem – wymaga udziału w licznych spotkaniach, gdzie reprezentuję całą technologię w firmie IT. Muszę dobierać partnerów i kontrahentów dla firmy, doradzać zarządowi, spędzać godziny na negocjacjach i rozmowach biznesowych, pomagać rozwijać procesy w firmie itd. To również niesamowicie ciekawa perspektywa – aby móc wykonać swoją pracę muszę świetnie rozumieć domenę, w której się poruszam, nad czym pracuję od wielu miesięcy.
Zarządzasz pracą developerów, ile osób jest w zespole developerskim?
Jeżeli mówimy o samych programistach, to jest to ponad 15 osób, natomiast zespół IT to także administratorzy systemów i serwerów, testerzy, product owner, scrum master oraz kilku specjalistów związanych z tematami wynikającymi ze specyfiki branży.
Przy zarządzaniu programistami, rozwoju technologii, jakie czynniki są według Ciebie kluczowe, aby rozwijać produkt?
Z mojego osobistego doświadczenia jest to przede wszystkim zbudowanie odpowiedniej kultury pracy, gdzie panuje otwarta komunikacja nastawiona na współdzielenie wiedzy.
Można to też wytłumaczyć na takim przykładzie. Wyobraźmy sobie zespół dziesiątek specjalistów projektujących nowy samochód. Oczywistym będzie to, że będą w nim osoby, które np. umieją projektować elementy silnika, układ napędowy itd. Czy możemy dobrze zaplanować hamulce, nie znając typu lub parametrów pojazdu? Czy ma on dwie, a może trzy osie? Czy ma napęd na cztery koła i jest samochodem terenowym, czy jest demonem prędkości i ma napęd na tylną oś? Czy ma 90, czy 500 koni mechanicznych?
Podobnie jest w przypadku budowy produktów IT – aby móc zbudować rozbudowany produkt w wielkiej skali, musimy zrozumieć szereg jego aspektów. Naszą odpowiedzialnością jest to, aby zespół rozumiał motywację użytkownika. Jako programiści musimy nauczyć się rozmawiać z „biznesem” jego językiem. To kolejne ciekawe zagadnienie – tu przychodzą nam z pomocą różne techniki (np. Domain Driven Development). Natomiast bardzo ważne dla nas jest rozwijanie umiejętności miękkich, rozmowy i słuchania, a także odpowiednie zbieranie wymagań i modelowanie systemu.
Mówi się o tym, że na rynku IT brakuje dziesiątek tysięcy programistów (mowa o samej Polsce), czy Wy jako FreshMail, odczuwacie „ból” z tego tytułu? Czy widzicie, że w Krakowie o tych samych developerów rywalizujecie z różnymi podmiotami, a przypomnijmy, że przecież w Krakowie jest dużo centrów outsourcingowych.
Tak, zdecydowanie. FreshMail jest dość nietypową firmą – osiągnął swoją skalę i sukces tylko dzięki bardzo ciężkiej pracy swoich pracowników i założycieli. Nie posiada żadnego inwestora ani wsparcia zewnętrznego. Środki na rozwój pozyskuje tylko i wyłącznie z własnych źródeł.
Ma to dwie strony – z jednej strony musimy konkurować finansowo z wieloma firmami, często przegrywając o pracowników. Szczególnie z takimi, które przychodzą do naszego kraju z pobudek głównie finansowych i ofiarują pracownikom ogromne stawki, jak na warunki krajowe. Z drugiej strony, firma jednak jest w rękach zarządu i osób ją budujących. Dzięki temu nie mamy osób lub procesów, które nas hamują, a kultura pracy jest wypracowana przez nas samych i każdy członek zespołu może mieć na nią wpływ.
Co robimy, aby być konkurencyjnym? Inwestujemy bardzo w nasz zespół, kulturę pracy, możliwość wpływu na produkt, rozwój osobisty, możliwości pracy przy produkcie wielkiej skali w technologiach i z narzędziami, które sami wybierzemy.
Czy przypominasz sobie swoje początki, ile miałeś lat jak zacząłeś programować?
Tak, oczywiście. Miałem osiem lat, gdy napisałem swój pierwszy program – byłem zafascynowany biorytmami i przy pomocy podręczników do nauki programowania napisałem program wyliczający biorytm na dany dzień dla danej osoby. Napisałem go w BASICu na komputerze Sinclair ZX Spectrum. Później były kolejne języki i systemy operacyjne. Swój pierwszy prywatny komputer kupiłem w wieku 14 lat, gdy zarobiłem pierwsze pieniądze. Był to 486 SX IBM-a. Od tego wieku pracuję nieprzerwanie w branży.
Programowanie – jakie cechy pomagają osiągać sukces w tej dziedzinie życia?
W skrócie mogę odpowiedzieć: ciekawość, nieustanna chęć rozwoju i pasja. To ciekawa dziedzina – z jednej strony technologia pędzi do przodu.
Każdego miesiąca wypuszczane są nowe języki programowania, frameworki, narzędzia, technologie, praktyki. I musimy umieć właściwie dobierać je do naszych projektów. Tu wymagana jest chęć nieustannego rozwoju i ogromnej pracy włożonej w uczenie się. Nie raz byłem świadkiem, gdy początkująca osoba w 2-3 lata stawała się doświadczonym programistą. Należy jednak pamiętać, że w naszym zawodzie w tym samym czasie można się bardzo cofnąć w swoim rozwoju.
Z drugiej strony – wiele aspektów, pomimo upływu czasu, prawie w ogóle się nie starzeje. Doszedłem do takich wniosków, wracając do niektórych klasycznych pozycji książkowych i konceptów w nich zawartych (np. The Pragmatic Programmer, Design Patterns Gangu Czworga, Clean Code, Refactoring Fowlera itd.). Okazuje się, że czytając tę samą książkę po 10 latach, odkrywamy ją na nowo.
Bardzo polecam pielęgnować ciekawość. Zawsze pytać „dlaczego?”. Dążyć do zrozumienia co budujesz, dlaczego i dla kogo. Zawsze podważać status quo oraz nigdy nie uważać, że na naszej drodze osiągnęliśmy wszystko. Nie wpadać w pułapkę myślenia, że technologia, której używamy jest najlepsza, a kod, który właśnie napisaliśmy jest idealny. Mierzyć, sprawdzać, zaglądać pod dywan, modelować zanim zaczniemy programować, rozmawiać zanim zanim zaczniemy modelować. Warto zobaczyć ten pełen obraz swojego systemu.
Nikt nie ma gotowych odpowiedzi ani schematów dla naszych wyzwań, a rozwiązania wyjdą spod naszych palców. Warto więc robić wszystko, by były jak najlepsze.
Jakie funkcje w Waszym narzędziu, sprawiły Ci największy kłopot we wdrożeniu?
Jestem członkiem zespołu FreshMaila dopiero od nieco ponad roku. Za cały aspekt technologii firmy odpowiadam dopiero od kilku miesięcy, więc cały czas się uczę co dokładnie jest pod maską. Produkt tej wielkości to bardzo rozbudowany system, oparty o dziesiątkach dziesiątki modułów. Wiele z nich posiada bardzo skomplikowaną logikę i wymagane jest wiele czasu, aby zrozumieć cały zakres ich odpowiedzialności.
Właśnie zakończyliśmy z zespołem nasz pierwszy duży wspólny projekt. Polegał na migracji całej infrastruktury na nową platformę rozmieszczoną w kilku centrach danych. Planując ją, braliśmy pod uwagę przyszłą skalę, technologie i wymogi bezpieczeństwa. Bardzo dziękuję całemu zespołowi za ogromne zaangażowanie przy tym projekcie!
Aktualnie najciekawszym i prawdopodobnie największym dla mnie wyzwaniem jest stworzenie rozwiązań do obrony przed atakami nadużywającymi nasz system (anti-abuse – np. spam, scam, phishing itd.). Wiedza domenowa z tego zakresu jest olbrzymia i im bardziej zagłębiam się w szczegóły, tym bardziej okazuje się ona skomplikowana. Innym aspektem jest skala – przy tak dużym produkcie należy zastosować całkiem inne rozwiązania, więc przy okazji przebudowujemy kilka elementów silnika przy użyciu odpowiednich technologii do obróbki takiej ilości danych.
FreshMail to dziś firma, która skaluje swoje działania poza Polskę. Nie macie kompleksów przed innymi rozwiązaniami, ale powiedź czy technologicznie coś się zmieniło, odkąd zdecydowaliście się „wychodzimy poza Polskę”. Czy wdrożenie rozwiązania SaaS-owego w innym, niż rodzimy kraju od strony technologicznej różni się czymś?
Tak, i to bardzo. Po pierwsze – to często inne aspekty prawne. FreshMail jest operatorem danych osobowych. Nakłada to na nas bardzo dużą ilość regulacji, w tym niektóre bardzo restrykcyjne (np. RODO/GDPR). Wychodząc poza nasz kraj oraz granicę Unii Europejskiej musimy brać pod uwagę całkiem inne wymogi.
Innym wyzwaniem jest przygotowanie produktu do wyzwań i wymogów dojrzałego produktu IT. Pracowałem przez wiele lat z wielkimi korporacjami, które podchodzą bardzo restrykcyjnie do wielu aspektów produktów SaaS. Zdarzało mi się w swojej pracy wypełniać bardzo skrupulatne protokoły Compliance rozpisane na kilkadziesiąt stron. Pytania mogły dotyczyć wielu wymiarów bezpieczeństwa (np. dokładną listę pracowników mających dostęp do danych) po bardzo szczegółową procedurę disaster & recovery. Wraz z zespołem bardzo skupiamy się na przygotowaniu naszego produktu, narzędzi i procesów, dla tego typu wymagających klientów.
Przyznam, że od początku roku praktycznie „prześwietliliśmy” produkt. Przeczytaliśmy dosłownie linijka po linijce najważniejsze moduły systemu, mapując ich zależności, schemat działania, wpływ na system itd. Podjęliśmy kilka ważnych decyzji, w wyniku których praktycznie rzecz biorąc, przebudowujemy wiele silników systemu. Przygotowujemy go do innej skali, prędkości i szerokiego wachlarza nowych funkcjonalności. Jak wspomniałem wcześniej, jednym z najważniejszych projektów dla nas jest zbudowanie rozwiązania broniącego nasz system przed wszelkimi nadużyciami.
Pracowałeś dla kilku wielkich firm, co jest największym wyzwaniem dla CTO czy dla każdego programisty, przy pracy na „dużych projektach”?
Może odpowiem na to pytanie z trochę innej perspektywy.
Mogę przyznać, że miałem przywilej pracować przy projektach dla kilku korporacji – The Coca-Cola Company, Heineken, Adidas, BT, Macy’s, Saks 5th Avenue, Polo Ralph Lauren i kilku innych. Współpracowałem z nimi przy okazji budowy produktu do integracji i analizy danych z różnych źródeł. Największym wyzwaniem było bardzo dokładne zrozumienie i wypracowanie wspólnego języka (wewnątrz danej firmy!) tak, aby można było skorzystać z podejścia data-driven organizations.
To jest niesamowite zagadnienie – w XXI wieku, gdzie na co dzień jesteśmy bombardowani informacjami, wiele organizacji w dalszym ciągu zmaga się z wyzwaniami pracy z danymi. Będąc osobą, która ma wpływ na decyzje w firmie, należy sobie odpowiedzieć na kilka pytań:
– Czy mam produkt oparty o dane? Podpowiedź: a który nie jest? 🙂
– Czy uważamy, że mamy dobre dane?
– Czy wiemy, gdzie są nasze dane?
– Czy możemy się łatwo do nich dostać i z nich korzystać?
Z mojego doświadczenia wynika, że większość firm będzie miała wielki problem z odpowiedzią na większość z tych pytań lub odpowiedź będzie szczątkowa. Kultura pracy z danymi wymaga zebrania ogromnej ilości faktów, analizowania ich oraz wyciągania z nich wniosków. Część techniczna to tylko jeden z aspektów tego zagadnienia, znaczna część dotyczy głębokiej kultury pracy – otwartej komunikacji, wspólnego języka, definicji zagadnień domenowych. Musimy również pogodzić się z tym, że fakty i dane zmienią nasze wyobrażenie o systemie, jego skali oraz o tym, jak nasi klienci z niego korzystają. Może to zatrząść niejedną firmą. Ale to także umiejętność pracy w kulturze eksperymentu. Należy przyłożyć do tego ogromną wagę i inwestować wszelkie możliwe środki w tym kierunku.
Nie bez przyczyny wiele firm, które wdrożyły taką kulturę na co dzień osiągają największe sukcesy. Są w stanie szybciej i lepiej obserwować otaczający je świat oraz szybciej do niego dostosowywać. Mogą też szybciej testować nowe koncepcje, popełniając przy tym oczywiście błędy – ale często znacznie prędzej niż konkurencja, co daje im znaczną przewagę.
W związku z tym życzę Wam pracy w tego typu projektach, dającym Wam wiele wyzwań. W zespołach, które z otwartością i chęcią nauki podchodzą do wielu problemów. Życzę Wam skali, która wymaga liczenia, testowania i eksperymentowania. Te projekty dają nam największą satysfakcję.
Wywiad powstał dzięki:
CONNECTIS_
+48 22 222 5000
office.pl@connectis.pl
Złota 59
00-120 Warszawa
CONNECTIS_ jest spółką technologiczną świadczącą usługi z zakresu outsourcingu specjalistów, zespołów projektowych oraz procesów IT.
CONNECTIS_ łączy wyjątkowe doświadczenie, kompleksową znajomość branży oraz kompetencje specjalistów z klientami, aby pomóc im usprawniać projekty informatyczne i zwiększać wydajność procesów biznesowych.
Współpracujemy na szeroką skalę z liderami branżowymi w całej Europie z sektora m.in. finansowego, IT, konsultingowego, ubezpieczeniowego, energetycznego oraz telekomunikacyjnego. Codziennie wspieramy ich ponad 350 specjalistami w strategicznych projektach informatycznych.
Coders Lab
Łącząc doświadczenie edukacyjne ze znajomością rynku pracy IT, Coders Lab umożliwia szybkie i efektywne zdobycie pożądanych kompetencji związanych z nowymi technologiami. Skupia się się na przekazywaniu praktycznych umiejętności, które w pierwszej kolejności są przydatne u pracodawców.
Wszystkie kursy odbywają się na bazie autorskich materiałów, takich samych niezależnie od miejsca kursu. Dzięki dbałości o jakość kursów oraz uczestnictwie w programie Career Lab, 82% z absolwentów znajduje zatrudnienie w nowym zawodzie w ciągu 3 miesięcy od zakończenia kursu.
Zostaw komentarz