Skontaktuj się z nami. Chętnie porozmawiamy o Twoich potrzebach i przygotujemy ofertę.

Outsourcing programistyczny
Pojedynczy programista czy większy zespół? Potrzebujesz eksperta z jakiejś konkretnej dziedziny programowania czy raczej myślisz o zewnętrznym dziale programistycznym? W każdym przypadku mamy dla Ciebie rozwiązanie, które pomoże Ci zrealizować nawet najbardziej wymagający projekt.

Zalety outsourcingu programistów

Szybki start
Ruszamy z projektem w przeciągu maksymalnie dwóch tygodni.

Szeroki zakres kompetencji
Dopasujemy zespół do potrzeb projektu - Ruby, .Net, Java, Javascript, Python, React Native, Node.js, Angular, Perl, Visual Basic, Golang, C++ czy C# to dla nas drobnostka.

Kompleksowa obsługa
Nie tylko programujemy - zapewniamy też konsulting, projekty UX/UI, utrzymanie (SLA), serwery i hosting. Możemy powiększyć zespół o specjalistów od innych technologii.

Robimy trudne projekty
Dajemy radę tam, gdzie inne zespoły poległy. Dla nas to nie problem, a wyzwanie.

Elastyczna umowa ramowa
Umowa upoważnia klienta do składania zamówień. Klient określa tylko wymiar godzinowy zakontraktowania i czas objęty zamówieniem.
Nasi Klienci
Kiedy warto zdecydować się na outsourcing?
Jako firma outsourcingowa moglibyśmy powiedzieć, że zawsze. 🙂 Ale wiadomo, że są sytuacje, w których outsourcing programistów powinien być domyślnym rozwiązaniem. Oto kilka z nich:
- firma nie ma własnego działu programistycznego - zbudowanie takiego działu to spore wyzwanie administracyjne i kadrowe; jeśli nie działasz w sektorze informatycznym, zwykle tego rodzaju inwestycja nie ma sensu;
- projekt musi wystartować szybko - rekrutacja to proces długotrwały i obarczony sporą niepewnością rezultatów; pod presją czasu na ogół warto zdecydować się na outsourcing;
- projekt wymaga wielu różnych technologii - więcej technologi oznacza konieczność większej rekrutacji i zatrudnienia większej liczby programistów; to jeden z podstawowych problemów, jaki może rozwiązać dobra firma outsourcingowa;
- wymagasz elastyczności - zarówno w kwestii wyboru technologii jak i wielkości zaangażowanego zespołu;
- projekt z założenia jest krótkotrwały - narzuty administracyjne i kadrowe są relatywnie większe przy krótkich projektach; lepiej przerzucić je na dostawcę;
- prowadzisz startup - w tej sytuacji zapewne dotyczy Cię kilka z powyższych punktów.
Dlaczego outsourcing programistyczny?
Na podstawie raportu KMPG firmy najczęściej wybierają usługi outsourcingowe w Indiach (zazwyczaj jakość wykonania tych usług jest, podobnie jak ich cena, dość niska). Jednocześnie można zaobserwować, że Polska zajmuje coraz wyższe miejsce w rankingu outsourcingu programistów, budując swą pozycję jako dostawca usług wysokojakościowy i eksperckich. Rynek tego rodzaju usług IT jest coraz większy, o czym świadczyć może ilość firm, które specjalizują się wyłącznie w outsourcingu programistycznym.
W zakres usług firm outsourcingowych zazwyczaj wchodzi: rozwój oprogramowania, testowanie, opracowywanie rozwiązań biznesowych w IT, infrastruktura IT (m.in. monitoring, wizualizacja, bazy danych), inżynieria przemysłowa.
Outsourcing programistyczny pojedynczego eksperta lub outsourcing całego zespołu jest bardzo korzystną formą zatrudnienia. Model jest bardzo elastyczny, a rozpoczęcie współpracy niemal natychmiastowe. Nie trzeba sprawdzać każdego pracownika pod kątem przydatności w projekcie. Usługa ta najlepiej sprawdza się w firmach, które szybko się rozwijają i mają nadmiar zleceń lub chciałyby zbudować jakiś system informatyczny, ale nie mogą pozwolić sobie na kilkumiesięczne przesunięcie startu projektu tylko ze względu na przeciągającą się rekrutację. W wielu sytuacjach wynajem programistów na te kilka tygodni może uratować projekt.
Dodatkową zaletą jest to, że firma, która zdecyduje się na taką formę współpracy, nie musi wygospodarowywać w biurze miejsca na nowych członków zespołu, a co za tym idzie, nie ponosi kosztów związanych z utrzymaniem większego biura i wyposażenia stanowiska pracy (komputer, oprogramowanie, wyposażenie biurowe itp.).
W dzisiejszych czasach wynajem programistów jest wykonywany właśnie na zasadach pracy zdalnej. Oczywiście programiści nierzadko muszą uczestniczyć w spotkaniach zespołu i przy opracowywaniu strategii, jednak może się to odbywać za pomocą systemów wideokonferencyjnych. Choć oczywiście spotkania twarzą w twarz też nie należą do rzadkości.
Stosowanie outsourcingu programistycznego ma wiele zalet. Najistotniejszą jest zmniejszenie kosztów budowania i obsługi systemów informatycznych. Decydując się na wynajem programistów od profesjonalnej firmy IT uzyskujecie Państwo dostęp do kompetentnej kadry i możliwość elastycznego podejścia do kwestii zasobów programistycznych.
Oddelegowanie tworzenia i utrzymania systemów informatycznych daje dostęp do wykwalifikowanego personelu bez konieczności martwienia się o zarządzanie zespołem i podnoszenie ich kompetencji. Zdolność rekrutacji i oceny pracowniczej jest nieporównywalnie większa w wyspecjalizowanej firmie informatycznej.
Decydując się na outsourcing programistyczny zyskujemy też możliwość lepszego dopasowania godzinowego zaangażowania programistów do bieżących potrzeb firmy. Mamy również o wiele łatwiejszy dostęp do specjalistów w innych technologiach i o innych kompetencjach niż te aktualnie używane przez firmę. Pozwala to na znacznie bardziej elastyczne zarządzanie projektem. Przykładowo nie trzeba rekrutować specjalisty od systemu X, jeśli wiemy, że będzie on potrzebny tylko na kilkadziesiąt godzin, aby wspomóc proces integracji, a później będzie zbędny. Dostępność praktycznie na każde wezwanie specjalistów od rozmaitych technologi ułatwia ekspansję na nowe obszary funkcjonalne (jak choćby aplikacje mobilne czy rozwiązania IoT) i tworzenie nowych produktów. Poszerza też perspektywę kierownictwa firmy czy projektu, pozwalając na rozważanie działań przez pryzmat rzeczywistych potrzeb, a nie aktualnie dostępnych zasobów ludzkich.
W firmach budujących zespół programistów in-house dość często obserwuje się pewnego rodzaju zamknięcie na nowe możliwości, zwłaszcza jeśli zatrudniono specjalistów od wąskiego zakresu technologicznego. Zatrudnianie w firmie specjalistów w jednej tylko technologii prowadzi do organizacyjnego i operacyjnego przywiązania do niej całego zespołu. Problem w tym, że nie zawsze jest to technologia w danym projekcie optymalna, lecz jest przez pracowników rekomendowana jako jedyna zgodna z ich zakresem kompetencji. A tymczasem rozwiązanie oparte na innym języku czy też frameworku mogłoby być korzystniejsze. Co gorsza, czasem dotyczy to również technologii przestarzałych! I wówczas firma staje się gettem jakiegoś archaicznego, odchodzącego w zapomnienie rozwiązania technicznego. Do pewnego momentu nie jest to problemem. Ale kiedy odchodzi ostatni specjalista od danej technologii, starzejący się system stanowi poważne zagrożenie dla działania firmy.
Wyspecjalizowana w outsourcingu firma nie ma takich ograniczeń i zawsze rekomenduje rozwiązania i technologie, które najlepiej się sprawdzą w przypadku konkretnego projektu. Dzięki outsourcingowi zespołu programistycznego firma, zamiast przedzierać się przez niuanse branży IT, może skupić się na swym bazowym biznesie.
Do najpopularniejszych technologii, w których firmy zamawiają u nas outsourcing, należą Python/Django, Angular, PHP, .NET i React Native.
Outsourcing programistyczny a utrzymywanie własnego programisty
Nierzadko przy małym zapotrzebowaniu na prace programistyczne (np. rzędu jednego etatu) firmy nie widzą potrzeby outsourcingu. Jest to jednak duży błąd. W takich sytuacjach ani zarząd firmy ani dział HR, który na co dzień nie zajmuje się rekrutacją pracowników IT, nie jest w stanie przewidzieć, ile czasu będzie wymagało znalezienie i zatrudnienie właściwego człowieka, ani właściwie ocenić kompetencji potencjalnych kandydatów.
Pierwszy programista w firmie staje się niejako kierownikiem działu IT , nawet jeśli jego formalne stanowisko jest inne. Stawia się przed nim np. takie zadania jak wybór technologii nowego projektu czy zbudowanie architektury aplikacji, co często znacząco wyrasta ponad kompetencje przeciętnego programisty. W rezultacie w firmie wdrażane są przypadkowe narzędzia i technologie, a ich zestaw zależy od tego, co akurat umiał i znał zatrudniony programista lub co aktualnie jest najmodniejsze w branży.
Bez porównania lepszą jakościowo usługą jest tutaj wersja outsourcingu, w której firma IT udostępnia programistę, nad którym czuwa dedykowany kierownik techniczny, nadając kierunek rozwoju powstających rozwiązań informatycznych. Dzięki temu otrzymujemy idealne połączenie kompetencji i ceny związanej z utrzymaniem systemów informatycznych. Mamy na pokładzie, stale do dyspozycji dedykowanego programistę, a przy tym wsparcie eksperta o znacząco wyższych kompetencjach. Oczywiście można pomyśleć również o tym, aby zatrudnić samego eksperta, ale:
- ekspert na pełen etat nie będzie zazwyczaj potrzebny, a rutynowa koderska robota może go zwyczajnie nudzić,
- oznacza to znacznie wyższe koszty,
- zatrudnienie wysokiej klasy specjalisty jest jeszcze trudniejsze, bo takich ludzi jest mniej, a do tego jeszcze trudniej zweryfikować ich kompetencje.
Zatrudniając samodzielnie programistę musimy brać pod uwagę wiele problemów. Np. w wypadku, gdy zatrudniony w klasycznym modelu programista odchodzi z firmy, to za każdym razem koszt znalezienia nowego pracownika będzie coraz większy. Każdorazowo będziemy musieli szukać osoby o coraz węższej specjalizacji, która zna coraz to kolejne technologie wprowadzone do systemów przez poprzedników.
Zatrudnienie specjalisty poprzez zewnętrzną firmę HR również mija się z celem. Jest to kosztowne rozwiązanie, które wbrew pozorom kończy się zdobyciem pracownika niezgodnego z naszymi potrzebami. Firmy HR operują tylko na poziomie nazw technologii i naprawdę bardzo rzadko rozumieją potrzeby informatyczne swoich klientów. Znajdą pracownika, który w najlepszym przypadku będzie tytułował się specjalistą w jednej z używanych w firmie technologii. Zazwyczaj kończy się to w ten sposób, że taki specjalista prowadzi projekty w kierunku rozszerzenia integracji tej technologii. Nie do końca skupia się na wyborze narzędzia, które w najtrafniejszy sposób rozwiązywałoby problem biznesowy, ułatwiałoby rozwój przedsiębiorstwa i optymalizowałoby koszty utrzymania infrastruktury.
Organizacja pracy
Umowa i zamówienia
Na początku podpisujemy z Klientem umowę ramową regulującą zasady współpracy. Wśród nich najważniejsza jest możliwość składania zamówień na prace programistyczne. Klient zyskuje możliwość składania zarówno zamówień długoterminowych jak i zleceń jednorazowych na pakiety godzin pracy programisty.
W przypadku zamówień długoterminowych zdarzają się sytuacje, że Klient nie wykorzysta w danym miesiącu wszystkich godzin. Bywa także tak, że prosi nas, by w danym okresie wrzucić w projekt większe siły. W takich przypadkach oczywiście staramy się wyjść naprzeciw jego potrzebom. Różnice między godzinami zamówionymi na dany okres, a godzinami wykorzystanymi rozliczamy w kolejnym okresie.
Przykłady zamówień
Klient może zamówić u nas 160h czy 320h pracy programistów. W niektórych przypadkach możliwe jest także zamówienie mniejszej liczby godzin, np. 80h. Zamówienia nie muszą być jednorazowe, ale mogą obejmować wiele kolejnych miesięcy, np. 320h pracy programistów na miesiąc przez okres jednego roku.
Szacowania
W bieżącej pracy posługujemy się szacowaniami pracochłonności całego projektu oraz poszczególnych zadań. Oczywiście w nowym projekcie oszacowania mogą być bardzo niedokładne, ale wraz z poznawaniem projektu i oczekiwań Klienta nabierają precyzji. Szacowaniami posługujemy się nie tylko dla Klienta, ale również na własny użytek, aby lepiej kontrolować postępy realizacji.
Timesheet
Na zakończenie każdego miesiąca przesyłamy Klientowi szczegółowe zestawienie prac. Timesheet obejmuje dokładny czas realizacji poszczególnych czynności przez wszystkich członków zespołu projektowego, z podziałem na poszczególne zadania oraz krótkim opisem zakresu pracy. Dokładnie tym samym zestawieniem prac posługujemy się do rozliczeń z naszymi programistami.
Jak wchodzimy w nowe projekty?
Onboarding
W procesie onboardingu uczestniczy na ogół tylko lead developer, w niektórych przypadkach wspomagany przez dodatkowego programistę. Lead developer jest zawsze pierwszą osobą w projekcie, dlatego na to stanowisko wybieramy najlepszych koderów, posiadających największe doświadczenie. Jednym z zadań lead developera jest rozpoznanie wymagań technicznych, infrastrukturalnych i organizacyjnych projektu. Uczestniczy on również w onboardingu, podczas którego nie tylko zapoznaje się z projektem, lecz również uzyskuje dostępy, zakłada konta czy nawiązuje kontakt z kluczowymi pracownikami Klienta.
Onboarding samego lead developera jest zdecydowanie łatwiejszy niż wprowadzanie w projekt całego zespołu od razu. Realizowany w ten sposób proces onboardingu przebiega bardzo efektywnie i nie sprawia dużego kłopotu naszym Klientom. Klient wprowadza w projekt tylko lead developera, lead developer wprowadza resztę zespołu.
Środowisko projektowe
Jeśli Klient ma własną infrastrukturę do zarządzania projektem informatycznym, nasz zespół może z niej skorzystać. Jeśli nie ma takiej możliwości, samodzielnie organizujemy środowisko projektowe lub korzystamy z naszej infrastruktury.
Standardowo stosujemy następujące rozwiązania:
- Bitbucket - platforma do zarządzania kodem,
- Jira - narzędzie do organizacji pracy i zadań,
- Slack - platforma komunikacyjna.
Natomiast u części naszych Klientów korzystamy między innymi z:
- GitHub - system do kontrolowania wersji kodu,
- Redmine - narzędzie do zarządzania zadaniami,
- Teams - platforma do komunikacji.
Rola lead developera
Lead developer jest kierownikiem projektu i osobą kontaktową w naszym zespole. Dodatkowo odpowiada za organizację pracy i dba o to, żeby wszystkie zadania zostały prawidłowo zrealizowane w ustalonym terminie. Można powiedzieć, że jest project managerem, ale sam zajmuje się również pracą programistyczną, w tym szczególnie ważnymi lub trudnymi elementami projektu.
Zadaniem lead developera jest więc nie tylko wykonywanie pracy pod dyktando Klienta, ale również samodzielne i proaktywne rozwiązywanie problemów. A jeśli zajdzie taka potrzeba, to również wskazywanie Klientowi nowych możliwości czy sugerowanie innych rozwiązań technicznych i biznesowych.
Zadania lead developera
komunikacyjne:
- organizowanie spotkań z Klientem,
- sprawne wchodzenie w nowe projekty,
- ustalanie z Klientem krótko- i długofalowych celów projektowych,
- odbieranie telefonów i odpisywanie na e-maile Klienta,
- komunikowanie Klientowi ewentualnych trudności lub zaistniałych w projekcie alternatyw technicznych.
projektowe:
- przekazywanie wiedzy projektowej członkom zespołu,
- podejmowanie kluczowych decyzji technicznych,
- osobista realizacja najtrudniejszych części projektu,
- delegowanie bardziej rutynowych zadań i zarządzanie zespołem,
- nadzór nad pracami, w tym code review.
Komunikacja z Klientem
Spotkania
W zależności od projektu, oczekiwań Klienta i etapu prac, spotkania projektowe (przegląd sprintu) organizujemy raz na tydzień lub raz na dwa tygodnie. Takie zebrania (online lub na żywo) trwają zwykle około godziny, a ich celem jest koordynacja prac z Klientem, podsumowanie postępów oraz ustalenie zadań do wykonania w najbliższym czasie. W niektórych projektach organizujemy również codzienne krótkie spotkania (daily), trwające zwykle kilka do kilkunastu minut, skupiające się wokół bieżących zadań i problemów.
Komunikacja
Poza formalnym rytmem spotkań nasz lead developer odbiera telefony i szybko odpisuje na wszystkie e-maile. Klient może zadzwonić lub napisać do kierownika projektu z każdym pytaniem dotyczącym spraw technicznych, organizacyjnych czy też nowego pomysłu na kolejny projekt.

Organizacja prac zespołu programistycznego
Jak wspomnieliśmy, lead developer odpowiada za organizację pracy naszego zespołu. Kładziemy przy tym nacisk na kilka kluczowych elementów.
Elastyczność
Lead developer dobiera programistów na początku projektu i w razie potrzeby może ich wymienić w trakcie trwania projektu. Dzieje się tak na przykład gdy projekt dochodzi do etapu, gdy przydaje się inny zestaw technologii lub nowy zakres umiejętności. Poszczególni specjaliści mogą być zaangażowani w projekt w pełnym wymiarze godzinowym lub tylko na część etatu. Dzięki temu bardzo elastycznie możemy reorganizować zespół, by dopasować się do dynamiki projektu.
Skalowalność
Jeśli tylko zachodzi taka potrzeba, lead developer dobiera do zespołu dodatkowych programistów, których zadaniem jest wsparcie dotychczasowego zespołu i pomoc w wykonaniu najpilniejszych zadań. Dzieje się tak również, gdy Klient składa zamówienie na większą liczbę godzin pracy programistów. Wtedy do projektu również dołączają dodatkowi koderzy.
Ciągłość prac
W projekcie zawsze uczestniczą co najmniej dwie osoby (lead developer i programista), aby w razie niedyspozycyjności lub urlopu jednego członka zespołu została zawsze przynajmniej jedna osoba, która dobrze zna projekt i rozumie potrzeby Klienta. Dzięki temu zachowujemy ciągłość prac i zmniejszamy ryzyko opóźnień.
Koordynacja
Często dołączamy w projekcie do już istniejącego zespołu Klienta. W takim przypadku rola naszego lead developera jest ustalana w zależności od potrzeb. Może on być traktowany jak zwykły członek zespołu, doradca techniczno-projektowy czy koordynator podzespołu. Zdarza się również, że nasi lead developerzy przejmują z czasem koordynację całego zespołu Klienta.
Miejsce wykonywania prac
Dostajemy od Klientów wiele pytań o miejsce wykonywania prac. Wielu z nich narzeka, że dzisiaj programiści, których zatrudniają, chcą pracować wyłącznie zdalnie i komunikować się wyłącznie drogą mailową. Jesteśmy profesjonalną firmą programistyczną. Nasi programiści pracują u nas w biurze. Tylko w ten sposób możemy pracować nad ich rozwojem, podnosić ich umiejętności i kontynuować ciągłe szkolenie. U nas na miejscu mają dostęp do kompetencji kierowników projektów, którzy pomagają im i doradzają przy rozwiązywaniu złożonych problemów technicznych, architektonicznych i optymalizacyjnych. Doskonale rozumiemy potrzebę komunikacji z Klientem i zespołem technicznym Klienta. W początkowym okresie świadczenia outsourcingu możliwe jest ulokowanie zespołu programistycznego u Klienta po to, żeby wdrożyć się w projekt i zdobyć niezbędną wiedzę branżową. Później zwykle możliwe są spotkania kontrolne i projektowe np. raz w tygodniu.
Outsourcing programistyczny - czas potrzebny do startu
Staramy wychodzić się naprzeciw potrzebom naszych Klientów. Zazwyczaj jesteśmy gotowi do startu projektu w ciągu dwóch tygodni od podpisania umowy. W wielu przypadkach już po tygodniu przydzielamy kierownika, który rozeznaje się w projekcie i przeprowadza wszelkie niezbędne analizy, a także przystępuje do realizacji najpilniejszych potrzeb. Pomaga też w podjęciu decyzji, kto z naszych specjalistów najlepiej sprawdzi się w wyzwaniach konkretnego projektu.
W kolejnych tygodniach przydzielamy do projektu kolejne osoby. Zazwyczaj w ciągu miesiąca od podpisania umowy mamy już skompletowany pełen zespół. Za onboarding nowych ludzi odpowiada nasz kierownik projektu, który działa w nim od samego początku.
Ty decydujesz o formie zgłaszania zadań
Jesteśmy elastyczni i dopasujemy się do systemu zarządzania projektami i czasem pracy Klienta. Ale jeśli nie masz zorganizowanego tego aspektu, nie ma najmniejszego problemu, pomożemy Ci ze wszystkim. Jeśli zechcesz, zorganizujemy w Twojej firmie odpowiednie środowisko programistyczne i projektowe. Możemy też skorzystać z naszej infrastruktury, aby sprawnie zarządzać Twoim projektem.
Ty decydujesz o celach i zadaniach, my dbamy o wykonanie, organizację, transparentność i płynność współpracy.
Wynajem specjalistów IT - outsourcing programistów
Specjaliści mogą wykonywać samodzielne zadania, lub stanowić wsparcie w Twoim zespole. Delegowana może być zarówno pojedyncza osoba, jak i cały zespół wykonujący projekt. Posiadamy wiedzę i kompetencje aby zbudować dla Ciebie indywidualnie dopasowany team, odpowiedni do realizacji konkretnego projektu. Opowiedz nam o swoim projekcie, wskaż jego cele, technologie w jakich chciałbyś działać, a my dostarczymy Ci zespół spełniający wszystkie wymagania.
Wyróżniamy się wysoką elastycznością i szybkością działania. Klienci chwalą nasz profesjonalizm, samodzielność i inicjatywę. Doskonale znamy i rozumiemy specyfikę wielu branż i rodzajów systemów. Jesteśmy w stanie szybko i dobrze dobrać specjalistów do konkretnych projektów, precyzyjnie spełniając wymagania w Twojej firmie.
Firma programistyczna – Outsourcing
Outsourcingowa firma programistyczna jest o wiele stabilniejszym rozwiązaniem, jeżeli chodzi o budowanie stabilnego zespołu. Dzięki niej większego problemu nie stanowi na przykład odejście kierownika projektu. Nawet jeżeli outsource'owany specjalista odejdzie z projektu, to solidny dostawca outsourcingu powinien mieć gotowe scenariusze na taką okoliczność, najprawdopodobniej dysponując odpowiednimi zasobami na zastępstwo oraz kompetencjami, by sprawnie zrekrutować nowego człowieka na to stanowisko.
W przypadku współpracy z zewnętrzną firmą programistyczną o wiele łatwiejsze będzie też zaradzenie zmieniającym się zapotrzebowaniem na zasoby. Dostawca oprogramowania może po prostu przesunąć programistów do innych projektów. Jest to łatwiejsze niż kosztowne i trudne emocjonalnie dla wewnętrznego zespołu IT zwalnianie pracowników. Firma programistyczna sama będzie proponowała najlepsze narzędzia i technologie potrzebne do rozwiązania problemu. Niektóre firmy programistyczne mają kompetencje w wielu dziedzinach programowania, co ułatwia rozwój na różnych polach, tworzenie różnorodnych produktów i pozwala na sprawniejsze podążanie za trendami technologicznymi.
Outsourcing kompetencyjny
O klasycznym outsourcingu mówi się najczęściej w kontekście niedoboru, brzydko mówiąc, siły roboczej. Natomiast gdy zapotrzebowanie klienta skupia się na bardzo wysokich kwalifikacjach, potrzebnych w krytycznych momentach realizacji projektu, często w obszarze zainteresowań znajduje się outsourcing kompetencyjny.
Outsourcing kompetencyjny polega na czasowym zaangażowaniu w projekt wysokiej klasy eksperta w danej dziedzinie. Z założenia człowiek taki będzie potrzebny jedynie przez ograniczony czas, zatem na ogół jego zatrudnienie na stałe nie ma sensu. Dodatkowo ekspert taki często nie angażuje się w bieżące prace zespołu, lecz pełni bardziej funkcje doradcze. Zatem niekoniecznie musi być w dany projekt zaangażowany w pełnym wymiarze pracy i może równolegle pracować na rzecz różnych klientów.
Outsourcing kompetencyjny w obszarze IT przynosi największą korzyść w obszarach, w których stały zespół nie ma kompetencji i jednocześnie kompetencji tych nie ma sensu budować. Najczęściej są to kwestie związane z:
- projektowaniem kluczowych elementów architektury powstających systemów,
- integracją i wymianą danych z zewnętrznymi, niestosowanymi w danej organizacji systemami i narzędziami,
- koniecznością użycia nieznanej w zespole lub w ogóle mocno nietypowej technologii,
- zagadnieniami wymagającymi szczególnie wysokich kompetencji technicznych, jak np. optymalizacje algorytmiczne.
Outsourcing programistów – use case
Załóżmy że jesteś szefem sporego zespołu IT. Dział kadr (Human Resources) działa świetnie i błyskawicznie wyszukuje dla Ciebie specjalistów, kiedy tylko są potrzebni. Masz świetnych kierowników, więc nie zdarzają się opóźnienia na projektach. No i masz wielką swobodę działania, bo nikt nie rozlicza Cię z liczby etatów programistów w firmie. Cały dział IT chodzi jak w zegarku. Krótko mówiąc, masz komfortową sytuację, o jakiej wielu może tylko marzyć. Czy myślisz o współpracy z firmą outsourcingową? Pewnie nie. Czy powinieneś zacząć o niej myśleć? Jesteśmy przekonani, że tak.
Jeśli myślisz sobie teraz, że za chwilę przeczytasz kolejny artykuł o tym, że outsourcing programistyczny jest lepszy niż własny zespół IT, to jesteś w błędzie. Nie w tym rzecz, własny dobry i sprawdzony zespół jest niezastąpiony. Dlaczego więc nawet go mając, warto spróbować outsourcingu IT? Właśnie po to, by wypróbować, jak outsourcing programistów działa w praktyce.
Nie przewidujesz takiej potrzeby? Nic jej nie zapowiada? Cóż, życie jest pełne niespodzianek i niepewności, a dobry szef jest zawsze przygotowany na najgorsze. Możliwych scenariuszy jest wiele: masowe odejście informatyków, wyjątkowo trudny projekt wdrożeniowy albo gwałtowny rozwój firmy. Ale skończmy z banałami. To wie każdy. Każdy też wie, że jeśli taki problem zaistnieje, to można skorzystać z outsourcingu. Ale niestety nie każdy wie, jak to funkcjonuje w praktyce.
Outsourcing od kuchni
Pomińmy już kwestie oczywiste, takie jak to, że znalezienie odpowiedniego dostawcy czy wynegocjowanie zadowalających warunków zajmuje czas, przez co może być (i zwykle jest) wielkim problemem w sytuacji, gdy nagle coś się w naszym perfekcyjnym świecie zawala. Chodzi też o nieco bardziej subtelne, lecz niemniej ważne kwestie. Jak sprawnie i bezkonfliktowo wkomponować ludzi z zewnątrz we własny zespół IT? Jakie ustalić zasady komunikacji? Jaki zaproponować podział obowiązków i odpowiedzialności? Jak ustalić priorytety? Kto przed kim odpowiada? I w jakim zakresie? Kto i w jakim obszarze podejmuje decyzje projektowe? Jakie zadania można powierzyć zewnętrznemu dostawcy, a jakie lepiej realizować własnymi siłami?
To tylko niektóre z pytań, jakie pojawiają się przy rozpoczęciu współpracy z dostawcą zespołów programistów. Nie ma na nie prostych odpowiedzi. Nie ma standardowych rozwiązań. One muszą być wypracowane na linii Twój zespół – dostawca. Być może przedstawione problemy teraz tak na oko nie wyglądają strasznie, ale pamiętaj, że mówimy o działaniu w sytuacji kryzysowej, gdy możesz zwyczajnie nie mieć czasu i chęci by się nimi zajmować. O ile lepiej by było, gdyby się przygotować? By pomimo kryzysu Twój dział nadal funkcjonował prawidłowo?
Możesz to osiągnąć, rozpoczynając współpracę z dostawcą outsourcingu programistów na przyjaźniejszym gruncie, gdy „nic się nie pali”. Gdy możesz ten model przećwiczyć na własnych warunkach, na wybranym przez siebie niekluczowym projekcie. Spokojnie zaczniesz współpracę, poznasz swojego dostawcę usług programistycznych i jego model pracy. Dowiesz się, jak to wszystko w praktyce działa. Dzięki temu zyskasz wiedzę praktyczną i będziesz przygotowany do działania gdy nadejdzie kryzys.
Właśnie dlatego wiele dużych firm korzysta z outsourcingu zespołów programistów. Nie dlatego, że muszą, ale dlatego, że chcą. Chcą wiedzieć, jak to jest pracować z zewnętrznym dostawcą usług programistycznych. Chcą mieć przećwiczony ten model współpracy na wypadek kryzysu. Bo wiedzą, że sprawdzony dostawca programistów, który umie z nimi współpracować, pomoże im ten kryzys złagodzić.
Dlatego, nawet gdy Twój dział IT jest dobrze naoliwioną, sprawnie działającą maszyną, dobrze mieć sprawdzonego dostawcę outsourcingu programistów i przećwiczoną współpracę z nim. Tak na wszelki wypadek. Bo nigdy nie wiesz, kiedy nadejdzie kryzys. Ale jak nadejdzie, będziesz gotowy.
Rozpoczęcie outsourcingu
Zanim zaczniemy współpracę z nowym Klientem, zadajemy szereg pytań, których celem jest rozpoznanie sytuacji technologicznej i organizacyjnej. Uzyskane odpowiedzi pozwalają nam lepiej dopasować ofertę do potrzeb Klienta.
Poniżej prezentujemy listę najważniejszych pytań, które zadajemy przyszłym Klientom:
- Jaki jest status projektu? Czy mamy do czynienia z zupełnie nowym przedsięwzięciem, czy też projekt już jest rozpoczęty? Czy jest realizowany planowo, czy może ma już jakieś opóźnienia? Skąd się wzięły?
- Jakie są technologie projektu? Czy już są ustalone, czy też powinniśmy coś zaproponować?
- Jakie są najbliższe cele, a jakie te najbardziej dalekosiężne? Czy już wiadomo, co będzie najważniejsze w najbliższym czasie?
- Czy nasz zespół ma działać samodzielnie? Czy też ma dołączyć do już istniejącego zespołu? A jeśli tak, to w jaki sposób? Czy dostaniemy jakieś osobne niezależne zadania, czy raczej będziemy działać razem nad tymi samymi zadaniami?
- Kto będzie kierował projektem? Czy po stronie Klienta będzie kierownik projektu, czy mamy się o to zatroszczyć sami? Jeśli jest kierownik po stronie Klienta, to czy jego kompetencje obejmują zarówno kwestie techniczne i biznesowe, czy tylko jeden z tych aspektów?
- Jak będzie zorganizowana komunikacja? Z kim będziemy się kontaktować, aby raportować postępy i status projektu? I jak często? Czy będą codzienne krótkie raporty (daily) i cotygodniowe sprinty? A może inna forma organizacji?
- Jaka jest oczekiwana metodologia prowadzenia projektu? Czy możemy liczyć na tyle duże zaangażowanie Klienta, aby zorganizować projekt w duchu scrum, czy też powinniśmy działać bardziej samodzielnie i uzgadniać jedynie najbardziej kluczowe kwestie?
- Z jakich narzędzi będziemy korzystać w projekcie? Czy Klient ma własne repozytorium kodu, środowisko devops, task managera? Jeśli tak, to jakie? Jeśli nie, to czy oczekuje, że mu to zorganizujemy? A może nie chce się tym zajmować i będziemy działać we własnym środowisku?
Czy na outsourcingu można polegać?
Naszym zdaniem outsourcing jest pewniejszy niż inne formy współpracy z programistami. Kwestie najbardziej oczywiste (jak większa elastyczność współpracy czy łatwy dostęp do specjalistów) zostały już wcześniej omówione. Tu chcemy zwrócić uwagę na inną kwestię - w przypadku profesjonalnego dostawcy outsourcingu oferuje on znacznie więcej, niż tylko siłę roboczą. Dobry dostawca outsourcingu bardzo dba o jakość relacji z klientem i oferuje wsparcie na bardzo szerokim froncie.
Doświadczenie zdobyte w innych projektach pomaga nie tylko w sferze ściśle technologicznej, lecz również organizacyjnej i biznesowej. Dobry dostawca usługi outsourcingowej nie jest tylko biernym wykonawcą, ale aktywnie podpowiada alternatywne rozwiązania wszelkich problemów, jakie można napotkać podczas realizacji projektu. Dla rzetelnej firmy programistycznej nie ma nic gorszego, niż projekt, który z jakiegoś powodu nie toczy się zgodnie z planem lub nawet całkiem stanął w miejscu. W takiej sytuacji pomoc doświadczonego dostawcy może być nieoceniona. Ostatecznie chodzi o to, by z powodzeniem zakończyć projekt i uzyskać od klienta dobre referencje.
Zawsze z dumą podkreślamy, że nasi kierownicy nierzadko byli proszeni o pomoc w rozwiązywaniu problemów, które dalekie były od kwestii czysto technicznych. Prowadziliśmy spotkania wewnętrzne, reprezentowaliśmy Klientów w spotkaniach z odbiorcami ich usług i produktów, a nawet prowadziliśmy mediacje. Wszystko po to, by doprowadzić do sukcesu projektu.
Outsourcing na pół etatu?
Czy jest możliwy outsourcing w niepełnym wymiarze pracy? Oczywiście, że tak. Jest wiele sytuacji, gdy jest to optymalne rozwiązanie. Outsourcing nie zawsze musi dotyczyć dużych projektów wymagających kilkuosobowych zespołów. Są projekty, w których ma sens znalezienie specjalisty dostępnego na pół czy nawet na jedną czwartą etatu. Najczęściej są to projekty o charakterze utrzymaniowym, w tym również takie, w których mamy do czynienia z przestarzałymi technologiami. Czasem również outsourcing na niepełny etat ma zastosowanie w przypadku usług konsultingowych i doradczych lub w sytuacji, gdy potrzebujemy bardzo doświadczonego eksperta, który nie tyle bezpośrednio będzie zajmować się programowaniem, co raczej pomoże w najtrudniejszych kluczowych aspektach projektu.
Jakie zasoby i procesy outsource'ować?
W dzisiejszych czasach możliwy jest outsourcing praktycznie dowolnych kompetencji, od pracowników niewykwalifikowanych do specjalistów (księgowi, prawnicy, wyższa kadra managerska). Należy więc odpowiedzieć sobie na pytanie, outsource'owanie w jakim obszarze przyniesie firmie najwięcej korzyści? Tutaj spojrzymy na temat ze znanej nam najlepiej perspektywy branży IT.
Wśród firm intensywnie korzystających z outsourcingu zwykło się mawiać, że "outsource'ować można wszystko poza kluczowymi procesami biznesowymi". Z pewnością jest w tym wiele prawdy. Można powiedzieć, że outsourcing programistyczny powinna rozważyć każda firma, która ma indywidualne potrzeby informatyczne, ale nie dysponuje własnym zespołem koderów i takiego zespołu nie chce na dłuższą metę utrzymywać.
Ale znane są nam również przypadki firm, których podstawową działalnością jest tworzenie produktów lub świadczenie usług programistycznych. Firmy takie również (i to wcale nierzadko) korzystają z outsourcingu. Dlaczego tak się dzieje?
Jak wiadomo w firmach programistycznych koderzy są kluczowym zasobem. Ale koder koderowi nie równy. Większość firm koncentruje się na wybranych technologiach, nie posiadając kompetencji w innych obszarach. A sytuacje, w których trzeba eksperta od jakiegoś nieznanego w zespole języka lub frameworka spotyka się dość często. Outsourcing programisty (lub zespołu), aby czasowo uzupełnić lukę kompetencyjną, wydaje się optymalnym rozwiązaniem.
Co więcej, wiele firm decyduje się również, aby outsourcować specjalistów w dokładnie tych samych technologiach, jakie są w firmie dobrze znane. Jaki w tym sens, skoro można powiększyć własny zespół? Właśnie taki, by zespołu nie powiększać. Zewnętrzna ekipa programistów pracująca na bieżąco z własnym zespołem pod wieloma względami zwiększa elastyczność. Gdyby nagle trzeba było zredukować skład przy jakimś projekcie, łatwiej to zrobić w przypadku pracowników outsourcowanych. Zwolnieni pracownicy rzadko wracają do tego samego pracodawcy. A firma nie powinna mieć większego problemu z powrotem do świadczenia tej samej usługi. Co więcej firma outsourcingowa może na ogół znacznie szybciej wprowadzić nowych ludzi do projektu, niż gdyby trzeba uruchomić procedury rekrutacyjne. Zatem kilka osób w zespole pracujących formalnie dla zewnętrznego dostawcy stanowi bardzo wygodny w zarządzaniu bufor. Co więcej, można się w taki bufor zaopatrzyć zanim jeszcze pojawi się nagląca potrzeba. Dzięki temu kiedy na gwałt potrzebni będą nowi ludzie, wszystkie ścieżki będą przetarte, procedury formalne załatwione, a dostawca sprawdzony w spokojniejszych czasach.
Ile firma może zaoszczędzić na outsourcingu?
Proste porównanie kosztów zaangażowania outsourcowanego zespołu z takim samym zespołem zatrudnionym wewnętrznie z pewnością nie wypada na korzyść dla outsourcingu. Jeśli założyć, że programista dostaje te same pieniądze, to konieczne jest również doliczenie marży firmy dostarczającej usługę. Jednak tak uproszona kalkulacja nie uwzględnia wielu innych kosztów. Do najważniejszych należą:
- koszty procesu rekrutacyjnego - rekrutacja specjalistów IT jest specyficzna i wymaga wyspecjalizowanego rekrutera (o czym można poczytać tutaj);
- koszty operacyjne - związane z "papierkową robotą" w obszarach kadr i księgowości,
- koszty administracyjne - czyli koszty przestrzeni biurowej, zużywania się sprzętu, użycia wszelkiego rodzaju materiałów;
- koszty onboardingu - związane z wprowadzeniem pracownika w kulturę firmową;
- koszty nietrafionej rekrutacji - statystyki są nieubłagane i raz na jakiś czas trafi się osoba niekompetentna lub niepasująca do zespołu;
- koszty realizacyjne - wynikają głównie z długotrwałego procesu rekrutacji i oznaczają, że otrzymamy finalny produkt później niż w przypadku zaangażowania gotowego zespołu;
- koszty organizacyjne - zauważalne przede wszystkim w sytuacjach losowych (np. choroby), gdy trzeba szukać zastępstwa lub liczyć się ze spowolnieniem prac;
- koszty zarządcze - związane z tym, że mocno ograniczony czas managerów jest w większej części przeznaczany na powyższe zagadnienia, zamiast na kluczowe procesy biznesowe.
Niektórych z tych kosztów są stosunkowo proste do oszacowania (jak rekrutacja czy opóźnienia realizacyjne), inne bardzo trudno określić, choć zdecydowanie nie należy ich pomijać (jak choćby koszty zarządcze). Rozsądne przybliżenie każdego z nich pozwoli na zdecydowanie bardziej miarodajny bilans porównawczy kosztów outsourcingu i własnego zespołu.
Cennik outsourcingu
Przeanalizujmy przykładowe koszty projektu programistycznego realizowanego w modelu outsourcingowym. Powiedzmy, że mamy projekt średniej wielkości, przewidziany dla kilkuosobowego zespołu na około pół roku pracy. Nasz przykładowy projekt obejmuje realizację aplikacji webowej wraz z aplikacją mobilną.
Do analizy posłuży nam poniższy przykładowy cennik outsourcingu:
Stanowisko | Stawka godzinowa netto | Koszt osobomiesiąca (160 godzin) netto |
---|---|---|
Analityk - kierownik projektu | 200 zł | 32 000 zł |
Programista back-end (Django) | 170 zł | 27 200 zł |
Programista front-end (Angular) | 170 zł | 27 200 zł |
Programista aplikacji mobilnych (React Native) | 170 zł | 27 200 zł |
Grafik/UX designer | 100 zł | 16 000 zł |
Tester | 80 zł | `12 800 zł |
Skoro mamy już ustalone stawki, określmy również zaangażowanie czasowe poszczególnych pracowników przy naszym hipotetycznym projekcie. Pozwoli nam to obliczyć koszty całkowite outsourcingu:
Stanowisko | Zaangażowanie czasowe | Koszt całkowity netto |
---|---|---|
Analityk - kierownik projektu | 3 osobomiesiące | 96 000 zł |
Programista back-end (Django) | 3 osobomiesiące | 81 600 zł |
Programista front-end (Angular) | 2 osobomiesiące | 54 400 zł |
Programista aplikacji mobilnych (React Native) | 2 osobomiesiące | 54 400 zł |
Grafik/UX designer | 1 osobomiesiąc | 16 000 zł |
Tester | 1 osobomiesiąc | 12 800 zł |
Razem | 315 000 zł |
Powyższa analiza kosztowa przykładowego projektu może być pomocna w zrozumieniu istotnej przewagi outsourcingu nad budowaniem własnego zespołu.
Przy założeniu, że w znacznej mierze pracownicy na poszczególnych stanowiskach pracują równolegle, można przyjąć, że czas realizacji tego projektu informatycznego możemy szacować na jakieś 4 miesiące kalendarzowe.
Chcąc zastąpić outsourcowany team analogicznie własnym zespołem mamy zasadniczo dwa wyjścia:
- zbudować dokładnie taki sam zespół, aby szybko osiągnąć zamierzony cel,
- zbudować mniejszy zespół, licząc się z tym, że realizacja projektu zajmie więcej czasu.
Wariant 1 - budujemy pełen zespół
Załóżmy więc, że w ciągu miesiąca udało się nam zbudować 6-osobowy zespół o wymaganych kwalifikacjach. Przyjmijmy również, że każdego z pracowników zatrudniamy za 50% stawki, którą dostałaby firma outsourcingowa. Być może w pierwszym odruchu możnaby przyjąć, że koszty realizacji projektu wyniosą 50% kosztów z pozycji suma w tabeli, czyli około 125 tysięcy zł netto.
Zauważmy jednak, że grafika czy testera potrzebujemy tylko na miesiąc. Czy też raczej na osobomiesiąc, bo niekoniecznie ich pracę da się skompresować do jednego ciągłego miesiąca kalendarzowego. Musimy ich zatem zatrudnić na dłużej. Podobnie sytuacja wygląda z programistami, a nawet z kierownikiem, który również nie musi być zaangażowany w pełnym wymiarze pracy przez cały czas trwania projektu.
Możemy oczywiście rozłożyć rekrutację w czasie, tak aby specjalistów zatrudniać stopniowo, wraz z biegiem projektu. Oznacza to jednak większe narzuty organizacyjne i ryzyko, że nie uda się zakończyć rekrutacji na czas. Ale nawet wówczas najprawdopodobniej nie uda się całkiem wyeliminować "pustych" osobomiesięcy.
Przyjmijmy zatem, że średnio na specjalistę przypada 1/3 czasu, kiedy nie jest on absolutnie niezbędny w projekcie. Zatem do naszej kwoty 125 tysięcy musimy doliczyć około 40 tysięcy narzutu, co daje nam łączny koszt około 165 tysięcy zł netto. Nadal jest to o prawie sporo mniej, niż koszt outsourcingu, ale zauważmy, że wszystkie koszty organizacyjne nie są w tu wliczone. Do tego musimy wziąć pod uwagę fakt, że niektórzy specjaliści nie będą chętni do zatrudnienia na krótki termin, co może wpłynąć na czas rekrutacji. No chyba że zdecydujemy się zatrzymać ich na dłużej. Ale to są dodatkowe koszty.
Wariant 2 - budujemy mniejszy zespół
Możemy zadać sobie pytanie: czy do tego projektu potrzebujemy aż 6 specjalistów? Czy nie można znaleźć sobie tylko jednego lub dwóch programistów, którzy zrealizują projekt w dłuższym czasie? Może da się znaleźć również grafika - freelancera, a testowanie przeprowadzić wewnętrznie?
Oczywiście można pójść w tym kierunku. Załóżmy, że zatrudniamy jednego bardziej doświadczonego programistę w roli kierownika (odpowiednik analityka), który zajmie się również back-endem oraz programistę front-end, znającego się na aplikacjach mobilnych. Nasz projekt jest łącznie obliczony na 10 osobomiesięcy prac analityczno-programistycznych. Przyjmijmy więc, że nasi dwaj specjaliści dzielą się tym czasem po połowie. Jeśli weźmiemy połowę stawki kierownika i połowę front-endowca, to w skali 5 miesięcy otrzymamy łączny koszt o wysokości prawie 120 tysięcy, bez uwzględnienia prac graficzno-projektowych i testów. Freelancera do grafiki i UX może uda się zakontraktować za jakieś 5 tysięcy, a testować może któryś z pracowników firmy. Można zatem przyjąć, że udało się zaoszczędzić prawie połowę kosztów (optymistycznie nie liczymy kosztów pracy wewnętrznego "testera").
Jednak czas realizacji prac programistycznych wydłużył nam projekt z początkowych 4 miesięcy do pięciu. Doliczmy miesiąc na testy i kolejny na rekrutację oraz onboarding (bardzo optymistyczne założenie), a czas realizacji projektu wydłużył się nam o 50%.
Pomińmy tutaj koszty rekrutacji, wszelkich sytuacji losowych, czas urlopów i skupmy się na fakcie, że otrzymamy końcowy produkt prawie dwa miesiące później. No i czas zadać ważne pytanie - ile by zaoszczędziła firma, gdyby system był wdrożony wcześniej? Czy stać nas na takie opóźnienia?
Podsumowanie
Podsumowując, kwestia oceny kosztów outsourcingu nie jest prosta. I choć może finansowo usługa ta wydaje się kosztowna, to jednak biorąc pod uwagę wszystkie nakłady konieczne przy samodzielnej realizacji projektu, wcale tak nie musi być.
W każdym wypadku temat należy analizować indywidualnie. A może zamiast tracić kosztowny czas managementu na tego typu rozważania, lepiej skupić się na wyborze solidnego dostawcy?