CTO buduje startup, nie produkt. Michał Thoma o tym, jak powstają startupy
Co należy brać pod uwagę, planując system dla nowego startupu? Czym różni się praca dla venture buildera od pracy w software house? Jakie nowinki przykuwają uwagę technologicznych trendsetterów? Wieloletni CTO warszawskiej fabryki startupów Daftcode, Michał Thoma, zdradza kulisy budowania nowych spółek technologicznych i nie tylko.
Spis treści
Jak od strony technologicznej wygląda proces powstawania startupów w Daftcode?
Zaczynamy od warsztatów, na których staramy się uszczegółowić wymagania nowego systemu, a następnie w oparciu o dotychczasowe doświadczenia dobrać odpowiedni stos. Mamy już wprawę w projektowaniu, implementacji i utrzymaniu systemów o różnej architekturze – jest to, moim zdaniem, kluczowy czynnik sukcesu w doborze technologii przy uruchamianiu nowego startupu.
Trzeba też pamiętać, że sukces w doborze stosu i architektury można oceniać dopiero z perspektywy czasu oraz w miarę przyrostu obciążenia oraz rozrostu zespołu odpowiedzialnego za utrzymanie systemu. To nie jest łatwe zadanie i nie można podchodzić do niego „z szablonu”. Utarte szlaki na nic tu się zdadzą.
Czyli nawet lata doświadczenia w budowaniu startupów nie dają gotowych rozwiązań i każdy startup musi się uczyć na własnych błędach?
Nie ma technologii uniwersalnie dobrych i wiecznie aktualnych. Staramy się być tech-agnostic, czyli bezstronni i otwarci. Korzystamy z technologii odpowiednich do rozwiązania konkretnego problemu w danym momencie. Ciągłe budowanie nowych startupów i produktów przynosi szereg wyzwań i nie da się ich okiełznać za pomocą jednej sprawdzonej formuły. Natomiast dzięki prawie 10-letniemu doświadczeniu, mieliśmy już do czynienia z wieloma scenariuszami. Takie doświadczenie pozwala nam przewidywać potencjalne trudności, których inni nie dostrzegają. Umiemy na samym starcie zaplanować dobrze skalujący się produkt: i biznesowo, i technologicznie.
Nie narzucamy nowym startupom z portfolio jedynej słusznej ścieżki, co do wyboru technologii, bo ta nie istnieje. Wiemy jednak jak zbudować optymalny system i nie porywamy się ani na zbyt wąskie, ani na zbyt elastyczne rozwiązania. Te pierwsze często nie wytrzymują próby czasu i rozrostu firmy, a te drugie niepotrzebnie przepalają budżety. Pracownicy startupów bardzo często mają silne przekonania o słuszności jednego rozwiązania. Idą w zaparte i nie dostrzegają potencjalnych problemów w rozwoju produktu.
W Daftcode mamy już za sobą wiele przedsięwzięć, a nasi deweloperzy i Team Leaderzy mają otwarte głowy. Przy decyzjach dotyczących technologii korzystają więc z tego, co już wypracowaliśmy i czego nauczyliśmy się o startupach. To pomaga zaoszczędzić czas i pieniądze oraz chroni przed błędami.
Masz jakąś złotą radę, o czym zawsze należy pamiętać przy stawianiu nowego systemu?
Trzeba go odpowiednio zaprojektować już w pierwszym dniu i mieć z tyłu głowy to, że w przyszłości startup może przejść np. pivot, co często wymusza znaczące zmiany na poziomie architektury i w konsekwencji rozwinięcia bądź przepisania części serwisów. Startupy z kilkuletnim doświadczeniem bardzo często mają spory problem z tak znaczącymi modyfikacjami aplikacji do nowego kształtu, bo liczba zaangażowanych osób, know-how czy architektura trzymają ich w sztywnych ramach.
A startupy muszą być zawsze w gotowości na zmianę wizji i kierunku, bo czasem warto zahaczyć o jakąś nową, intratną niszę i nieco zmienić profil firmy czy grupy docelowe. Zmiana biznesowa ciągnie za sobą zmiany w systemie i zdecydowanie ciężej jest je wdrożyć, kiedy startup ma zbyt skomplikowaną strukturę lub długi proces decyzyjny.
W jakich technologiach pracuje dziś Daftcode?
W kwestii środowisk utrzymujących systemy opieramy się głównie na rozwiązaniach cloud native, jednak tu też nie ma jednej recepty na sukces. Programistycznie nadal dość mocno osadzeni jesteśmy w świecie Pythona, starając się jednak aktualizować stos do najnowszych wersji i rozwiązań.
Jakie trendy aktualnie obserwujesz w świecie technologii?
Trendy, które obserwujemy i które aktualnie bierzemy w Daftcode za rogi, to m.in.: w jaki sposób efektywnie gromadzić i przetwarzać duże ilości danych. Mam tu na myśli stosunek kosztów utrzymania rozwiązania do szybkości przetwarzania przy zachowaniu odpowiednio dużej wielkości i aktualności danych. Obecnie wykorzystywane rozwiązania, przynajmniej z perspektywy mniejszych organizacji, są najczęściej bardzo drogie albo narzucają zbyt dużo ograniczeń.
Jest to szczególnie istotny temat z perspektywy startupów bądź produkcyjnych prototypów, gdzie danych nadal pojawia się bardzo dużo, jednak budżet jest ograniczony. Popularna praktyka na rynku polega na przenoszeniu kosztów zagadnień big data na klienta, tym bardziej zawężając przypadki użycia. W Daftcode chcielibyśmy wypracować rozwiązanie, pozwalające odejść od tej zależności.
Poza tym bacznie obserwujemy niekończący się proces rozwoju narzędzi służących do automatyzacji coraz to bardziej skomplikowanych procesów wytwarzania i utrzymania systemów. W szczególności ciekawym zagadnieniem jest upraszczanie tych narzędzi i rozwiązań w taki sposób, aby pokrywały tyle samo bądź nawet więcej przypadków przy jednoczesnym zmniejszeniu nakładu prac na ich konfigurację i utrzymanie. Techniki szeroko pojętego uczenia maszynowego mają tu duże pole do działania, wiele obecnie manualnie zarządzanych usług stanie się w większej części autonomiczna.
Jednocześnie rola DevOps będzie podlegać transformacji. Moim zdaniem osoby na tym stanowisku będą musiały bardziej osadzić się w kontekście biznesowym. Wraz z rozwojem autonomicznych narzędzi oraz rozwiązań z kategorii NoOps ich obowiązki zaczną się przesuwać w stronę wyszukiwania i dostarczania wartości biznesowej. Jest to kierunek, na który musimy być i będziemy przygotowani.
Co jeszcze jest w obszarze Waszych zainteresowań?
Przedmiotem naszych prac R&D jest też na przykład wykorzystanie podejścia autonomicznej automatyzacji – semi jak i pełnej – do zagadnień z szeroko pojętego tematu bezpieczeństwa systemów informatycznych. Jest to wartościowy strumień prac w kontekście zderzenia klasycznego podejścia do bezpieczeństwa ze zmieniającym się modelem budowania i utrzymywania serwisów.
Oczywiście przewijają się u nas także inne tematy, takie jak multicloud, nocode itp. Staramy się je w miarę możliwości eksplorować przy okazji wykonywanych prac, w zależności od potencjału eksploracja zmienia się w dedykowany nurt prac. Trzeba jednak pamiętać o zdrowym rozsądku, mało jaka organizacja jest w stanie sobie pozwolić na duży pion badawczo-rozwojowy.
W startupach wyzwania technologiczne często przekształcają się w wyzwania procesowe. Jak radzicie sobie z tym w Daftcode?
To częsty przypadek wśród spółek technologicznych. Wyzwaniem jest nie tylko skalowanie samego systemu, ale i całej firmy, organizacji, która potrafi rosnąć i utrzymywać kompetencje i cały czas sprawnie działa. Żeby to osiągać, w Daftcode dążymy do tego, żeby każdy z deweloperów miał poczucie odpowiedzialności za budowany startup. Samo terminowe stawianie serwisów wysokiej jakości to raczej domena software house’ów. U nas, czyli w venture buildingu, deweloperzy nie mają klientów i projektów do oddania, oni rzeczywiście tworzą startup i rosną razem z nim.
Czy praca w takim modelu wymaga jakichś szczególnych zdolności i cech?
Oczywiście ważna jest wiedza teoretyczna i jak najbardziej bieżąca, ale równie ważne jest doświadczenie osoby zarządzającej technologią nowego startupu. Sporo ludzi skacze od projektu do projektu i z firmy do firmy. W efekcie rzadko kto ma obycie ze skalowaniem projektu takiego jak np. platforma do rezerwacji czy sprzedaży. Tylko osoba, która miała okazję obserwować rosnące liczby zapytań do obsłużenia, zmieniające się liczby użytkowników, rosnące wymagania, coraz większą złożoność produktu, migracje czy rozwój zespołu deweloperskiego – ma szanse przewidzieć przyszłe koszty utrzymania takiego systemu. A skoro umie prognozować, umie też postawić kolejny system, tym razem w optymalnej konfiguracji.
Obserwowanie cyklu życia i rozwoju startupu pozwala lepiej zrozumieć, jak działa system, przewidywać i nie popełniać ponownie tych samych błędów. Taką wiedzę daje długi dystans czasu. Na szczęście w świecie nowych technologii “długi” to kilka lat, nie kilkadziesiąt.
Jak wygląda rekrutacja przyszłych CTO dla spółek Daftcode?
Każda nasza rekrutacja jest bardzo specyficzna. Trzeba pamiętać, że CTO do startupu to zupełnie inny profil osoby niż CTO do ugruntowanego produktu z rozwiniętą warstwą systemową.
Jakie kompetencje u kandydatów na CTO cenisz najbardziej?
Stawiam na dyplomatów, bo umiejętności miękkie stają się bardzo ważne wraz z rozrostem organizacji, a to czeka wszystkie startupy. Nie mam nic przeciwko posiadaniu silnych przekonań i mocnych charakterów – tak długo jak osoba jest w stanie przyjąć czyjąś argumentację i obiektywnie porównać ją ze swoim stanowiskiem. Inaczej mówiąc, liczy się otwarta głowa.
Niezbędne oczywiście są też rozległa wiedza technologiczna oraz praktyczne doświadczenie. Bardzo cenię u kandydatów samodzielnie projekty, nawet te garażowe, bo potrafią być najlepszym paliwem w rozwoju człowieka. To się bardzo liczy przy wszystkich świeżych przedsięwzięciach, gdzie CTO często aktywnie bierze udział w wytwarzaniu rozwiązania od zera. Patrząc na profile kandydatów, zawsze doceniam tych z długoletnim doświadczeniem z jednym produktem, a kariera skoczka to dla mnie znak ostrzegawczy.
Ważne jest też, żeby naszym deweloperom chciało się tak samo jak CTO, żeby sami wychodzili z inicjatywą. Osoba na stanowisku CTO musi więc mieć odpowiednią charyzmę i umiejętność zarażania swoją wizją.
Jak wygląda organizacja pracy zespołów deweloperskich w Daftcode?
Zespoły w Daftcode są autonomiczne i każdy jego członek ma dużą swobodę działania. W startupach nie tworzymy systemu korporacyjnego, typowej drabiny odpowiedzialności i wieloetapowego procesu decyzyjnego.
Naszym pracownikom i Team Leaderom powierzamy dużą odpowiedzialność, swobodę i decyzyjność, bo chcemy szybko tworzyć i testować MVP, a kiedy testy przejdą pomyślnie – sprawnie budować produkt i biznes. Myślę, że udało nam się wypracować złoty środek pomiędzy samoorganizacją zespołów a system wsparcia dla nich. Bo Daftcode wspiera swoje startupy na każdym etapie i w razie potrzeby pomaga im uporządkować procesy.
Jak Ty trafiłeś do Daftcode?
Jestem w Daftcode od samego początku, razem z założycielami firmy. Przyciągnęła mnie możliwość realizowania całościowych projektów – od pomysłu przez wypuszczenie na rynek po skalowanie – i to za pomocą niszowych technologii, które w tamtym czasie mnie fascynowały. Oprócz tego spodobała mi się także możliwość doboru technologii według własnych preferencji i generalnie praca w nowych technologiach.
Jak wyglądały Twoje początki i rozwój?
Na początku mojej przygody to była głównie praca deweloperska: tworzyliśmy różnej skali rozwiązania w taki sposób, aby bardzo szybko dostarczać wartość biznesową bądź walidować koncepcje, jednocześnie nie angażując znaczących środków. Rozwiązywaliśmy problemy szybciej lepiej i wydajniej niż ówczesne standardy i to bardzo mnie motywowało.
Wykorzystywaliśmy też Pythona w znacznie szerszym zakresie niż miało to miejsce na polskim rynku. W tamtym czasie znany był u nas właściwie tylko z Django oraz skryptów z szuflady SysAdmina. Byłem przekonany, że jesteśmy w stanie z jego pomocą tworzyć rozbudowane systemy – bez sięgania do ekosystemu Javy, C++ czy rosnącego wtedy .NET i nie pomyliłem się. Ironicznie, kiedy akurat pojawiła się potrzeba wykorzystania rozbudowanego web frameworka, sięgnąłem po Ruby on Rails.
Z czasem zaczęły pojawiać się kolejne języki, nowe usługi i narzędzia, rozwiązujące specyficzne problemy. W końcu zakres moich obowiązków zaczął się rozszerzać o te typowe dla CTO. Pisanie linijek kodu zastąpiła większa odpowiedzialność za ludzi, za procesy, migracje i decyzje technologiczne, a nawet za relacje z inwestorami.
Czy ścieżka rozwoju innych CTO z Grupy Daftcode wygląda podobnie?
To naturalne, że startupy się rozwijają, więc wiele osób technicznych czeka stopniowa ewolucja roli, często w kierunku zarządzania. CTOs zatrudnieni do naszych spółek pozostają pod parasolem Grupy Daftcode, więc mają opiekę merytoryczną i techniczną na wysokim poziomie, w tym wsparcie CTOs z innych startupów i moje. Nie są zdani sami na siebie i nie muszą działać po omacku.
Michał Thoma. CTO w Daftcode. Pasjonat nowych technologii, zwolennik otwartego oprogramowania, geek i członek zarządu warszawskiego studia startupów Daftcode, gdzie odpowiada za obszar techniczny tworzenia nowych przedsięwzięć biznesowych. Buduje zespoły techniczne, a także doradza w zakresie wyboru technologii oraz optymalizacji procesów. Wielokrotnie miał okazję projektować i realizować systemy o różnej skali. Jego oczkiem w głowie jest optymalne rozwiązywanie realnych problemów za pomocą sprytnie wykorzystanej technologii. Absolwent PJATK na kierunku Programowanie Gier i Programowanie Aplikacji Biznesowych.