CTO w software housie. Jak powinno wyglądać to stanowisko?
CTO (Chief Technology Officer), czyli po polsku szef technologii. Czy to oznacza, że stanowisko polega na zarządaniu technologią? Nie do końca. Już samo stwierdzenie ‘zarządzanie technologią’ nie jest zbyt precyzyjne. Dodatkowo osoba na tej pozycji w zależności od firmy ma zazwyczaj całkiem różne obowiązki. Różnice wynikają nie tylko z rozmiaru czy rodzaju organizacji, ale również z jej aktualnego zapotrzebowania i struktury.
Kuba Wilczek. Ruby on Rails Developer, od niedawna CTO w krakowskim software house Nopio. Interesuje się również Blockchainem, zdarzyło mu się też w przeszłości pisać w Javie i C++. Jego hobby jest triathlon – w wolnym czasie biega, pływa lub jeździ na rowerze.
Spis treści
Chief Technology Officer w software housie
W tym artykule chciałbym przedstawić kilka podstawowych zadań, które należą do CTO, skupiając się głównie na pracy w software house’ach. W małych firmach, gdzie ilość pracowników jest ograniczona, CTO często wykonuje obowiązki tech leada, DevOpsa, organizuje sprzęt do pracy, a nawet programuje. Nie do końca jest to praca, którą powinien wykonywać, jednak czasami musi dostosować się do sytuacji w swoim otoczeniu.
Jak widać, zazwyczaj to firma definiuje, kim jest dla niej CTO i jaką funkcję będzie pełnił, a nie odgórnie narzucone normy. Warto jednak pamiętać, że zbyt dużo obowiązków nałożonych na jedną osobę może powodować, że nie będziemy czerpać prawdziwych korzyści z tego stanowiska.
Główne zadania szefa technologii
Każda firma składa się z różnych działów: marketingu, zarządzania zasobami ludzkimi czy technologii. Na czele każdej z tych części stoi jedna, odpowiedzialna za nią osoba. Zadaniem CTO jest zarządzanie technologią. To on odbiera informacje od developerów, project managerów, tech leadów, DevOpsów, architektów i innych związanych z technologią ludzi, przetwarza je, zatwierdza i konsultuje. Ustala wspólne cele i drogę rozwoju oraz jaki kierunek technologiczny powinna objąć firma, następnie przekazuje ‘w dół’ struktury swoje decyzje skonsultowane zarówno z osobami technicznymi, jak i z CEO oraz innymi działami firmy.
Skoncentrujmy się teraz na tym, co powinno być głównym zadaniem CTO.
Zarządzanie i podejmowanie decyzji
Pracą CTO jest zarządzanie i podejmowanie decyzji. Jest to oczywiście duże uproszczenie, ale wszystkie zadania sprowadzają się głównie do tych dwóch czynności.
CTO powinien decydować nie tylko opierając się na własnym doświadczeniu, ale także konsultować swoje przemyślenia z osobami, które mają na ten temat odpowiednią wiedzę, lub zlecać pracownikom poznanie tematu (zarządzanie). Ostatecznie jednak decydujący głos należy zawsze do niego (podejmowanie decyzji).
W większych firmach – szczególnie tych, które tworzą własny produkt – wiele decyzji jest delegowanych do osób bliżej związanych z daną dziedziną: np. architektów, jeśli jest to decyzja związana stricte z zaprojektowaniem elementów aplikacji.
W tym przypadku delegowanie zadania jest formą zarządzania. W software house’ach (szczególnie tych mniejszych), nie ma tak zorganizowanej struktury i CTO może również podejmować ważne decyzje projektowe.
Nie oznacza to jednak, że z każdym błahym problemem powinniśmy iść od razu do niego. Jeżeli natomiast jakaś sprawa jest bardziej złożona i może wpływać na politykę technologiczną firmy, warto skonsultować ją z CTO.
Wbrew pozorom wcale nie dlatego, że ma on większą wiedzę technologiczną (bo najpewniej nie ma), ale dlatego, że ma duże doświadczenie (pracował przy wielu projektach) i przede wszystkim ma szerszy obraz firmy, który pozwoli mu określić czy wybór programistów nie będzie wiązał się z niepożądanymi skutkami w pracy innych zespołów lub w polityce pracy firmy. Dodatkowo wszystkie decyzje, które mogłyby się wiązać z kwestiami finansowymi trafiają do CTO, który zarządza budżetem przeznaczonym na technologie.
Proces developmentu
Jednym z najważniejszych aspektów, którymi zajmuje się CTO, jest proces developmentu — od momentu precyzowania zadań przez klienta aż po dostarczenie gotowego produktu. Kolejne etapy: tworzenie kodu, testowanie i deployment są odpowiedzialnością CTO i to on nadzoruje cały proces, aby przebiegał możliwie gładko i bezproblemowo.
Wszystkie decyzje CTO powinny sprawić, że produkt zostanie ukończony możliwie szybko przy jak najlepszej jakości rozwiązania. Dlatego powinien dbać zarówno o ludzi pracujących przy tym procesie, jak i również o odpowiedni dobór narzędzi wspomagających development. Dodatkowo, poza planowaniem procesu, powinien na bieżąco monitorować czy projekt zmierza w odpowiednim kierunku.
Dodatkowe obowiązki CTO
Jak wspomniałem we wstępie, często praca CTO w mniejszych firmach i software housach jest nieco odmienna od tej, którą możemy zaobserwować w korporacjach.
Wynika to głównie z mniej granularnej struktury firmy lub brakach w zasobach ludzkich. O ile pozycja CTO jest bardziej pozycją managerską, to w tych przypadkach może ona być bardziej technologiczna, tzn. bardziej związana z pozycją tech leada.
Wówczas wybiera się na tą pozycję osobę z większym doświadczeniem, aby w razie potrzeby była w stanie zająć się obsługą serwerów lub programowaniem. Jeśli faktycznie jest związana z technologią z poziomu praktycznego, warto aby brała udział w dyskusjach architektonicznych, choć oczywiście – jak już wspominałem wcześniej – wszystko zależy od skali problemu.
Podsumujmy, kiedy warto zatrudnić CTO?
Dopasowanie roli CTO do odpowiedniej sytuacji firmy wymaga czasu. Każdy przypadek jest indywidualny, dlatego warto wcześniej zdefiniować jakie dokładnie działania powinna wykonywać ta osoba. Pamiętajmy jednak, że zarzucenie CTO zbyt wieloma obowiązkami sprawia, że staje się niewydajny i zamiast przynosić korzyści, jego rola staje się tylko pustą nazwą.
Jeśli jako firma zastanawiacie się czy warto wprowadzić stanowisko CTO, odpowiadam: oczywiście! Osoba, która ma szerszy obraz na technologie w firmie z pewnością usprawni pracę w zespole. Ponadto w niczyim interesie nie jest, żeby obowiązki związane z technologią wisiały na głowie CEO, który powinien koncentrować się na rozwoju firmy jako całości.
Dlatego w dłuższym okresie, przy odpowiednio zdefiniowanym zakresie obowiązków i proaktywnym, elastycznym podejściu CTO jest w stanie przynieść firmie wymierne korzyści.
Proponowana lektura dla przyszłych i obecnych CTO
Jeśli jako programista, manager, architekt czy inna osoba związana z technologią zastanawiasz się jak przygotować się do bycia CTO, albo już nim zostałeś i chciałbyś jak najlepiej wykonywać swoją pracę polecam Ci książkę, które zaznajomi Cię z zarządzaniem technologią w firmie: ”The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win” Kima Gene’a oraz książkę, która analizuje proces developmentu i dostarczania oprogramowania: “Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation” Jez’a Humble i Davida Farley’a.
Zdjęcie główne artykułu pochodzi z stocksnap.io.
Kuba był współprowadzącym livestreamu z Michałem Francem — developerem, architektem i liderem z 10-cio letnim stażem, obecnie pracującym w JustEat. Serię livestreamów z polskimi programistami na świecie prowadzi Piotr Nowosielski. Odcinek, w którym pytania zadawał także Kuba Wilczek obejrzycie poniżej.