Blaski i cienie pracy developera w firmie produktowej
To nie jest tak, że na hasło “jestem programistą” z automatu otwierają się wszystkie drzwi, kontrakty same lądują na biurkach, a legendarne 15k trafia co miesiąc na konto. Wystarczy jednak wejść na serwisy z ogłoszeniami o pracę, by zorientować się, że jest w czym wybierać – zarówno gdy chodzi o stanowiska, jak i wymagane umiejętności oraz specyfikę poszczególnych organizacji.
Katarzyna Hajok. Content specialist w Landingi. Lubi wiedzieć, co słychać na rynku najnowszych technologii, testować nowe pomysły i uczyć się, jak działają rzeczy. Zawodowo związana ze sprzedażą na rynku IT, procesami okołorekrutacyjnymi i marketingiem internetowym w Landingi.
Spis treści
Jak wybrać taką ofertę, która nas zadowoli?
Każdy ma własne preferencje co do rodzaju wykonywanej pracy. Niektórzy lepiej się odnajdą w różnorodnych projektach dla wielu klientów (taka jest specyfika pracy w software house’ach), a inni będą cenić sobie skupienie nad jednym produktem tworzonym od lat w ramach jednej organizacji (czyli w firmie produktowej).
W tym tekście chcę pokazać Ci kilka plusów i minusów wynikających z pracy w firmie rozwijającej własny produkt. Jak możesz się domyślić, lista jest subiektywna i część plusów możesz uznać za minusy bądź odwrotnie. Wiadomo przecież, że najlepszą odpowiedzią na pytanie, jak coś zrobić, jest: “to zależy”.
Plusy pracy nad jednym produktem
Firma, która zajmuje się jednym produktem, zna go od podszewki. Zwykle (o ile to nie startup), te rozwiązania już działają i mają grono użytkowników, a ci użytkownicy – własne potrzeby. Rozwój produktu to nie tylko pisanie kodu. To również rozmowy z osobami odpowiedzialnymi za inne obszary i znającymi wymagania użytkowników. We wszelkie zmiany w udostępnianych użytkownikom funkcjonalnościach zaangażowane są działy marketingu i supportu oraz osoby odpowiedzialne zarówno za programowanie i UX, jak również za bazy danych.
W dobrze funkcjonującej firmie produktowej programista ma poczucie, że robi coś więcej niż tylko koduje. Widzi cele i kierunek rozwoju oraz rozwiązuje bieżące problemy użytkowników. Ma bezpośredni wpływ na produkt, z którego korzystają klienci. U programistów, którzy lubią długoterminowe projekty i poczucie, że dokładają swoją cegiełkę do czegoś większego, to może dawać dużą satysfakcję z pracy i zmniejszać poczucie wypalenia zawodowego.
W firmie produktowej nie chodzi o “trzaskanie zleceń” i podliczanie faktur, tylko o produkt, który jest w użyciu. A z jego jakości rozliczają użytkownicy – klienci. Opóźnienia i ewentualne przesunięcia deadline’ów, o ile są powodowane chęcią dania klientom czegoś naprawdę dobrego i o ile nie wpłyną znacząco negatywnie na biznes, wchodzą w grę. Co więcej, nie ma zamknięcia budżetowego na projekt. Jeśli programista wpada na nowy, wartościowy pomysł, to w wielu sytuacjach można go wdrożyć, jeśli przyniesie zyski.
Jeśli o dawaniu czegoś nowego klientom mowa, to w firmie produktowej możesz rozwiązać realne problemy w stale działającym produkcie, na przykład aplikacji webowej. Mało tego – czytasz ich opinie oraz komentarze na temat nowych usprawnień i możesz mieć poczucie, że robisz “coś większego” obserwując, jak rozwija się aplikacja przez lata. Jeśli piszesz software, który potem musisz utrzymywać przez długi czas, to siłą rzeczy coraz lepiej go projektujesz.
Gdy pracujesz z własnym „starym” kodem, możesz doświadczyć, jak jego jakość wpływa na Twoją późniejszą pracę. To wymusza naukę dobrych praktyk programistycznych. Rozwój popularności oferowanych rozwiązań uczy, jak projektować skalowalny kod i infrastrukturę. Ta sama aplikacja może działać dobrze przy stu klientach, i mieć poważne problemy przy pięciuset.
Minusy pracy nad jednym produktem
A jakie mogą być minusy pracy w firmie produktowej?
Przede wszystkim musisz sobie uświadomić, że czeka Cię praca ze starszym oprogramowaniem i z kodem już napisanym przez kogoś. Ten ktoś pewnie miał na to inny pomysł. Do pracy w firmie produktowej potrzeba zatem podejścia: „jestem otwarty/otwarta na to, co wcześniej ktoś wymyślił i co już trochę działa”.
Produkt, który będziesz współtworzyć, jest prawdopodobnie stale wykorzystywany, a to oznacza, że decyzje, jak produkt rozwijać, nie mogą być podejmowane pochopnie. Po pierwsze: wszelkie złe wybory techniczne odbiją się czkawką prędzej czy później, a po drugie: klienci są już przyzwyczajeni do pewnych rozwiązań. Nie możesz sobie pozwolić na nieprzemyślane zmiany, bo każda zła decyzja spotka się z natychmiastową reakcją ze strony użytkowników.
Bolączką programistów w firmach produktowych jest utrzymywaniu starego kodu (tzw. legacy). Trudno jest stworzyć system, który rozwiąże wszystkie problemy i będzie działał również po latach. Często kończy się to tak, że będziesz dopisywać nowe rzeczy do starych i grzebać w pozostawionym po kimś spaghetti. Podczas pracy przyda się więc z jednej strony pozytywne podejście do pracy na czymś już napisanym, a z drugiej perspektywiczne spojrzenie na obecnie pisany kod i na to, co będzie z nim po latach.
Praca na skomplikowanych systemach z dodatkowymi założeniami oznacza, że jeśli chcesz coś poprawić, to musisz mieć kompleksowe spojrzenie na to, jak działa produkt i jakie mogą być szeroko rozumiane konsekwencje wprowadzanych zmian. Do tego wszystkiego trzeba dobrze priorytetyzować: stale dokonywać wyborów, co najpierw należy udoskonalić, a co może poczekać.
Specjalizacja w jednym produkcie oznacza też, że będziesz siłą rzeczy korzystać z mniej różnorodnych narzędzi. Musisz sam/sama pamiętać o śledzeniu trendów w branży, ponieważ praca w jednym projekcie może zamknąć Cię w kręgu używanych narzędzi (np. wybranych frameworków lub języków programowania).
Trudniej będzie poznać nowe technologie, nie pracując z nimi na co dzień. Nawet po uczestnictwie w konferencji czy szkoleniu może się okazać, że nie uda Ci się wdrożyć w codziennej pracy nowo poznanej wiedzy (a przynajmniej nie od razu, bez konsultacji z innymi działami i decydentami).
Nie znaczy to, że każdy nowy pomysł jest skazany na niepowodzenie, ale że innowacje muszą być dobrze przemyślane i uzasadnione. Często więcej czasu poświęca się na rozmowy i konsultacje niż samo programowanie.
Wnioski?
Nie napiszę niczego odkrywczego. Część z nas woli poświęcić się jednemu, dużemu projektowi i realizować go przez lata, a część co chwila dostawać nowe, różnorodne wyzwania. Tym pierwszym praca w firmie produktowej może przynieść dużą satysfakcję, poczucie realizacji, a może i długoletnie relacje z innymi pracownikami. Na tych drugich, którzy zdecydują się na pracę w software house’ach, czekają różnorodne zadania, ciągłe wykorzystywanie najnowszych technologii oraz szybkie tempo pracy. Warto poznać obie perspektywy, a potem podjąć decyzję, która z nich lepiej odpowiada naszym potrzebom.