Jaką trzeba przebyć drogę, aby pracować jako programista? Czy studia kierunkowe są konieczne? Co się bardziej opłaca – etat czy własna firma? Odpowiedzi udzielił mi Maciej Cebula – programista, architekt i CEO, z którym miałem okazję rozmawiać w ramach kolejnego odcinka podcastu „Więcej niż konteneryzacja”. Poniżej przeczytasz fragment naszej rozmowy, ale zachęcam do przesłuchania całości, bo naprawdę warto.
Jak zacząć przygodę z programowaniem?
Damian: Muszę o to zapytać – Jak zaczęła się Twoja przygoda z programowaniem lub w ogóle z IT?
Maciej: Bardzo szybko, bo w gimnazjum! Tak jak większość chłopaków, spędzałem wtedy bardzo dużo czasu przed ekranem, grając w gry komputerowe, a jedną z nich było GTA San Andreas na multiplayerze. Pamiętam, jak właściciele jednego z serwerów chcieli, aby ktoś zaprogramował samochody w taki sposób, aby przy naciśnięciu odpowiedniego klawisza pojawiały się kierunkowskazy. Zgłosiłem się i się udało, zrobiłem to! Rozpierała mnie duma — miałem zaledwie 15 lat, gdy mój pierwszy ficzer poszedł na produkcję. To było naprawdę było coś.
Damian: Jestem pod dużym wrażeniem, wow! Sam też grałem w San Andreas i mimo że jesteśmy chyba w podobnym wieku, nie wyobrażam sobie, abym mógł w gimnazjum napisać coś, co by działało, a co dopiero plugin do tak rozbudowanej gry. A jak to się stało, że zacząłeś myśleć o zawodzie programisty już tak na poważnie?
Maciej: Będąc w liceum, moi rodzice namawiali mnie, abym poszedł na budownictwo, ale długo zastanawiałem się, czy to jest na pewno to, co chcę robić w życiu. I wtedy właśnie przypomniałem sobie o tym moim sukcesie z GTA i o tym, ile frajdy mi to sprawiło. Tak się złożyło, że kolega z klasy akurat wybierał się na studia informatyczne, więc uznałem, że pójdziemy w dwójkę, żeby było raźniej. To był strzał w dziesiątkę!
Damian: Zastanawia mnie, gdybyś miał wymienić kluczowe cechy lub umiejętności, które rozwinęły Twoją karierę jako programista, to co by to było?
Maciej: Myślę, że głównymi cechami, które pozwoliły mi programować i rozwijać się właśnie jako programista są ambicja i wytrwałość. Bez niej bardzo łatwo i szybko można się poddać. Chyba każdy, kto próbował programować, zniszczył niejedną klawiaturę i nieraz porzucał ten pomysł, a później po pewnym czasie do niego wracał. Tak było i w moim przypadku. Ale bardzo tego chciałem, więc się nie poddawałem. Pamiętałem tę frajdę z przeszłości i może to jest właśnie klucz do tego wszystkiego, żeby najpierw odnieść jakiś sukces, cieszyć się nim, a potem iść dalej.
Poza ambicją jestem chorobliwie dokładny i to też bardzo mi pomaga w mojej pracy. Potrafię wyłapać niepotrzebną spację, czy przecinek i nie chodzi o czepianie się, tylko o to, żeby dążyć do jak najlepszego kodu. Jakość kodu zawsze miała dla mnie duże znaczenie.
Damian: Pracowałeś zapewne w kilku miejscach jako programista. Zakładam, że mogły to być różne firmy, np. małe firmy, startupy, wielkie korporacje – gdybyś miał wymienić zalety i wady pracy w startupie vs w korpo – to co by to było?
Maciej: Szczerze mówiąc, w startupie nigdy nie miałem przyjemności pracować jako programista, ale wszystko przede mną. Moja przygoda zaczęła się od korporacji i pamiętam, jak wyglądały tam pierwsze miesiące — jeżeli miałeś do kogoś jakieś pytanie, to, zamiast zapukać do drzwi i zapytać wprost, trzeba było pisać maila. To jest właśnie ta korporacyjna otoczka, którą często widujemy na wszelkich memach — przykładowo organizowane są spotkania, które trwają dwie godziny, a w zasadzie puenta mogłaby być zawarta w jednym zdaniu. Moim zdaniem minusem pracy w korporacjach jest to, że jest wiele ekstra obowiązków, które niekoniecznie… są konieczne. Chociaż może to po prostu wynika z zarządzania bardzo dużą liczbą ludzi i nie da się tego inaczej zorganizować. Brakowało mi tam mimo wszystko czasu na programowanie.
Natomiast praca w małych software house wygląda zupełnie inaczej. Mały zespół skupiony na tym, co ma osiągnąć.. I to jest coś, co zawsze mnie kręciło, czyli duch małego zespołu — mamy dwa tygodnie, żeby osiągnąć to, to, to i to, więc jedziemy i się nawzajem motywujemy.
Damian: Tak zmieniając nieco temat, trochę się już znamy, i wiem, że miałeś zacięcie do tzw. DevOpsowania, do wchodzenia w kontenery czy Kubernetes… Jak to oceniasz z perspektywy czasu? Czy ta chęć rozwoju, wyskoczenie poza programowanie finalnie gdzieś się opłaciła i warto zgłębić te tematy?
Maciej: Moja droga zaczęła się od tego, że pracowałem jako programista i po prostu programowałem. A potem w internecie zobaczyłem Twoje szkolenie i tak sobie pomyślałem — co to właściwie jest ten Docker? Zawsze lubiłem uczyć się nowych rzeczy i stwierdziłem, że spróbuję, tym bardziej że miałem gwarancję zwrotu, więc nie było ryzyka. I nie wiem, jak to zrobiłeś, ale na studiach nienawidziłem Linux’ów, ale jak zacząłem pracować z Dockerem, to się w tym odnalazłem i nagle to zaczął być mój świat. Uważam, że to nie jest droga dla każdego. Że to nie jest musthave. Programując, nie musimy skupiać na innych rzeczach dookoła. Ale możemy to robić, jeśli lubimy uczyć się nowych rzeczy. I szczerze mówiąc, myślę, że nie odważyłbym się na start firmy, gdybym nie nauczył się najpierw stawiania klastrów i odpowiednich zabezpieczeń, dzięki którym można przechowywać wrażliwe dane klienta i mieć pewność, że one są tam bezpieczne.
Jak i dlaczego programista założył swoją firmę?
Damian: Skoro już jesteśmy przy temacie własnej firmy — ta rozmowa jest poświęcona drodze od pracy etatowej jako programista do CEO Software House, więc siłą woli muszę o to zapytać. 🙂 Co spowodowało, że zacząłeś myśleć o własnej firmie?
Maciej: Programowanie, ale przede wszystkim nauka nowych rzeczy, sprawia mi naprawdę wielką przyjemność. Cieszę się, że mogę robić coś więcej, coś ponadto. I dlatego stwierdziłem, że założenie firmy będzie dobrą opcją, bo możemy robić ciekawe projekty i przy tym też się rozwijać. Wtedy nie stoimy w miejscu, ale jednak pracujemy w zespole ludzi, którzy się lubią i rozumieją bez słów. Jak już się dobrze dobierzemy, to możemy robić wspólnie ciekawe projekty.
Poza tym na etacie najbardziej irytującą rzeczą było mówienie „masz to zrobić tak, bo tak” bez dyskusji. A dyskusja to ważna rzecz, o ile nie najważniejsza. To nas rozwija i pozwala poznać czyjś punkt widzenia. Tego mi właśnie czasem brakowało w pracy etatowej. Dlatego teraz, w naszym software house’ie kładziemy wielki nacisk na dyskusje. Najpierw rozmawiamy, a dopiero później działamy.
Damian: A jak wyglądał proces założenia firmy?
Maciej: Generalnie wcześniej było tak, że razem z moim wspólnikiem — Sebastianem, szukaliśmy zleceń i pracowaliśmy przez jakiś czas jako freelancerzy. Nie było to proste, bo zazwyczaj firmy wolą zatrudnić osobę, w tym przypadku programistę i mieć go dla siebie na miejscu. Niekoniecznie wolą zlecać coś firmie, której nie widać albo która jeszcze nawet nie powstała i za wiele o niej nie wiadomo. Dlatego długo zastanawialiśmy się, jak to rozegrać, zrobiliśmy burzę mózgów, aż w końcu dowiedzieliśmy się, że u mnie w mieście jest firma, która zajmuje się tworzeniem wizerunku firmy i marketingiem. Stwierdziliśmy, że trzeba spróbować i ten krok spowodował, że nagle pojawił się odzew i klienci zaczęli się interesować i dopytywać.
Damian: Czy poza szukaniem klientów były jeszcze jakieś inne trudności, które się pojawiły po założeniu własnej firmy?
Maciej: Generalnie trudności były nawet przed założeniem firmy, bo nie jesteśmy za bardzo obyci w tematach prawnych i tego typu rzeczach. Tak więc zakładanie spółki (a nie jednoosobowej działalności) było sporym wyzwaniem. Poza tym ciężko było wejść w buty managera i szefa oraz ogarnąć temat od strony biznesowej, a nie tylko od strony kodu. Trudne było dla mnie także to, aby zrozumieć problem klienta, tym bardziej, że nie zawsze można z klientem porozmawiać na tematy techniczne, bo nie każdego to interesuje. Ale po pewnym czasie odnalazłem się w tym. Teraz rozmowy z klientami sprawiają mi frajdę. Każda taka rozmowa wzbogaca, bo klienci opowiadają o swoich biznesach i doświadczeniach.
Damian: Chciałbym Cię jeszcze zapytać o to, jakie doświadczenia z pracy na etacie przydają się w prowadzeniu własnej firmy?
Maciej: Myślę, że pracując na etacie, poznajemy biznes, w którym chcemy później założyć firmę. Więc bez wątpienia jest to coś koniecznego. Zakładanie firmy bez wcześniejszego poznania branży byłoby w mojej opinii troszkę absurdalne. Myślę więc, że praca na etacie uczy nas tego, jak to wygląda od kuchni, z jakimi problemami musimy się mierzyć itd.
Damian: A gdybyś miał opisać prowadzenie własnej firmy, ale jako oczekiwania versus rzeczywistość, to co byś powiedział?
Maciej: Szczerze mówiąc, gdy zakładałem firmę, myślałem sobie, że przecież będę mógł wciąż programować, a wszelkie rzeczy organizacyjne zrobię w tzw. międzyczasie. A nagle okazało się, że tych kilka organizacyjnych rzeczy to jest trochę więcej niż kilka i jednak przydałoby się, aby doba miała więcej godzin. Często jest tak, że pracuje się troszkę dłużej niż 8 godzin, ale biorąc pod uwagę ogólną satysfakcję i dumę z siebie i zespołu myślę, że warto. Na pewno warto.
Czy warto iść na studia informatyczne?
Damian: No tak, tu postawmy kropkę. Teraz nietypowe pytanie, co zrobiłby 20-letni Maciej, mając wiedzę taką, jak teraz? Czy gdybyś wiedział w wieku 20 lat, że Twoim celem będzie założenie własnej firmy, to czy zmieniłbyś kierunek swojej kariery programistycznej? Na przykład: nie poszedłbyś na studia lub wybierałbyś inne typy firm czy inne projekty?
Maciej: Myślę, że przebieg zdarzeń, który miał miejsce w moim życiu, był dziełem przypadku. Po prostu poszedłem na studia, bo jak byłem w liceum, to zawsze się mówiło, że warto iść na studia. Poszedłem na studia i ukończyłem je, robiąc też magistra. Jestem w 100% przekonany, że teraz też bym to zrobił, choć nie wiem, czy nie skończyłbym po inżynierze i nie skupił się na pracy. Uważam, że można lepiej ten czas spożytkować i na przykład więcej pracować lub zacząć szukać swoich zleceń. Jeżeli chodzi o wybór firm, w których pracowałem jako programista, to miałem wiele szczęścia i łapałem okazje — na początku dostałem się na staż i tam zostałem, potem kolega zaprosił mnie do firmy, w której pracował. Każda z tych firm nauczyła mnie czegoś wartościowego. I myślę, że to dopiero pozwoliło mi stanąć na własnych nogach i otworzyć coś swojego.
Damian: Z moimi studiami było podobnie i myślę, że na studia inżynierskie poszedłbym w ciemno jeszcze raz, ale na magisterskie już niekoniecznie. I na pewno pracowałbym już w trakcie tych studiów, przynajmniej od drugiego, trzeciego roku tak, żeby broniąc pracę, mieć już jakieś doświadczenia.
OK, dobra, to teraz przejdźmy już do roli CEO. Jakie cechy uważasz za kluczowe dla dobrego CEO, poza technicznymi, o których już rozmawialiśmy?
Maciej: Bardzo ważna jest empatia i to, żeby potrafić wczuć się w sytuację osób, które należą do zespołu, żeby wyczuć, czy czegoś im nie brakuje i żeby móc na to reagować. Jeśli natomiast chodzi o klientów, to istotne jest to, aby nie wciskać pewnych rozwiązań na siłę, tylko poznać potrzeby klienta. Może być tak, że uznamy, że nie jesteśmy do końca potrzebni i trzeba o tym szczerze powiedzieć i po prostu się wycofać oraz np. polecić inną firmę, która zajmuje się takimi rzeczami. Także myślę, że uczciwość wobec klienta jest również kluczowa.
Damian: Jasne, a w kwestii zarządzania zespołem czy też współpracy ze wspólnikami i innymi pracownikami?
Maciej: Zdecydowanie szczerość do bólu. To jest klucz do sukcesu, aby rozumieć siebie nawzajem i jak najlepiej się dogadywać.
Damian: Czyli stare, dobre, wszystkim znane zasady. Czy pochwalisz się swoim największym sukcesem jako założyciel software house’u?
Maciej: Przede wszystkim to, że udało mi się skompletować ludzi, którzy chcą ze sobą pracować. Którzy są zadowoleni z tej pracy i z tego, jak ona wygląda. Stać nas na szczerość, jesteśmy otwarci na dyskusje, na rozważanie różnych aspektów technicznych. Uważam to za ogromny sukces, ale liczę też na inne sukcesy w przyszłości.
Damian: Ja też trzymam kciuki, żeby takie sukcesy się pojawiły i myślę, że determinacja i ciężka praca z pewnością prędzej czy później Was do tego doprowadzi. Grunt, aby doceniać to, co już się ma i dalej ciężko pracować, a reszta przyjdzie z czasem.