Freelancer and software house - why such a difference?

1 marca 2021
Jakub Rojek Jakub Rojek
Photo by Andrea Piacquadio from Pexels (https://www.pexels.com/photo/woman-sitting-on-chair-while-leaning-on-laptop-3791136/)
Kategorie: Współpraca, Branża, Dla klientów

Dobierając wykonawcę oprogramowania dla swojego projektu, przedsiębiorca musi rozważyć wiele aspektów - jakość, czas trwania projektu, a przede wszystkim cenę. Jednak te rzeczy, składające się na wierzchołki słynnego trójkąta, z którego można wybrać maksymalnie dwa atrybuty, są często cechami, które trudno ocenić na pierwszy rzut oka (chyba że mamy recenzje od zadowolonych lub niezadowolonych klientów). Znacznie prościej jest estymować to, w jakim stopniu wykonawca będzie miał zasoby na zajęcie się projektem, a więc poznanie liczby osób, która jest przewidziana do pracy. I tutaj prawie dochodzimy do meritum dzisiejszego tekstu.

W przypadku software house'ów (lub firm pokrewnego typu; dla uproszczenia wszystkie będę dzisiaj wrzucał do jednego worka) pytanie jest jak najbardziej zasadne - zwykle tylko najbardziej... hmmm... oczarowani swoim własnym pomysłem uważają, że wykonawca bez mrugnięcia okiem przeznaczy na ich potrzeby calutki zespół. Tak się może stać tylko wówczas, gdy projekt finansowo zaspokoi potrzeby całej firmy na czas realizacji, a to dzieje się niezwykle rzadko. To, rzecz jasna, oznacza koszty i w związku z tym, niekiedy zawiedzeni klienci proszą o opinię inną grupę wykonawców, jaką są freelancerzy. W ich przypadku wiadomo, że głównie pracują samemu i nie są "uwiązani" żadnymi szefami, choć domyślam się, że siłą rzeczy czasem muszą współpracować z innymi podmiotami w szczególnych sytuacjach (grafika, administracja itd.). I teraz dochodzimy do clou dzisiejszego tekstu.

Otóż w 90% przypadków freelancerzy, analizując ten sam projekt, który dostał też software house, wycenią go niżej. Czasami dużo niżej, do tego stopnia, że klienci pytają później zespół IT o to, czy ci żartują ze swoim oszacowaniem lub czy upadli na głowę. Takie sytuacje zdarzały się w mojej karierze (jako osoby z software house'u) parokrotnie i efekt był różny - czasami klient wybierał nas wierząc, że większy zespół lepiej sobie poradzi z zadaniem, czasem wybierany był freelancer, który również był w stanie dostarczyć najwyższą jakość, czasem klient rozumiał różnicę w wycenie i dopytywał, co software house zauważył, że cena jest wyższa, a niekiedy obrzucał inwektywami. I to jest meritum tekstu - skąd jest taka różnica cenowa i jak to się przekłada później na współpracę?

Zanim przejdę do wyjaśnień, chciałem zastrzec jedną rzecz - nie jest to tekst krytykujący ani freelancerów, ani software house'y. Tak samo nie jest to artykuł, w którym gloryfikuję jedną z tych stron (zwłaszcza, że nie tylko te dwa typy wykonawców uczestniczą w całej zabawie). Mało tego - nie jest to jakieś ujawnienie prawdy i niewidzialnej ręki wolnego software’u działającej w branży IT, gdyż nie ma tutaj czegoś takiego jak "prawda". Wszystko zależy od potrzeb, konkretnych ludzi, ich doświadczenia oraz punktu widzenia. Także bardzo proszę traktować to jako moje przemyślenia i próbę objaśnienia, jak to wygląda od środka.

Pierwsza sprawa - nie bez powodu wspomniałem o liczbie osób w zespole. Software house ma to do siebie, że składa się z programistów o różnych specjalizacjach, predyspozycjach i doświadczeniu. A że projekty bywają różne i stawiają nacisk na inne cechy (mogą celować w estetykę, wydajność, wykorzystanie konkretnej technologii itd.), to członkowie zespołu muszą być dobrani odpowiednio. Przykładowo, u nas w Wilda Software (jak zresztą w każdej firmie zajmującej się oprogramowaniem) są osoby lepiej orientujące się w aplikacjach mobilnych, inne znacznie szybciej wskoczą w projekty javascriptowe, a jeszcze inni potrafią przygotować backend odpowiedni dla większych systemów. To jest jednak pewnie oczywiste. Natomiast to, o czym część osób nie myśli w przypadku takich zespołów, to przepływ komunikacyjny - bardzo często zdarza się, że osoby pracujące nad danym projektem i natrafiające na konkretne wątpliwości, konsultują się z innymi programistami firmy w celu znalezienia najlepszego rozwiązania, dzięki czemu szybciej "popychają" pracę do przodu lub omijają wcześniej zauważone trudności. Jak najbardziej mogą to robić - to jedna z pięknych cech zespołów i warto docenić wymianę informacyjną, do której są zdolni, a co przekłada się później na lepszą współpracę z klientem.

W przypadku freelancera zapewne wygląda to nieco mniej "efektownie" - są zdani głównie na siebie i o ile też zapewne konsultują się z innymi osobami z IT oraz freelancerami (szczególnie, jeśli wynajmują jakąś przestrzeń co-workingową), to nie mają w tym aż takiej swobody, jaka charakteryzuje software house. Zauważmy też, że "samotni jeźdźcy" (przynajmniej ci, których znam) biorą zlecenia obracające się wokół projektów o podobnym charakterze, w których są specjalistami i faktycznie w ich zakresie stanowią jednoosobową armię. Oczywiście, "podobny charakter" nie oznacza, że taśmowo klepią identyczne projekty, ale trudno się spodziewać, aby freelancer nagle ze sklepów internetowych przeskoczył np. do rozproszonych systemów drukowania opartych o mikroserwisy. Być może jestem niedoinformowany i tak się dzieje, natomiast po prostu nie znam takich przypadków, gdyż zupełnie inne i/lub ogromne projekty wymagają zwykle dużej pracy wejścia, a to często też wspomaga niedoszacowania.

Druga sprawa jest już stricte związana z cenami - każdą firmę trzeba utrzymać i, oczywiście, trudniej jest zrobić to z zespołem niż pojedynczą osobą. Każdy pracownik firmy oznacza pewne miesięczne wydatki, związane także z podatkami i innymi kosztami prowadzenia spółki. To klienta nie musi interesować i ten ma do tego prawo - warto jednak podkreślić, że chcąc nie chcąc, to też ma wpływ na wyceny, w zamian dając wspomniane już wcześniej wzajemne wspomaganie się zespołu w celu powstania lepszego oprogramowania. Co więcej, w przypadku jeśli samotnego programistę dopadnie cięższa choroba, zwykle są inne osoby, które mogą na czas jego nieobecności pociągnąć projekt.

W przypadku freelancerów koszty utrzymania są na pewno mniejsze - nie tylko ze względu na konieczność zapewnienia bytu wyłącznie jednej osoby (plus ewentualnym podwykonawcom), ale też samą charakterystykę jednoosobowej działalności gospodarczej, która jest tańsza niż spółka. Te dwie rzeczy w dużej mierze wpływają na wycenę - dodatkowe koszty nie są przenoszone na klienta, ponieważ ich po prostu nie ma. Z drugiej strony, faktycznie większa niedyspozycja freelancera może wręcz zablokować realizację projektu - jest to duża wada JDG, w których momenty bez pracy nie mają żadnego koła ratunkowego, zarówno dla programisty, jak i klienta.

Trzecia sprawa będzie najbardziej kontrowersyjna, gdyż dotyczy doświadczenia, którego nie sposób odmówić przedstawicielom zarówno jednej, jak i drugiej strony. Tym niemniej, wiemy o tym, że projekty IT często bywają niedoszacowane i w skrajnych przypadkach może to spowodować nie tylko większe opóźnienie prac, ale też solidne niesnaski z klientem. To znacznie szerszy temat, ale na teraz musimy tylko wiedzieć, że należy wystrzegać się nadmiernego zaniżania liczby godzin i tutaj jednak zbiorowe doświadczenie kilku osób wyceniających może być zbawienna w porównaniu do weryfikacji przez jedną osobę. Oczywiście, mówimy tutaj o projektach, które są niestandardowe lub mają coś specyficznego w sobie. Niestety, freelancerzy mają trochę mniejsze pole manewru, gdyż w razie niedoszacowania nie mogą wysłać swojego "negocjatora", a z drugiej strony trzeba zawalczyć o kontrakt. I znowu - problemy wykonawcy niekoniecznie muszą obchodzić klienta, który chce zwykle zapłacić mniej. Natomiast trzeba też pamiętać, że software house ma nieco większe pole manewru w radzeniu sobie z problemami, które później mogą wystawić. I zwykle występują.

Po czwarte i ostatnie - brak zdolności klonowania własnej osoby sprawia, że freelancerzy wydają się mieć nieco mniejsze możliwości zapewnienia długotrwałego wsparcia. Powiecie, że to samo charakteryzuje software house i nie jest to specjalnie odkrywcze - owszem, macie rację. Jednak zespół IT, nawet jeśli później zajmie się bardziej opłacalnym projektem i po prostu innymi klientami, może oddelegować część osób, które nadal będą dbały o oprogramowanie konkretnego klienta oraz będą na bieżąco z ewentualnymi zmianami i kodem, który trzeba rozwijać. W przypadku freelancera sprawa wygląda znacznie gorzej, gdyż przez ograniczenia czasowe i tzw. "konieczność zmiany kontekstu" może niekiedy później zareagować na prośby starego klienta. Trudniej też po nim przejąć kod, jako że jest jedyną osobą, która nad nim pracowała. Wiedza o danym systemie IT bardziej "rozkłada się" w software house i jest współdzielona przez wiele osób, choć tam z kolei może istnieć problem przekazywania sobie informacji o zadaniach – zwykle zgłoszenia otrzymuje szef projektu lub dział wsparcia, który dopiero musi przekazać wiadomości programistom.

Pamiętajcie też, że cały czas mówimy tutaj o projektach programistycznych - w przypadku takich wykonawców jak graficy, administratorzy itd. freelancerzy dominują na rynku, gdyż faktycznie zysk z pracy samemu jest dużo większy niż korzyści z posiadania zespołu. Chyba że software house, niczym duża drużyna z RPG-a, posiada swoje osoby o tych profesjach - wówczas klient ma wszystko w pakiecie.

Podsumowując - nie twierdzę, że software house'y są zawsze lepszym wyborem niż freelancerzy lub odwrotnie. Chciałem jedynie pokazać powody, które sprawiają, że wyceny od podmiotów obu tych rodzajów mogą (aczkolwiek nie muszą) się od siebie sporo różnić. Intuicyjnie można wyczuć, że w przypadku mniejszych projektów freelancerzy mają przewagę, podczas gdy w przypadku dużych, złożonych koncepcji software house ma po prostu więcej zasobów, aby sobie z nimi poradzić. Ale to nie musi być reguła - po prostu cieszmy się, że klienci mają wybór na rynku.

Pozdrawiam i dziękuję - Jakub Rojek.

Piszemy nie tylko artykuły na blogu, ale też aplikacje i dokumentację dla naszych klientów. Zobacz, z kim do tej pory współpracowaliśmy.

O autorze

Jakub Rojek

Główny programista i współwłaściciel Wilda Software, z wieloletnim doświadczeniem w tworzeniu i rozwoju oprogramowania, ale także w pisaniu tekstów na różnorakich blogach. Zaprawiony w boju analityk i architekt systemów IT. Jednocześnie absolwent Politechniki Poznańskiej i okazjonalny prowadzący zajęcia na tej uczelni. W wolnych chwilach oddaje się graniu w gry wideo (głównie w karcianki), czytaniu książek, oglądaniu futbolu amerykańskiego i e-sportu, odkrywaniu cięższej muzyki oraz wytykaniu innym błędów językowych.

Jakub Rojek