Software house
Skąd się biorą różnice w wycenie projektu?

Skąd się biorą różnice w wycenie projektu?

Zlecając napisanie oprogramowania dla swojego biznesu, prawdopodobnie spotkałeś się ze zjawiskiem przygotowania różnych wycen poszczególnych firm wytwarzających oprogramowanie oraz tym, że mogą się one znacząco od siebie różnić. Podobnie, gdy jesteś właścicielem software house'u, często słyszysz od swoich potencjalnych klientów, że twoja wycena jest znacznie droższa od innych ofert przygotowanych przez inne firmy.

W tym artykule chciałbym przedstawić, dlaczego rozrzut cen wykonania usługi napisania aplikacji, jest tak szeroki oraz z jakimi zagrożeniami wiąże się wybranie nieoptymalnej oferty, która jest atrakcyjna wyłącznie dlatego, że jest znacznie tańsza od pozostałych.

Rozrzut cen wykonania aplikacji jest bardzo duży. Niewielki projekt może zostać napisany zarówno przez studenta, niewielki zespół, jak i większą firmę. Jeśli chodzi o większe projekty, w grę wchodzą już co najmniej małe firmy, ponieważ żadna pojedyncza osoba, jak i niewielki zespół nie będzie w stanie zrealizować takiego projektu (a decydując się na ten krok, skończy się to dostarczeniem bardzo słabej jakości oprogramowania). W znakomitej większości przypadków mniejsza firma zawsze zaoferuje niższą cenę wykonania niż firma większa. Nie wynika to jednak z faktu, że większa firma ma większą marżę i chce więcej zarobić. Wręcz przeciwnie, stawki zazwyczaj są bardzo podobne do siebie. Większa firma, z uwagi na znacznie większe koszty utrzymania i większy zespół, w praktyce marżę na projekcie ma niższą. Z czego więc wynika różnica w cenie za ten sam projekt? I tutaj odpowiedź jest tylko jedna - jakość i podejście do jego realizacji.

Oczywiście wszystko zależy, jak podchodzisz do swojego projektu. Jeśli ma to być projekt, który jest kluczowy w Twojej organizacji i który będzie rozwijany przez kolejne lata - jakość bez wątpienia ma tutaj znaczenie, Pozwoli ci w dłuższej perspektywie zaoszczędzić zarówno pieniądze, jak i zapewnić spokój, że Twój biznes oparty jest o stabilne działające oprogramowanie.

Jeżeli z kolei nie wiążesz dłuższej przyszłości z projektem i nie jest on kluczowy w Twojej organizacji - możesz zaryzykować napisanie oprogramowania w uproszczonej wersji jakościowej, aczkolwiek i w tym przypadku warto się nad tym zastanowić, bo w dalszej perspektywie może to być zły wybór. Nie możesz być pewny, czy jednak w przyszłości nie zajdzie potrzeba rozwijania tego projektu lub czy też nie osiągnie on swojego pułapu wydajnościowego, ze względu na błędne założenia architektoniczne i konieczne będzie stworzenie go od nowa (bo koszty naprawy okażą się bardzo drogie).

A czym konkretnie jest jakość? Przecież oprogramowanie otrzymasz takie samo, niezależnie czy zrobi to niewielki zespół czy też większy. W obu zespołach mogą być nawet tacy sami, równie profesjonalni specjaliści. Diabeł tkwi w szczegółach procesów i osobach, które koordynują projekt. W przypadku, gdy oba zespoły mają taki sam poziom zaawansowania i doświadczenie, w teorii powinny powstać tak samo dobre jakościowo linie kodu. Dlatego kluczowa będzie sama organizacja i podejście do pracy zespołowej.

schemat porównujacy tańszą i droższą ofertę

Dodatkowe osoby w zespole

Większe firmy mają bardziej rozszerzone zespoły, przede wszystkim o takie osoby, jak kierownik projektu (Project Manager, PM), lider technologiczny (Tech Lead, TL) czy dedykowani testerzy. W mniejszych firmach, tego typu osoby zazwyczaj nie występują, nie są więc potrzebne dodatkowe etaty, dlatego cena realizacji projektu jest zazwyczaj niższa. A jakie są role i jakie korzyści daje obecność tych osób w projekcie?

Kierownik projektu (Project Manager) - z tą osobą będziesz mieć bardzo częsty kontakt. Będzie się do Ciebie zgłaszać i dociekać, gdy coś będzie niejasne w założeniach. Będzie też osobą, do której zawsze będziesz mógł się zwrócić, jeśli będziesz chciał dowiedzieć się czegokolwiek na temat projektu lub zmodyfikować coś w jego założeniach. Po stronie wewnętrznej, PM będzie koordynował i pilnował projektu, tworzył zadania dla członków zespołu oraz pilnował roadmapy realizacji, koordynował zespół, interweniował i rozwiązywał problemy. Jednym słowem dbał, aby projekt przebiegał zgodnie z wcześniej ustalonym planem. Bez project managera, projekt realizowany jest tylko przez zespół programistów, którzy nie mają wyczucia i spojrzenia projektowego, bo skupieni są tylko na pracy nad kodem (czyli stricte technicznej).

Tech Lead (TL) - jest osobą techniczną, która ma największe doświadczenie w zespole i która zrealizowała w swoim życiu zawodowym wiele projektów, rozwiązała wiele problemów, a jej wiedza pozwala na uniknięcie wszelkich potencjalnych problemów technologicznych w Twoim projekcie. Tech Lead ma ścisły kontakt z project managerem, spaja zespół programistów i udziela im wsparcia na każdym kroku. Odpowiada również za zaprojektowanie, razem z programistami, głównej architektury projektu. Sprawdza jakość wykonywanych prac, patrzy również na projekt z biznesowego punktu widzenia, a nie tylko technicznego. Jego obecność w projekcie pozwala na zbudowanie stabilniejszego oprogramowania, uniknięcie ryzyka i długu technologicznego, jak i zapewnienie optymalnej skalowalności projektu w przyszłości.

Dedykowani testerzy (QA) - tester nie zajmuje się niczym innym, jak dokładnym przejrzeniem wytworzonego oprogramowania i to na każdym etapie jego produkcji (nie tylko finalnej wersji). Dodatkowo, testerzy są zaangażowani już od etapu analizy samego projektu, dzięki czemu dokładnie rozumieją projekt, jak i już na tym etapie są w stanie podnieść ewentualne zagrożenia zaprojektowania danej funkcjonalności, bazując na swoim wcześniejszym doświadczeniu. Firma bez działu QA ryzykuje tym, że dostarczone oprogramowanie nie będzie należycie przetestowane oraz że nie wszystkie przypadki i scenariusze testowe zostały uwzględnione. Co za tym idzie, istnieje znacznie większe prawdopodobieństwo, że pewnym momencie oprogramowanie może zacząć działać niewłaściwie lub nie tak, jak oczekuje tego klient.

project manager + tech lead + tester = sukces

Myślę, że już po przedstawieniu tych trzech kluczowych pozycji w projekcie, można łatwo wywnioskować, skąd bierze się wyższa wycena realizacji projektu i że nie wynika ona z przepłacania. Jest to natomiast dodatkowa opłata za etaty oraz jakość, dzięki czemu dostajemy lepsze oprogramowanie, którego nie jest w stanie dostarczyć firma, która wyżej wspomnianych osób w projekcie nie posiada. Bez ich udziału, projekt oczywiście powstanie na pierwszy rzut oka taki sam, ale z pewnymi zastrzeżeniami (które oczywiście mogą, ale nie muszą wystąpić):

  • jego jakość wykonania nie będzie na tym samym poziomie - kod może być napisany gorzej (brak code-review przez doświadczoną osobę), jednocześnie będzie zapewniona gorsza wydajność i bezpieczeństwo (brak założeń brzegowych, brak wnikliwych testów)
  • pewne procesy działania aplikacji mogą po czasie okazać się niewłaściwe (bo nikt po drodze tego nie przewidział i nie dopytał)
  • architektura aplikacji będzie na niższym poziomie, niezabezpieczona przed różnymi, szczególnymi przypadkami ekstremalnego działania
  • oprogramowanie będzie trudniej skalowalne i rozwijane w kolejnych iteracjach - z biegiem czasu dług technologiczny może być na wyższym poziomie
  • aplikacja nie będzie dokładnie przetestowana na każdym możliwym poziomie
  • utrzymanie aplikacji będzie mniej elastyczne - z uwagi na gorszą wydajność i nieprzewidzenie potencjalnych zagrożeń, koszty utrzymania infrastruktury serwerowej mogą być droższe i trudniejsze w utrzymaniu

Procesy projektowe

Innym istotnym aspektem są także procesy. Im większa firma, tym jest bardziej uporządkowana procesowo. Każdy ułożony proces z kolei sprawia, że firma jest mniej chaotyczna, a proces tworzenia oprogramowania opiera się o przestrzeganie ściśle określonych reguł, które pozwalają na zbudowanie dużo lepszej jakościowo aplikacji. Procesy to również dodatkowe koszty, która ponosi firma, dlatego stąd założenie, że marża takiej firmy jest niższa - firma inwestuje w siebie, aby być lepsza. Wiele ofert nie zawiera także codziennych krótkich spotkań programistów z Tech Leadem oraz Project Managerem, na których wspólnie poruszają zauważone problemy, dyskutują o wizji projektu, najlepszych rozwiązaniach - czego brak może mieć fatalne skutki w dalszej przyszłości projektu.

Podsumowując - gdy otrzymana wycena jest droższa od pozostałych, zastanów się, czy pozostałe oferty firm na pewno oferują to samo. Dopytaj je szczegółowo czy uwzględniają takie osoby jak PM, TL w projekcie i jeśli tak - to na jak duży angaż.

Dopytaj również o proces testowania - czy rozwiązanie zostanie należycie przetestowane przez dedykowane osoby i w jaki sposób te testy będą wyglądać.

Dopytaj także, czy firma posiada odpowiednie procesy jakościowe w zespole, jak i w całej organizacji. Firma, która bazuje na takich założeniach, bez problemu szczegółowo udzieli Ci informacji i przedstawi cały proces. Im bardziej szczegółowo dopytasz, tym będziesz miał większą świadomość i pewność, że podejmiesz dobrą decyzję - czy to jednak decydując się na tańszą ofertę, jak i zarówno decydują się na droższą.

Najważniejszy jest Twój biznes i by działał on stabilnie. Koniecznie więc przemyśl, czy jeśli otrzymana droższa oferta, mimo wszystko mieści się w założonym przez Ciebie budżecie, to czy warto zaoszczędzić, wybierając tańszą ofertę. Być może będzie to tańsze tylko pozornie - na pierwszym etapie, a w dłuższej perspektywie czasowej koszty mogą okazać się większe, niż w przy wyborze droższej oferty, która pozwoli na dużo większą elastyczność utrzymania i rozwijania oprogramowania w przyszłości.

Powrót do bloga
Ta strona używa plików cookies.
Polityka Prywatności    Jak wyłączyć cookies?    Cyberbezpieczeństwo
OK