#8 — Z kim budować software – z własnym zespołem czy z zewnętrzną agencją?

W tym odcinku analizuję wybór, przed którym stają decydenci w różnych organizacjach, gdy konieczne jest wytworzenie oprogramowania czy nawet szerzej – wdrożenie systemu informatycznego, niekoniecznie szytego na miarę. Z jednej strony – budowanie zespołu wewnętrznie, a z drugiej – podjęcie współpracy z zewnętrzną agencją. A może warto zastosować "trzecią drogę", czyli rozwiązanie pośrednie?

💡
Spodobał Ci się ten odcinek? Zasubskrybuj mój podcast na swojej ulubionej platformie i podziel się nim ze znajomymi!

Transkrypcja odcinka

Cześć, nazywam się Krzysztof Rychlicki-Kicior i witam cię serdecznie w podcaście „Software z każdej strony”, w którym dowiesz się, jak łączą się ze sobą świat biznesu i IT.

To jest odcinek ósmy — „Z kim budować software? Z własnym zespołem czy z zewnętrzną agencją?". W tym odcinku przeanalizujemy takie dwa typowe scenariusze, możliwości, przed którymi często stają decydenci w różnych organizacjach, gdy pojawia się potrzeba stworzenia oprogramowania, czy nawet wdrożenie jakiegoś systemu informatycznego. Co ważne, nie chodzi tu jedynie o systemy szyte na miarę, choć oczywiście te są najbliższe mojemu sercu, ale ogólnie o różne rozwiązania informatyczne. Z jednej strony w takiej sytuacji możemy zbudować system wewnętrznie, w ramach naszej organizacji, wtedy mówimy, że jest to rozwiązanie in house. Z drugiej strony można skorzystać z pomocy zewnętrznej agencji, firmy informatycznej i jak to zwykle w takich dwóch skrajnych przypadkach, można też rozważyć trzecią drogę, czyli rozwiązanie pośrednie i za chwilę poruszymy ten temat w szczegółach.

Temat dzisiejszego odcinka jest dość specyficzny biorąc pod uwagę to kim jestem i co robię w życiu. Jeśli trafiasz na ten odcinek w oderwaniu od innych to przypomnę tylko, że prowadzą software house, czyli firmę tworzącą oprogramowanie dedykowane, więc można powiedzieć, że odpowiedź na postawione pytanie mogłaby być z. mojej strony bardzo tendencyjna. Oczywiście, zawsze lepiej wybrać software house, na wszystkie problemy i bolączki życiowe skorzystaj z usług firmy Makimo. Natomiast nie o to chodzi w moim podcaście, oczywiście są takie sytuacje, w których działalność takich firmy software housowych ma jak najbardziej sens, ale przyjrzymy się tutaj obu wariantom odrębnie i postaram się wskazać, kiedy warto faktycznie pójść na rękę z software housem, a kiedy może lepiej zbudować zespół wewnętrznie.

Podjęcie tej niewątpliwie ważnej decyzji może zależeć od kilku czynników, które sobie omówimy, zarówno od wielkości organizacji, jej struktury, nawet troszkę od branży. Natomiast paradoksalnie oba podejścia mogą być możliwe do zastosowania, ale na różnych etapach cyklu życia danego projektu.

Jak zawsze, zacznijmy od dobrego zdefiniowania problemu, załóżmy, że masz firmę, jesteś członkiem zarządu, dyrektorem, czy kierownikiem działu w jakiejś większej organizacji i mierzysz się z pewnym problemem kiedy nagle w twojej głowie rodzi się pomysł; a gdyby tak do rozwiązania tego problemu skorzystać z jakiegoś rozwiązania informatycznego? W końcu widziałam/widziałem to w firmie konkurencyjnej, albo w zupełnie innej organizacji, IT jest teraz niezwykle modne, może uda się rozwiązać problem w taki właśnie sposób.

Zostawmy na moment samo założenie takiego pomysłu, bo wcale nie musi ono być właściwe, czasami pomóc mogą usprawnienia procesowe, niekoniecznie wymagające od razu zaprzęgnięcia oprogramowania, natomiast przyjmując, że pomysł jest dobry, mamy na stole w zasadzie dwie główne opcje i kilka wariantów pośrednich. Możemy oczywiście zbudować stosowną komórkę organizacyjną, która zajmie się tworzeniem czy wdrażaniem oprogramowania i warto wspomnieć, że zrzucenie tej odpowiedzialności po prostu na dział IT może nie być dobrym pomysłem, to sporo zależy od organizacji. Ponieważ w wielu firmach działy IT zajmują się utrzymaniem i wsparciem infrastruktury i oprogramowania, które już istnieje i niekoniecznie taki dział musi mieć kompetencje, pracownicy w nim zatrudnieni, aby oprogramowanie móc stworzyć. Nie chodzi tylko o to, że ten czy inny specjalista z działu IT potrafi programować, do stworzenia oprogramowania potrzebne jest wiele kompetencji i samo to, że ktoś coś zaprogramuje to zdecydowanie za mało. Tak więc możemy stworzyć sobie taką jednostkę, natomiast możemy też skorzystać z firmy zewnętrznej. Tutaj stety czy niestety jest wiele kryteriów wyboru, o których opowiem nieco później, ale generalnie szukamy firmy, która pomoże nam opracować i wdrożyć rozwiązanie dla naszego problemu. Możemy też pokusić się o rozwiązania hybrydowe, jak to zwykle w przypadku dwóch skrajnych sytuacji, czyli na przykład skorzystać z tych zasobów, które w firmie już mamy, ale wzmocnić je jakimiś zewnętrznymi konsultantami czy pracownikami na zlecenie z agencji. Natomiast tutaj jest też kilka scenariuszy, które ja pokrótce omówię, ale co do zasady te hybrydowe rozwiązania zasługują na swój własny odcinek i szerzej wrócimy do nich w przyszłości.

Budowanie zespołu in house ma sens, kiedy jesteś w stanie poradzić sobie z dwoma głównymi ryzykami, które można powiedzieć, że są w pewien sposób dwoma stronami tej samej monety. Z jednej strony potrzebujesz kogoś, kto będzie wiedział w jaki sposób poprowadzić projekt od strony technicznej, jak dobrać technologię, koncepcje, rozwiązania, jego architekturę, jak go rozwijać, ale przede wszystkim jak zgrać projekt z resztą biznesu. Z drugiej strony potrzeba oczywiście również wykonawców tego projektu i oba te ryzyka sprowadzają się do jednego problemu, czy też wyzwania, w jaki sposób pozyskać ludzi do zespołu. To jest oczywiście problem rekrutacyjny czy HR-owy, natomiast warto przy tym mieć świadomość jaka jest aktualnie sytuacja na rynku pracy. Na ten moment, czyli na połowę roku 2022, sytuacja ta dobra z pewnością nie jest. W przypadku kierownika takiego zespołu musimy mieć pewność, że będzie on w stanie poprowadzić taki projekt na odpowiednio wysokim poziomie i co ważne, dowieźć wartość zwłaszcza w zakresie danej branży. Co nam po skutecznym, technicznym wdrożeniu jeżeli projekt nie przyniesie organizacji pewnych określonych korzyści? Wspomniałem, że znalezienie specjalistów, programistów jest obecnie trudne, ta trudność w znalezieniu specjalisty rośnie już nawet nie do kwadratu a nawet powiedziałbym do sześcianu, nie chcę brzmieć za bardzo pesymistycznie, ale trzeba być świadomym skali trudności zadania. Przeanalizujmy kilka korzyści i pozytywnych scenariuszy kiedy faktycznie warto zespół zbudować u siebie.

Przede wszystkim stosunkowo dobrym pomysłem jest uruchomienie zespołu u siebie gdy projekt jest mały, gdy przedsięwzięcie, które chcemy zrobić albo z założenia nie ma dużego zakresu, albo projekt ma być prototypem, chcemy sprawdzić czy taka koncepcja faktycznie w jakiś sposób pomoże. Oczywiście mały projekt wymaga mniejszej liczby osób, stanowi z reguły mniejsze wyzwanie jeśli chodzi o kompetencje specjalistów, w związku z czym znalezienie ludzi przestaje być już tak dużym problemem. A jednocześnie dla firm zewnętrznych mały projekt nie zawsze musi być dobrym wyborem, nie zawsze musi być atrakcyjny, sporo zależy od wielkości takiego dostawcy rozwiązań, natomiast z pewnością znajdą się firmy, które podjęłyby się zadania, natomiast trzeba podjąć decyzję w zależności od konkretnego projektu.

Kolejnym kryterium, które może skłonić cię do uruchomienia zespołu wewnętrznie jest określenie czy projekt wymaga wyjątkowo sporej integracji z dużą liczbą działów, co wiąże się ze współpracą z licznymi pracownikami, bo im więcej działów i pracowników potrzeba, aby ustalić zakres projektu, tym trudniej jest zaangażować zewnętrzną agencję, bo i kontakt w takiej sytuacji pomiędzy organizacjami może w pewien sposób być utrudniony. Oczywiście dzięki nowoczesnym technikom komunikacji ten problem troszeczkę maleje w ostatnich latach, natomiast wciąż jeden, dwóch pracowników na miejscu prawdopodobnie mogą uzyskać informacje, skomunikować się z innymi pracownikami nieco sprawniej.

Wreszcie mamy do czynienia też z kryterium formalno-technicznym, czyli dostęp do wewnętrznych zasobów firmy. To dotyczy zwłaszcza dużych organizacji, korporacji, może się po prostu okazać, że podjęcie współpracy z zewnętrzną agencją to proces bardzo rozbudowany, wymaga przejścia procedury pozyskania dostawcy, to jest często kwestia analizy bardzo wielu długich umów, z wieloma załącznikami i może się okazać, że jest to spore wyzwanie i w takiej sytuacji po prostu prościej jest zatrudnić jedną czy dwie osoby do realizacji jakiegoś zadania. Od strony technicznej może być kwestia dostępów przez usługę VPN, nie zawsze polityka firmy w zakresie bezpieczeństwa może zezwalać dostęp osobom spoza organizacji, są bardzo różne niuanse formalne i poniekąd techniczne, które mogą utrudnić pracę z agencją i przynajmniej w celu walidacji pomysłu zatrudnienie osób może nie być złym pomysłem.

Skoro omówiliśmy już kilka przypadków, w których warto podjąć się zadania budowania zespołu w ramach organizacji, to przejdźmy do drugiej strony medalu, czyli kiedy warto podjąć współpracę z agencją? W taki naturalny sposób kiedy warunki omówione przed chwilą nie mają miejsca, kiedy takie sytuacje nie mają miejsca, czyli jest kwestia współpracy z większym zespołem, nie występują te ograniczenia formalne, ewentualnie kiedy projekt da się względnie łatwo odseparować od wielu działów w firmie i wyodrębnić pewien zespół osób po stronie twojej organizacji, która brałaby udział w projekcie, wtedy ta współpraca z zewnętrzną firmą ma niewątpliwie znacznie więcej sensu. Ale co poza tym? Bo to jest kwestia dość oczywista. Przede wszystkim dużym plusem zespołów, które pracują w firmach zewnętrznych w takim modelu agencyjnym jest zgranie zespołu. Zdarza się często, że ludzie z jednej firmy mieli już okazję pracować ze sobą, a jeżeli nawet nie to znają się bo pracują w tym samym miejscu. Nawet jeżeli taka sytuacja nie ma miejsca, to ta odpowiedzialność za zgranie zespołu spada już nie na twoje barki, a na barki takiej firmy. Z tym zagadnieniem wiąże się jeszcze jedna ważna kwestia, a mianowicie know-how, w przypadku wystąpienia w projekcie problemów, nie czarujmy się, każdy projekt takie problemy zawiera, w każdym projekcie takie problemy się przytrafiają i klasą zespołu czy klasą organizacji jest to w jaki sposób z tymi problemami jest w stanie sobie poradzić. W przypadku firmy zewnętrznej, nawet jeżeli w zespole pojawia się jakiś problem, który trudno jest rozwiązać, to zespoły takie mogą liczyć na wsparcie innych pracowników, innych doświadczonych seniorów, architektów czy team leaderów, a nawet w niektórych przypadkach na poziomie CTO czy innych technicznych członków zarządu. Nawet kilka dni temu w Makimo musieliśmy się uporać z niuansami zautomatyzowanego wdrożenia aplikacji mobilnej na platformę iOS i po paru dniach walki zespół miał pewne trudności związane z aspektem automatyzacji, ale z kolei przydało się tu moje doświadczenie i z chęcią pomogłem ekipie, choć na co dzień już nie programuję, to moje doświadczenie sprzed lat i ich wiedza na temat automatyzacji razem dały pozytywny efekt i udało nam się rozwiązać ten problem. Teraz aplikację w danym projekcie budują się automatycznie bez problemu i trudno jest uzyskać taki efekt gdy mamy tylko swój zespół wewnętrzny in house, bo do kogo właściwie taka ekipa może zwrócić się o pomoc? Inaczej wygląda sytuacja gdy w firmie mamy już inne takie zespoły, natomiast jest to jedno z kryteriów, o których mówiłem na początku.

Kolejny ważny czynnik to ciągłość współpracy, to jest temat, który może brzmieć dość paradoksalnie, gdy poruszam go w kontekście współpracy z agencją jako pewna zaleta, bo przecież my sami spotykaliśmy się wielokrotnie z sytuacjami gdy w razie pewnych drobnych konfliktów między nami jako agencją, a pracownikami to klient czy product owner, sponsor projektu stawał po stronie pracowników, bo w końcu to są jego pracownicy. Natomiast prawda jest taka, że przy wieloletniej współpracy pomiędzy firmą, a jej klientem dochodzi dość często, zwłaszcza w obecnych czasach do rotacji pracowników. My tak wewnętrznie sobie żartujemy, że mamy kolejne pokolenia pracowników, bo przez rok, dwa, współpracujemy z jakąś osobą, z jakimś zespołem, a potem te osoby się zmieniają, przychodzą następni i następni. W najdłuższych naszych współpracach dochodziło już do takiej rotacji cztery, pięć razy. Natomiast przy wieloletniej współpracy oczywiście u nas tez może dojść do wymiany pracowników, natomiast istotną zaletą takiej firmy i agencji jest to, że powinna ona dbać o utrzymanie know-how po swojej stronie, dzięki czemu klient ponosi znacznie mniejsze ryzyko i jest w stanie stabilniej budować biznes w oparciu o te projekty, które realizuje z zewnętrzną firmą.

Kończąc takim argumentem troszkę bardziej organizacyjnym, współpraca z firmą zewnętrzną to krótko mówiąc nie tylko outsourcing ludzi, ale również outsourcing problemów związanych z kadrami. Kwestia zakupu nowego sprzętu, licencji na oprogramowanie, szkoleń, benefitów różnego rodzaju, rozwiązywanie problemów kadrowych, to wszystko spada na firmę zewnętrzną, to nie jest już twój problem. Oczywiście to są korzyści, które można by wymienić przy różnych współpracach o charakterze outsourcingowym, natomiast w przypadku naszej branży IT nie da się ukryć, że te oczekiwania kadrowe są wyjątkowo wysokie, w związku z czym nie mogłem tego pominąć.

Na zakończenie dość pobieżnie omówię rozwiązania hybrydowe, bo przenoszenie ciężaru wyłącznie na własną organizację, lub wyłącznie na firmę zewnętrzną nie zawsze jest optymalne. Jest to na tyle szeroki temat, iż uznałem, że omówię go szczegółowo w jednym z przyszłych odcinków, natomiast żeby już teraz troszeczkę tą ciekawość zaspokoić omówię kilka najważniejszych przypadków.

Takim klasycznym scenariuszem jest współpraca ze start-upem, gdy start-up powstaje ma pewne grono założycieli, czasami wśród samych founderów jest już CTO, czasami CTO jest jako pierwsza osoba techniczna wynajmowany czy zatrudniany, natomiast jedną z kluczowych decyzji jest właśnie podjęcie decyzji na temat współpracy z zewnętrzną firmą, bądź rekrutacją wprost do start-upu. I dość częstym scenariuszem jest taki, w którym CTO jest członkiem ekipy start-upowej, a zespół wykonujący i implementujący oprogramowanie pochodzi właśnie z firmy zewnętrznej. Tutaj zwłaszcza doświadczenie know-how zespołu, które pomaga rozwinąć start-up na jego wczesnych etapach powstawania jest po prostu kluczowe.

Drugi przypadek to podział współpracy na dwie części według kompetencji, na przykład część backendowa aplikacji, czyli część serwerowa, która wiąże się z wykorzystaniem danych organizacji jest realizowana wewnątrz organizacji, a część wizualna, frontowa czy mobilna jest realizowana w firmie zewnętrznej. Tutaj oczywiście jest konieczność nawiązania precyzyjnej komunikacji, ustalenia jej reguł co nie jest rzeczą prostą i jest tu wiele wyzwań, o których na pewno będziemy sobie opowiadać, natomiast z pewnością pozwala to na uzyskanie większej elastyczności dla organizacji, która decyduje się na taki ruch.

Trzecim scenariuszem jest budowa pierwszej wersji, prototypu czy MVP przez software house po to, aby w miarę sprawnie uzyskać już działające rozwiązanie, najlepiej dające jakąś wartość klientom, a później stopniowe przejmowanie kompetencji przez zespół wewnętrzny. Tutaj oczywiście może być to takie typowo stopniowe przejęcie, w którym powoli pracownicy organizacji dołączają i współpracują z zespołem zewnętrznym, czasami zdarza się, że to przejęcie jest nieco bardziej nagłe, natomiast wtedy trzeba zadbać o jakość dokumentacji, procesu przekazania, aby ekipa, która będzie zajmować się projektem w przyszłości nie miała większych problemów.

Tak jak wspomniałem, na tym kończymy dzisiejszy odcinek, zagadnienia hybrydowe na pewno omówimy sobie szerzej przy innej okazji, mam nadzieję, że to dzisiejsze rozróżnienie, ta analiza troszeczkę pomoże przy podejmowaniu decyzji, gdybyście mieli jakieś konkretne pytania i rady to chętnie pomogę i wesprę jakąś opinią po analizie każdego przypadku. Bo to o czym też wspominałem, tu jest bardzo wiele kryteriów, które trzeba rozważyć, trudno powiedzieć, że projekty w technologii X robimy tak, a projekty w branży Y, czy Z robimy inaczej, tak że z pewnością trzeba analizować każdy przypadek osobno.

Na dziś już się z wami żegnam, dziękuję za wysłuchanie tego odcinka, zachęcam do lajkowania, subskrybowania materiałów, jestem ciekaw czy stali słuchacze zauważyli pewne zmiany w brzmieniu tego odcinka, mam nadzieję, że tak i mam nadzieję, że na lepsze, natomiast z wszelkimi komentarzami, opiniami możecie uderzać do mnie na każdy możliwy sposób jaki jesteście w stanie znaleźć w internecie. Przez pocztę, LinkedIn, Facebooka, w miarę możliwości czasowych postaram się zareagować.

Dzięki raz jeszcze za dzisiejszy odcinek i do usłyszenia.