Jesteś programistą i chcesz założyć swój “startup” lub dołączyć do jednego z nich – dowiesz się poniżej, nad jakimi cechami pracować, prowadzisz początkujący biznes – przeczytaj, jakich cech szukać w zatrudnianych osobach.
“Startup” – nie lubię tego słowa, jest ono nadużywane, wyświechtane a wręcz powoli kojarzone z różnymi nadużyciami, zresztą nigdy tego nie ukrywałem. Pozwolę zacytować samego siebie: Powinniśmy robić biznes, a nie start-upy. No ale jakoś na użytek tego artykułu, taki początkujący biznes trzeba nazwać – więc przyjmijmy na tą chwilę definicję, że “Startup” to po prostu młody, rozwijający się dopiero biznes, a nie goście z 4 slajdami w PowerPoint szukający 5 mln zł za “pomysł”.
“Startup’ów” mamy wiele, lecz aktualnie kojarzone są głównie z technologią, co jest bardzo wąskim spojrzeniem, w końcu grupa młodych ludzi sprzedających koszulki z fajnymi, autorskimi nadrukami to “startup”, dziewczyny robiące ręcznie biżuterię i sprzedające ją najpierw znajomym, potem w internecie to “startup”. Powiem więcej – to często poważniejszy biznes niż kolejny pomysł na nikomu niepotrzebną aplikację mobilną. W tym jednak artykule poruszę tematykę “startupu” technologicznego – te obecnie przeżywają ogromny bum i rodzą się jak grzyby na deszczu.
Taki “startup” z branży tech prędzej czy później będzie potrzebował programistów (lub innych specjalistów IT), na początek jednego, dwóch, może trzech. Potem kolejnych. Potrzeba ta może zrodzić się już na samym początku, gdy żaden z founder’ów (founder – kolejny buzzword – osoba, która decyduje się rozpocząć działalność biznesową) nie jest akurat programistą, lub nieco później, gdy pierwsze linie kodu można napisać własnoręcznie lub może to zrobić któryś z wspólników.
Tak czy inaczej, prędzej czy później, programistę “startup” zatrudnić będzie potrzebował. Zatrudnić go będzie musiał w wyjątkowo trudnych warunkach jak na młody, dopiero co rozwijający się biznes. Po pierwsze dlatego, że musi liczyć każdą złotówkę, nawet jeżeli akurat uzyskał wymarzoną rundę o zawrotnej sumie bambilionów PLN – nadal musi liczyć każdą złotówkę, jak tak nie robi – popełnia błąd – ale to temat na osobny artykuł. Po drugie – nie stać go na pomyłkę, zatrudnienie nieodpowiednich programistów we wczesnej fazie projektu może go po prostu rozłożyć na łopatki i finansowo i technologicznie. Po trzecie taki “startup” znajduje się w otoczeniu ogromnej konkurencji z wszechobecnych BPO pompujących ogromne pieniądze w rynek IT i windujących stawki do poziomów graniczących z bańką płacową w obszarze technologii – a raczkujący biznes takich pieniędzy nie ma.
Jak więc zatrudniać programistów w startupie? Jakie cechy musi mieć taka osoba, by dobrze wpasowała się w specyfikę młodego, dynamicznego przedsiębiorstwa?
“Zrobić można wszystko, sprzedać tylko niektóre rzeczy”
Taką oto mądrość, którą zapamiętam na całe życie głosił CEO z jednego z irlandzkich “startupów” dla którego pracowałem. Bardzo proste i dość oczywiste zdanie, jednak w aspekcie rekrutowania programistów ma ogromne znaczenie. Jedną z kluczowych cech programisty w startupie jest zrozumienie biznesu, zrozumienie na wielu płaszczyznach. Pierwsza z nich to to, że praca, którą wykonuje ma cel biznesowy, że linie kodu, który pisze przekładają się na produkt, który ktoś musi sprzedać czyli w efekcie musi się znaleźć ktoś, kto go kupi. Druga to to, że biznes i jego produkt mają wymiar komercyjny i ich celem jest zarabianie pieniędzy – przynajmniej w 99% normalnych sytuacji.
Brzmi to dość oczywiście, lecz wcale nie jest tak łatwo takie osoby znaleźć, ścisły umysł często nie dostrzega od razu potrzeb biznesu, a sprzedaż jawi się jako jakaś czarna magia i praktyki graniczące z voodoo.
Zrozumienie biznesu jest kluczową cechą jakiej należy szukać u specjalistów z branży IT zatrudnianych na bardzo wczesnym etapie życia nowego biznesu. Z tej cechy wynika praktycznie większość dalszych, są one po prostu jej konsekwencją.
Pragmatyzm a nie perfekcjonizm
Częstą “chorobą” na jaką cierpią programiści jest perfekcjonizm. A jak mówi znane polskie przysłowie – „Lepsze jest wrogiem dobrego”. Osobiście znane mi są przypadki w których firma włożyła ogromne sumy pieniędzy w produkt i nie wystartowała z nim nigdy, gdyż ciągle był on “technologicznie dopieszczany”, ciągle “nie był gotowy”, permanentnie “był optymalizowany”.
Osobiście też znane są mi takie przypadki jak “stworzenie własnej bazy danych” dla produktu, gdyż, tu cytat “żadna nie jest na tyle doskonała by sprostać oczekiwaniom autora programu” tworzącego produkt – jak dziś pamiętam smak Guinnessa w Slattery’s gdzie świętowaliśmy usunięcie ostatniej jej linijki kodu, przeplatającego się z produktem (no bo jak inaczej mogło się to potoczyć?) – a proszę mi wierzyć, tam świętowaliśmy tylko wyjątkowe wydarzenia, bo znacznie bliżej było jakieś 10 innych Pub’ów.
Każdy programista a zwłaszcza ten w “startupie” musi być pragmatykiem, broń Boże tego nie należy jednak mylić z niechlujstwem i radosną twórczością kodu typu “spaghetti”.
Pracowitość i szerokie horyzonty
Nie ma co się oszukiwać – “startup” to dużo pracy, krótkie terminy, wiele rzeczy dziejących się na raz. Tylko tak można szybko wystartować z MVP, tylko tak można szybko wypuszczać wartościowe dla klientów funkcjonalności i zdobywać rynek. Programista w “startupie” nie może wybrzydzać, musi potrafić nie tylko programować, ale jeżeli trzeba to też sam podołać pracom administracyjnym czy bazodanowym. W niewielkim 2-3 osobowym zespole ciężko wydzielić konkretne obszary specjalizacji, więc ciężko zaakceptować tłumaczenie, że ktoś pisze tylko backend, frontu się nie dotyka, że na SQL się nie zna a jak zainstalować i uruchomić Tomcata na Linuksie nie ma pojęcia.
Odwaga i entuzjazm
W swojej już prawie 20-letniej karierze miałem to szczęście pracować głównie w “startupach”, jakieś niecałe 2 lata z nich przepracowałem w typowym “korpo”. 10 lat entuzjazmu, energii i radości z kodowania, pair programmingu w którym wyrywaliśmy sobie niekiedy klawiatury ;) i po 10 latach zderzenie z ścianą – pierwsze słowa osoby wprowadzającej mnie w projekt “tego się nie da” – myślałem, że się przesłyszałem – mniejsza o techniczne aspekty – ale w zespole panowała powszechna opinia, że nie da się wprowadzić tak dużych zmian, taki stan już jest i będzie i lepiej “tego” nie ruszać. Udowodniłem, że się da, sporo zaryzykowałem idąc pod prąd, jeszcze większe ryzyko było wypuścić tak przekopany produkt na produkcję – ale udało się, wystarczyła odrobina odwagi i entuzjazmu – niestety, dzięki temu awansowałem i było tylko gorzej – ale to 2 letni epizod – kiedyś trzeba sobie wybaczyć ;)
Odwaga potrzebna jest już na samym początku, jest duża pokusa ciepłej posadki w dobrze płacącym BPO gdzie można godzinę rano na kawce przegadać, kolejne 2h na lunchu i jakoś dotrwać do “fajrantu”, trzeba mieć odwagę by wybrać znacznie trudniejszą drogę w bardziej wymagającym środowisku, do tego często mniej stabilnym i bez karty “MultiBenefitSportOK” (z której pewnie korzysta jakieś 0,01% posiadających ją ludzi).
Trzeba mieć odwagę potem w podejmowaniu trudnych i ryzykownych decyzji, odwagę w podejmowaniu się często karkołomnych zadań. Ale tak naprawdę to jest prawdziwy rozwój, gwarantuję, że każdy mile przeze mnie wspominany programista, który przepracował w naszym zespole kilka lat jest nie do zagięcia gdzie indziej i jestem dumny z tego, że rósł wraz z firmą i teraz poradzi sobie wszędzie!
Pasja
Pasja jest cechą najlepszych specjalistów IT. Programowanie nie może być tylko zawodem, musi być czymś więcej. Tego nie da nauczyć się tylko raz, w tej dziedzinie człowiek rozwija się ciągle. Ciągle pojawiają się nowe technologie. Musi nadążyć za nimi, śledzić nowinki i być na bieżąco.
Pasja potrzebna też jest by podołać często mniej ciekawym zadaniom jak refactoring czy poprawianie błędów, w tym też trzeba się odnaleźć i realizować takie zadania.
Zdolności komunikacyjne
Potrzeby posiadania zdolności komunikacyjnych programisty w “startupie” nie trzeba chyba uzasadniać. To dynamiczne środowisko pełne zmian, często na początku funkcjonujące bez jakichkolwiek formalnych procesów, których dorobić się może dopiero po kilku latach. Takie otoczenie wymaga zdolności komunikacyjnych, otwarcia na pomysły i umiejętności komunikowania technicznych aspektów w sposób zrozumiały dla innych.
Programista w dopiero co startującym biznesie musi zrozumieć wiele osób – musi potrafić porozumieć się z kimś kto kreuje wizję produktu, zrozumieć księgowego – bo przecież produkt nie będzie darmowy, potrafić wysłuchać ze zrozumieniem prawnika, który być może będzie tłumaczył aspekty związane z ochroną danych osobowych.
Brak niezdrowego przywiązania do swojej twórczości
Cecha mocno dyskwalifikująca programistę w przydatności dla “startupu” to niezdrowe przywiązanie do swojej twórczości. Programiści swoją pracę często porównują z dziełami wychodzącymi spod pędzla malarza czy strofami wiersza poety, i jest w tym ziarnko prawdy, jednak często przeradza się to w przywiązanie się na tyle do dzieła, że jego zmiana, a niekiedy potrzeba usunięcia w całości urasta do rangi traumy przeżywanej tygodniami. To uniemożliwia zdrowe podejście w którym produkt zmienia się, ewoluuje i jego elementy są zastępowane innymi, gdy podejmowane są często nietrafione decyzje. Programista musi potrafić rozstać się z swoim dziełem i często pracę zacząć od nowa.
Przywiązanie do prostoty a nie komplikowanie
Ta cecha pożądana jest u każdego programisty, jednak w “startupie” znaczenie ma ogromne – tu liczy się czas i pieniądz. Każde rozwiązanie można nadmiernie skomplikować, a nadmierna komplikacja to strata czasu już na etapie tworzenia, kolejny czas tracimy na dalszej obsłudze i rozwoju już raz “przekombinowanego” rozwiązania, często kończy się to potrzebą wykonania go od początku.
Zdolności techniczne i znajomość rynku
Programista w “startupie” musi być wyjątkowym specjalistą. Nikogo nie stać na pomyłki na samym początku, te pomyłki często będą determinowały produkt na długo i mogą stać się przysłowiową “kulą u nogi” jeżeli wcześnie się ich nie naprawi.
Musi on również wykazywać się doskonałą znajomością rynku i nowych rozwiązań, musi to być jednak zdrowe zainteresowanie – a nie rzucanie się z jednej dopiero co użytej technologii na kolejną, która w danym momencie staje się trendem. Nie wszystkie te technologie przetrwają próbę czasu, nie wszystkie są gotowe do zastosowań produkcyjnych, a zespoły je wspierające tracą zapał. Więc wskazana jest znaczna powściągliwość w wdrażaniu każdej nowinki technologicznej z rynku do projektu, a każdy programista ma takie pokusy, musi jednak zrozumieć ryzyka z tym związane.
Oczywiście budując zespół w “startupie” przede wszystkim należy pamiętać, że należy dobierać takie osoby, aby tworzyły one fajną zgraną paczkę, która dogada się przy klawiaturze, ale też wyskoczy w piątek razem na piwo!
Masz takie cechy? Chcesz spróbować naprawdę dynamicznego projektu wraz z ludźmi z pasją, energią, którzy mają radochę z tego co robią – pisz śmiało: konrad.pawlus@salesmanago.com!