Firmy outsourcingowe vs firmy produktowe: gdzie warto pracować

30 sierpnia
Denis Tsyplakov
Firmy outsourcingowe vs firmy produktowe: gdzie warto pracować
Denis Tsyplakov, Solutions Architect w DataArt przeanalizował, czym różnią się od siebie firmy z branży IT i które z tych różnic wpływają znacząco na komfort pracy specjalistów.

Kilka tygodni temu poproszono mnie o napisanie kilku akapitów na temat różnic pomiędzy firmami produktowymi i outsourcingowymi. Te parę akapitów ostatecznie przekształciło się w dość długi artykuł – nagłówek pozostał jednak ten sam i to o nim chcę napisać w pierwszej kolejności.

Fałszywy podział

Przede wszystkim, szczegóły dotyczące funkcjonowania danego projektu są o wiele bardziej zauważalne z perspektywy programisty niż model biznesowy. Innymi słowy: wszystko, co zostanie tu powiedziane na temat firm outsourcingowych i produktowych jest uśrednione. Odpowiadając na wybraną ofertę pracy, powinno się więc brać pod uwagę konkretną firmę i projekt.

Po drugie, podział: outsourcing – produkt jest niesamowicie uproszczony. W rzeczywistości istnieje o wiele więcej typów firm: startupy produktowe (jest ich tak wiele, że nie będę się nawet silił na podawanie przykładów), dojrzałe firmy produktowe (jak JetBrains), firmy, dla których IT nie jest głównym obszarem działalności (np. duże banki). Niektóre tworzą zdalne biura dla swoich klientów i zatrudniają w nich programistów, inne specjalizują się w dostarczaniu niskobudżetowego wsparcia do USA na podstawie wizy H1B.

Na rynku są również firmy, które zapewniają klientom usługę rozwoju rozbudowanych rozwiązań bez relokowania zespołów i zatrudniania ich „pod projekt”. Istnieją także te, które tworzą produkty open sourcei zarabiają na dostosowywaniu ich do potrzeb klientów. Modeli biznesowych jest tak wiele, że nie da się właściwie stworzyć zamkniętej listy.

Równie trudno rozróżnić modele biznesowe firm produktowych. W pełni produktowy Microsoft posiada, na przykład, cały dział Microsoft Professional Services, zajmujący się dostosowaniem oprogramowania na zamówienie. Warto także określić, co właściwie uznajemy za produkt. Say, IntelliJ IDEA czy MS Office to oczywiście produkty. Gmail to usługa online, ale można nazwać ją produktem dla uproszczenia. Microsoft Azure to usługa w chmurze, ale po części również produkt i usługa konsultingowa.

Z drugiej strony, wyraźny podział firm na produktowe i outsourcingowe istnieje na rynku pracy.

„Jeśli chcesz dowiedzieć się, czego możesz spodziewać się po danej osobie, zrozum jej motywy. Jeśli chcesz wiedzieć, czego możesz spodziewać się po firmie, zrozum jej model biznesowy” - przyjrzyjmy się więc źródłom dychotomii modeli biznesowych, ale na początek umówmy się, że podział ten istnieje naprawdę.

Godziny pracy czy coś innego?

Firmy outsourcingowe oferują usługi rozwoju oprogramowania na obszernym i dość homogenicznym rynku, zatrudniając programistów dostępnych na rynku pracy. Można nawet stwierdzić, że w rzeczywistości firmy outsourcingowe kupują usługi od developerów, „przepakowują” ich godziny pracy w ten czy inny sposób, grupują je i sprzedają klientom. Liczba sprzedanych godzin pracy jest moim zdaniem jednym istotnych czynników wpływających na pobudzenie dochodów firmy.

Idąc odrobinę dalej - dochody takich firm są bezpośrednio związane z liczbą developerów w nich pracujących. Z punktu widzenia firmy korzystne jest, by programiści chcieli dla niej pracować i nie rozglądali się za możliwością odejścia. Ale zapewnienie idealnych warunków pracy jest właściwie niemożliwe. Znaczące jest również to, że w 2019 firmy outsourcingowe są do siebie bardzo podobne – wszystko, co może je od siebie odróżniać zostało już odkryte i wykorzystane w negocjacjach z klientami. Oczywiście pewne różnice istnieją. Niektóre firmy traktują pracowników („zasoby”, jak mówi się o nich w takich przypadkach) bardziej mechanicznie, inne stosują ludzkie podejście. Dla zwykłego pracownika te różnice są najbardziej zauważalne w czasie przejścia z jednego projektu do kolejnego.

Zyski firm produktowych zależą od sprzedaży produktu (np. zawartości strony www, chmury albo czegokolwiek innego). Sprzedaż jest niezależna od liczby developerów zaangażowanych w produkcję rozwiązań. Jeśli produkt sprzedaje się dobrze, koszt wytworzenia go i warunki pracy programistów mogą być bardzo dobre (albo wcale nie, to zależy od właścicieli biznesu). Natomiast, jeśli produkt sprzedaje się marnie, nieważne jak wydajnie pracuje zespół – warunki pracy nie będą zadowalające., Co więcej, dla wielu firm produktowych oprogramowanie może nie być jedynym produktem, a tylko darmowym „rozszerzeniem oferty”, które napędza zysk.

Istotne jest więc, czy firma sprzedaje godziny pracy (lub coś, w co te godziny pracy są opakowane, jak usługi konsultingowe), czy coś innego. Pierwszy typ nazwijmy firmami outsourcingowymi, drugi – produktowymi. Zaznaczę jednak, że wszystko, co znajdziecie poniżej jest prawdziwe tylko w odniesieniu do firm małej i średniej wielkości. Większe przedsiębiorstwa z dziesiątkami tysięcy pracowników rządzą się swoimi prawami. Z punktu widzenia developera wyglądają one od środka jak bardzo złożony system – powiązanie outsourcingu i produktu. Nie będę się nimi zajmował. Skoro dookreślenie kluczowych terminów mamy już za sobą, przyjrzyjmy się różnicom między tymi dwoma typami firm.

Średnia i skrajności

Warunki pracy w firmach outsourcingowych są mniej więcej takie same, a firmy produktowe balansują między skrajnościami. Firmą produktową jest na przykład Valve i tam warunki są naprawdę wyjątkowe (choć plotki mówią, że ostatnio bywa różnie…), ale nieznana firma zajmująca się rozwojem oprogramowania na Visual FoxPro może już na przykład wysyłać pracowników w podróże służbowe w dziwnych kierunkach, oferować niskie wynagrodzenie, narzucać pracę w weekendy i w pakiecie dorzucić jeszcze wiecznie niezadowolonego szefa, służbowy komputer z 15-calowym monitorem CRT i nowe, niepotrzebne umiejętności. Firma outsourcingowa może sprzedać twoje godziny pracy klientowi i zwolnić cię po tygodniu, kiedy projekt się skończy. Ale może także na przestrzeni lat inwestować w twój rozwój i zapewniać ci interesujące projekty jeden po drugim. Warunki w obu typach firm w twoim mieście będą jednak do siebie podobne.

Przyjrzyjmy się teraz szczegółom.

Wynagrodzenie

Oczywiście, wszyscy zajmujemy się programowaniem, bo to kochamy. Niestety – większość przydatnych w życiu rzeczy wiąże się z koniecznością wydawania pieniędzy, dlatego chcemy także być atrakcyjnie wynagradzani za pracę.

Firmy outsourcingowe oferują zarobki na poziomie średniej rynkowej. Takie przedsiębiorstwa nie mogą pozwolić sobie na płacenie powyżej średniej, ponieważ negatywnie wpłynęłoby to na biznes. Z drugiej strony, nie mogą także płacić gorzej, niż narzuca to rynek, bo konkurencja przejęłaby z łatwością większość specjalistów. Na tym samym stanowisku, w zależności od firmy, aktualnego zapotrzebowania na technologię, projektu, umiejętności negocjacji i szczęścia, wynagrodzenie może wahać się o nie więcej niż 25%.

W firmach produktowych 30 osób jest w stanie stworzyć produkt, który zarobi dla nich setki milionów. Wynagrodzenie programistów, zwłaszcza tych kluczowych, może być naprawdę wysokie. Determinują je nie komercyjne, a psychologiczne motywy, czyli to ile pracodawca ma ochotę zapłacić developerom.

  1. Hipnoza i przykuwanie programisty do stanowiska pracy jest zabronione przez prawo. Jeśli płacisz niewiele, większość specjalistów zdecyduje się odejść. Zostaną prawdopodobnie ci, którzy nic nie robią i niewielka część osób, które z nieznanego powodu pracują w dziwacznych miejscach od lat. Warunki są dość homogeniczne, a powtarzana wielokrotnie mantra o unikalności produktu wcale tutaj nie działa.
  2. Nie ma zbyt wielu dobrych miejsc, w których pracodawca nie liczy każdego groszai nie waha się wypłacać wynagrodzenia znacznie wyższego od średniej rynkowej (jeśli wiesz o takich miejscach, daj znać!). W outsourcingu nie ma stanowisk o takich warunkach, a produktowym świecie trzeba się solidnie naszukać. Poza tym, żeby wypracować sobie właściwą pozycję nie wystarczy zostać zatrudnionym – by zostać kluczowym, cenionym pracownikiem musisz popracować dłużej (5-10 lat).

Rozmowa kwalifikacyjna

Taka rozmowa zdarza się tylko raz, ale bez niej nie byłoby mowy o jakiejkolwiek współpracy.

Procedura przeprowadzania rozmów kwalifikacyjnych w firmach outsourcingowych jest dość standardowa. Obejmuje rozmowę techniczną, która ma określić poziom umiejętności kandydata, opcjonalnie test z języka angielskiego, część HR-ową, a w połowie przypadków również rozmowę w ramach projektu z członkiem teamu albo z przedstawicielem klienta. Wszystkie te etapy to rodzaj rytuału, Internet zawiera masę porad o tym, jak poradzić sobie z procesem. W niektórych firmach można spodziewać się testu praktycznego, który trwa 2-4 godziny.

W firmach produktowych możesz spodziewać się identycznego procesu, ale często także czegoś niespotykanego. Jeśli interesują cię historie o niebanalnych rozmowach wstępnych przeprowadzanych przez wyjątkowych ludzi, wybierz się do firmy produktowej. Będziesz miał szansę spotkać tam Steve’a Jobsa udającego kurczaka, wybierzesz się na wycieczkę do pieca hutniczego albo dostaniesz do rozwiązania zabójcze zadania logiczne.

Zakres technologii

Każdy programista ma indywidualne preferencje dotyczące technologii. Firmy outsourcingowe sprzedają to, czego potrzebuje rynek. Skupiają się na 10-15 pozycjach z listy 20 najpopularniejszych technologii. Jest duże prawdopodobieństwo, że to właśnie o nie zapytają klienci i zdecydowanie łatwiej będzie je sprzedać. Jeśli interesują cię Crystal, Elexir czy Julia, trudno będzie ci znaleźć miejsce w firmie outsourcingowej. Ale nie jest to niemożliwe!

Firmy produktowe skupiają się na… produkcie. Współczesny świat IT jest tak zorganizowany, że produkty identyczne z perspektywy użytkownika mogą być zbudowane z użyciem większości technologii dostępnych na rynku. Jedyną różnicą jest ilość problemów. Serwer webowy na bashu? Ok. GUI na Windows zrobione w Perlu? Nie ma problemu! Sterownik urządzenia w Pythonie? Google wyświetla 34700000 stron na ten temat. W związku z tym zakres technologii w przypadku firm produktowych może być zaawansowany, ale może także zdarzyć się tak, że przez kolejne 20 lat się nie zmieni.

Booking.com jest napisany w Perlu. W 1996 roku wybór tego języka mógł nie być najlepszy, ale wydawał się rozsądny. Booking.com to firma o doskonałym modelu biznesowym, oferująca wyjątkowe możliwości rozwoju w branży podróży online i relokację do Amsterdamu.

Taras biura Booking.com w Amsterdamie, fot.Glassdoor

Ale w 2019 roku niewielu programistów ma ochotę pisać w Perlu. Z drugiej strony, jeśli chcesz programować np. w Darcie, nietrudno będzie znaleźć ci firmę produktową, ale w outsourcingu Dart to nie lada wyzwanie.

Poziom szczegółowości

Spójrzmy teraz z odrobinę innej perspektywy: jak dogłębna powinna być wiedza i umiejętności developera. To aspekt istotny z dwóch powodów. Po pierwsze, kiedy zajmujesz się tym, co kochasz, chętnie rozwiązujesz skomplikowane zadania. Niewiele osób chce pisać algorytmy w stylu „c=a+b” przez całe swoje zawodowe życie. Po drugie, kiedy z tego lub innego powodu zdecydujesz się zmienić firmę, nowego pracodawcę będzie interesowało to jak zaawansowana jest twoja znajomość technologii, które wymieniłeś w CV. Odpowiedzi typu „Tak, używałem Javy, ale nie mam pojęcia co to „equals” i ”hashCode”, bo nie trafiłem na nie przez 8 lat” nie pomogą ci dostać się do poważnego projektu. Ale zrozumienie niuansów web controllerów Spring MVC zademonstrowane podczas rozmowy kwalifikacyjnej może wpłynąć na wysokość twojego przyszłego wynagrodzenia. Po trzecie, czasami programiści mają czasami szansę zrobić coś, czego nie robił jeszcze nikt inny na świecie. Jeśli masz szczęście, będzie to nie tylko historia do opowiedzenia wnukom, ale również coś, co pomoże ci w znalezieniu ciekawej pracy.

Firmy rzadko decydują się na powierzenie outsourcingowi krytycznych części systemu. Jeśli system składa się z 200 modułów implementujących logikę biznesową i jądra, stworzenie tego ostatniego nie będzie raczej przekazane firmie outsourcingowej. Znam kilka takich przypadków, ale to wyjątki. Nisza nisko wykwalifikowanych specjalistów jest w całości wypełniona przez firmy z Azji. Zadania pozostawione dla Europy Wschodniej wymagają znajomości poufnych informacji i przewidują szerokie pole do rozwoju. W firmach outsourcingowych rzadko trafia się więc na proste zadania, ale wzbicie się na wyżyny nie jest łatwe. Szansa na zrobienie czegoś naprawdę unikalnego oceniam na dość znikomą.

W firmach produktowych wszystko jest prostsze. Jeśli stworzenie produktu wysokiej jakości wymaga wnikliwego zrozumienia technologii obiecującej z biznesowego punktu widzenia, możesz wszystko. Jeśli produkt wysokiej jakości ma być robiony „na kolanie”, będziesz musiał wszystkie skomplikowane zadania wykonywać w tajemnicy i na własne ryzyko. Ten problem może być rozwiązany podczas szukania pracy. Na rynku jest wiele firm produktowych i jeśli naprawdę chcesz zajmować się Machine Learning w aplikacji rozpoznającej twarze, bardzo możliwe, że znajdziesz coś dla siebie. Powinieneś tylko pamiętać, że – po pierwsze – możesz takiej firmy szukać długo, po drugie – twoja chęć pracy z tą technologią może być (pośrednio) potrącona z twojej pensji.

Warunki pracy

W biurze spędzamy 1/3 życia, a jeśli odejmiemy godziny poświęcone na sen – nawet połowę. Warto, by ten czas upływał w komfortowych warunkach. W większości przypadków warunki pracy w firmach IT na terenie jednego miasta są zbliżone, tak jak wynagrodzenia. Ale są też w świecie IT ikony jak Google. Krążą plotki, że pracownicy spędzają cały swój czas w biurze (a sypiają w minivanach zaparkowanych przed budynkiem). Ale to wyjątek, rzadko słyszy się na co dzień o takim poziomie komfortu.

Firmy outsourcingowe starają się odróżniać od konkurentów, ale jeśli odrzucimy szczegóły związane z wystrojem i przeanalizujemy ogólny poziom wygody, okaże się, że jest on prawie identyczny. Nie sposób nie zauważyć, że jakość powierzchni biurowej z roku na rok wzrasta. To prosty mechanizm – kiedy jedna z firm idzie o krok do przodu i poprawia komfort pracowników, cała reszta próbuje za nią nadążyć. Przy ostatniej zmianie pracy wybrałem DataArt już po pierwszej wizycie w biurze.

Firmy produktowe zazwyczaj podążają za ogólnymi trendami, ale są biura które są zdecydowanie bardziej atrakcyjne od innych – jak Mojang.

Takim firmom zdecydowanie łatwiej mieć własne biura, urządzone w unikalnym stylu. Z drugiej strony, biuro jednego z moich znajomych znajdowało się w walcowni gorącej i by się do niego dostać, musiałem założyć kask i strój ochronny (dystans od wejścia wynosił 500 m). Innymi słowy, istnieje duża szansa, że pracując w firmie produktowej, trafisz na coś wyjątkowego (w najbardziej niespodziewanym sensie). Najważniejsze, by zrozumieć to wszystko przed podpisaniem kontraktu z nowym pracodawcą. Wspomnę również, że wszyscy moi znajomi w firmach produktowych pracują w nieco innych biurach niż moje. Poza jednym z kolegów, który ma dostęp do dachu i umieścił tam kompas magnetyczny, co pomogło mu przy tworzeniu wbudowanego systemu do nawigacji.

Kultura

Kultura wewnętrzna w firmie jest powszechnie rozumiana jako zestaw norm, wartości i zachowań demonstrowanych przez większość zespołu. Kultura może albo budzić komfort wśród pracowników, albo być dla nich toksyczna. Każdy ma indywidualne preferencje, trudno więc jednoznacznie określić co jest złe a co dobre, ale spróbuję opisać tu kilka kluczowych aspektów.

Firmy outsourcingowe współpracują z setkami klientów z różnych krajów. Sprzedając usługi, muszą stać się takie, jak inne międzynarodowe firmy – klienci nie lubią pracować z developerami z kręgu kulturowego, którego zupełnie nie rozumieją. Firmy oczywiście różnią się od siebie, ale zdecydowanie łączy je międzynarodowe podejście.

Firmy produktowe są znacznie bardziej zróżnicowane, a na kulturę wewnętrzną wpływa w ich przypadku obszar działania. Producenci gier różnią się od firm tworzących oprogramowanie dla branży olejowej. Wybór jest ogromny, wystarczy zdecydować, co bardziej ci odpowiada.

Zarządzanie

Ostatnim istotnym aspektem są według mnie kwestie związane z zarządzaniem, które mogą być podzielone na dwie części: zarządzanie w ramach projektu i zarządzanie na poziomie firmy. Styl i podejście do rozwiązywania problemów w obu obszarach znacząco wpływa na codzienne funkcjonowanie developerów.

W outsourcingu na ogromną skalę używa się obecnie metodyki Agile. Łączy ona różne podejścia, więc szczegóły różnią się w zależności od firmy, a nawet konkretnych projektów, ale główne elementy (tickety, sprinty i stand-upy) z zasady są do siebie podobne. Zarządzanie jest zazwyczaj niewidoczne z perspektywy programisty, ponieważ w projektach najczęściej funkcjonują wyizolowane zespoły. W większości przypadków nad programistą jest tylko project manager i nie jest on „szefem”, a raczej pracownikiem obarczonym skomplikowanymi, ale zrozumiałymi funkcjami. Zarządzanie w stylu „Ja jestem tu szefem, a ty nikim” kończy się zazwyczaj utratą pracy.

W dużych firmach produktowych, zespoły developerów są zazwyczaj zarządzane podobnie, ponieważ metodyka Agile udowodniła swoją efektywność. Ale tam, gdzie odporność na zmiany jest wysoka, wciąż spotkamy działy, sektory, wydziały, itd. Daje to jasny obraz ścieżki kariery – z juniora możesz stać się kierownikiem działu, ale wydaje mi się że w roku 2019 nie jest to najpopularniejszy model rozwoju zawodowego.

Podsumowując, chciałbym jeszcze raz podkreślić, że opisałem tylko ogólne trendy. Znam wyjątki w każdej z wymienionych kwestii, dlatego nadrzędną zasadą podczas szukania pracy powinno być zrozumienie modelu biznesowego i strategii firmy. Jeśli pracodawca szuka programistów dla swoich klientów i to managerowie po stronie klienta będą zarządzać zespołami, warto sprawdzić, kto jest klientem i czego wymaga projekt. Jeśli firma twierdzi, że zajmuje się konsultingiem i rozwojem oprogramowania, nie „sprzedażą” developerów, istnieje duża szansa, że twoja wiedza i doświadczenie zostaną docenione i nie zostaniesz zatrudniony tylko na czas trwania konkretnego projektu. Ale warto wiedzieć do jakiego stopnia prawdziwe jest pozycjonowanie jako „firma konsultingowa”, obecnie tylko leniwi nie decydują się na używanie tego pojęcia.