Wycena realizacji aplikacji internetowej – prace jakościowe

W pierwszym artykule tej serii pisaliśmy o elementach składowych wyceny (zobacz artykuł), którą przygotowuje podwykonawca. W tym chcielibyśmy się skupić tylko na pracach jakościowych czyli tych, które sprawią, że Twój projekt będzie lepszy i bardziej wartościowy od innych. Na poczatek  przedstawię kilka cech, które które mają wpływ na finalną jakość oprogramowania:

  1. Wykonanie dobrej analizy wymagań, trafny wybór technologii oraz nowoczesnych rozwiązań
  2. Przeprowadzenie pełnego procesu projektowego aplikacji – tak od strony interfejsu jak również back-endu.
  3. Tworzenie kodu aplikacji
    1. Zgodnie ze standardami i dobrymi praktykami
    2. Przeprowadzanie code-review
    3. Opieka i nadzór nad powstającym oprogramowaniem przez projektanta aplikacji, szefa technologicznego
    4. Testy tak zewnętrzne jak i samego  kodu źródłowego
    5. Pisanie testów jednostkowych z wysokim pokryciem
    6. Dobre dokumentowanie kodu
    7. Niekiedy praca developerów w parach
    8. Mądre wersjonowanie
  4. Przeprowadzanie testów gotowego systemu
    1. Funkcjonalne
    2. Bezpieczeństwa
    3. Wydajności
    4. Integralności
    5. Obciążalności
    6. Scenariuszowe itd.
  5. Świetna komunikacja i zrozumienie z zespołem wdrożeniowym
    1. Duże zaangażowanie czasowe na spotkania z Project Managerem i Product Ownerem.
    2. Troska zespołu nie tylko o realizowane funkcjonalności ale również ogół projektu
    3. Patrzenie zawsze „2 kroki naprzód”
  6. Bieżąca obsługa gotowego systemu
    1. Wsparcie techniczne zespołu (lub wydzielone osoby do bieżącej obsługi)
    2. Ciągły monitoring i rozwój systemu

Sporo tego, nieprawdaż? Niestety wielu inwestorów w systemy informatyczne traktuje realizację oprogramowania jako prace w zakresie jedynie „programowania”. I owszem, przy banalnie prostych realizacjach może i jest to rozwiązanie ale tylko i wyłącznie w ekstremalnie prostych pracach. Omówione powyżej aspekty nie zawsze są usługa lecz cechą zespołu/podwykonawcy (jak na przykład „mądre wersjonowanie”) za którą w sposób czasem mniej zrozumiały trzeba też zapłacić.

Nasuwa się teraz pewnie pytanie – czemu warto płacić za tak szeroki wachlarz usług? Odpowiedź jest prosta – dla zapewnienia wysokiej jakości finalnego produktu oraz maksymalizacji szans na jego sukces. Każde oprogramowanie (tu powinienem bardziej użyć słowa „produkt”) to składowa prac bardzo wielu specjalistów z różnych dziedzin technologii i biznesu. Suma ich prac i zaangażowania tworzy kompletne i wartościowe narzędzie. Można napisać nawet, że jest to dość skomplikowany proces w którym niekiedy cykle projektowe i web-developmentu się powtarzają aż do uzyskania satysfakcjonującego (bardzo dobrego) efektu końcowego.

Procentowy udział w kosztach składowych kosztów

Spotkaliśmy się nie raz z pytaniami „a jaki udział procentowy w kosztach oprogramowania ma dodanie testów jednostkowych?” albo „Dlaczego koszty komunikacji i obsługi projektu są takie wysokie?” – odpowiedzi na te pytania jednoznacznego nie ma. Każda web aplikacja ma swój specyficzny charakter, określony poziom skomplikowania, pewną ilość procesów logicznych. Każdy podwykonawca sam ocenia skale i poziom złożoności projektu i szacuje jakie elementy wymagają większego zaangażowania a jakie mniejszego, na przykład:

  • czy charakter projektu wymaga większej lub mniejszej liczby spotkań lub poświęconego czasu klientowi.
  • czy skomplikowanie systemu wymaga dużych nakładów na testowanie i systemy testujące
  • jak dużo trzeba poświecić na prace User Expirence?
  • Jak dużo system zawiera elementów wymagających obsługi po zakończeniu prac
  • Jak istotny jest nacisk na bezpieczeństwo i jakość kodu (w jakiej skali przeprowadzać testy bezpieczeństwa i code-review)
  • Jaką ilość danych system będzie przetwarzał i jak będzie obciążany czyli – jak bardzo trzeba optymalizować oprogramowanie.

Jak zatem podejść do wyceny aplikacji?

Przede wszystkim nie spisuj tylko i wyłącznie „funkcjonalności” aplikacji, gdyż jest to wierzchołek góry lodowej wszystkich realnych prac do wykonania przez Software House. Postaraj się również odpowiedzieć sobie na czym Ci zależy w szerszej perspektywie, przykłady:

  • Czy mój projekt ma być później rozwijany? (koszty związane z prototypowaniem, modelowaniem procesów, specyfikacją techniczną, testami i code-review)
  • Czy zależy mi na wysokiej jakości kodu czy tylko na działającym systemie? (koszty związane z code-review, doświadczeniem zespołu i dokumentacją)
  • W jak dużym stopniu niezawodność systemu jest dla mnie ważna (koszty związane z testowaniem i code review)
  • Czy ważna dla mnie jest dobra komunikacja z wykonawca? (koszty związane z zarządzaniem projektem oraz obsługą klienta)
  • Czy chcę zrobić aplikację szybko czy zgodnie z przyjętymi standardami?
  • Jak wydajny ma być system? (koszt związany z optymalizacją wydajności)
  • Jak bezpieczny ma być system? (koszty związane z testami bezpieczeństwa)

Jak sam widzisz aspektów kosztowych każdej aplikacji jest bardzo wiele, jeśli sam nie określisz bardzo precyzyjnie własnych potrzeb wówczas podwykonawcy lub podmioty biorące udział w przetargu będą oceniały projekt przez własny pryzmat i w przypadku kryterium cenowego – nie będą zazwyczaj brane prace jakościowe. Warto abyś wówczas dokładnie zapytał co wchodzi w zakres oferty aby później  móc to rzeczywiście zweryfikować.

 

Może Cie również zainteresować:

Cookies

Nasza strona internetowa używa plików cookies (tzw. ciasteczka) w celach statystycznych, reklamowych oraz funkcjonalnych. Każdy może zaakceptować pliki cookies albo ma możliwość wyłączenia ich w przeglądarce, dzięki czemu nie będą zbierane żadne informacje. Czytaj więcej