Ile kosztuje stworzenie aplikacji mobilnej?

Paweł Dedio Programowanie 2019-03-02

Witajcie w kolejnym odcinku. Dzisiaj opowiem Wam, ile kosztuje stworzenie aplikacji mobilnej. Nie będę się tutaj skupiał głównie na sprawach finansowych. Chciałbym pokazać też, jak dużym przedsięwzięciem jest stworzenie nawet niepozornie wyglądającej aplikacji.

Etapy powstawania aplikacji

Zanim przejdziemy do konkretów, stworzymy sobie taki mały zarys procesu powstawania aplikacji. Oczywiście to, co tutaj napiszę, ma zastosowanie tylko w większych projektach, gdzie nie wystarczy nam tylko jeden programista z głową pełną pomysłów. W zależności od podejścia możemy wyróżnić kilka etapów. My nie będziemy się zbytnio zagłębiać w szczegóły, dlatego wyróżnimy sobie 4 główne: planowanie, wykonywanie, publikacja oraz utrzymanie. Zawierają one cały proces powstawania aplikacji — od pomysłu aż do finalnego projektu.

Planowanie

Jest to początkowy etap powstawania każdej aplikacji, nawet tej najmniejszej. Nie zawsze wygląda on tak samo, lecz zawsze prowadzi do tego samego — opracowania planu działania. Tak jak pisałem wcześniej, będziemy się skupiać tylko na tych większych aplikacjach. W początkowych etapach klient spotyka się głównie z managerami lub z ludźmi odpowiedzialnymi za pozyskiwanie klientów. Przeważnie nazywa się ich handlowcami lub sprzedawcami. Klient przedstawia tym ludziom swoją wizję aplikacji, a oni starają się wyciągnąć jak najwięcej szczegółów, tak żeby móc przekuć wszystko na wstępny spis wymagań. Kolejne spotkania mają na celu dopracowanie tej listy. Na nich zaczynają pojawiać się też programiści. Doradzają oni w wyborze odpowiednich technologii, proponują pewne zmiany koncepcyjne i informują klienta o wszystkich ograniczeniach technicznych. Po maksymalnym doprecyzowaniu wymagań rozpoczyna się proces wyceny aplikacji. Można tutaj zastosować dwie metody szacowania:

  • Fixed price (stała cena) – to podejście jest stosowane do projektów, w których jasno można określić zakres prac, które muszą zostać wykonane. Aby takie podejście miało sens, trzeba zamrozić listę wymagań tuż przed rozpoczęciem pracy nad aplikacją. Wprowadzanie zmian w projekcie jest utrudnione i wymaga za każdym razem dodatkowej wyceny nowych funkcjonalności. W przypadku tego podejścia klient z góry wie, ile potrwa, oraz ile będzie kosztował finalny projekt. Częstą praktyką jest zawieranie w umowie kar za nie wywiązanie się z obowiązujących terminów.
  • Time & material (czas i zasoby) – Nie bijcie za to tłumaczenie, po prostu nie mam pojęcia jak to lepiej przełożyć na język polski. W tym podejściu chodzi o to, że przed rozpoczęciem prac zakładamy tylko pewne ramy, w jakich powinien się zawierać końcowy produkt. Metoda ta jest mocno elastyczna, ponieważ nie wyceniamy tutaj końcowego projektu, lecz czas naszej roboczogodziny. Na podstawie zdefiniowanych wymagań przedstawiamy klientowi jakiś przedział cenowy oraz czasowy, w jakim zmieści się aplikacja, informując jednocześnie, że każda zmiana wpłynie na wzrost tych wielkości. W podejściu tym ważna jest transparentność i ciągła integracja. Należy regularnie pokazywać klientowi postępy w pracach oraz jasno przestawiać, nad czym zespół aktualnie spędza czas. W takim podejściu klient na każdym etapie może wprowadzać zmiany i nie wymaga to większych ingerencji w umowę.

Wykonywanie

Zanim programiści przystąpią do faktycznej pracy, najpierw musimy stworzyć projekt graficzny. Powiem szczerze, że miałem pewien problem, czy powstanie projektu graficznego zaliczyć do planowania, czy może jednak do wykonywania. Wszystko jednak zależy od firmy. Czasami projekt graficzny powstaje jeszcze zanim w ogóle wycenimy aplikację, ponieważ na podstawie gotowych ekranów łatwiej jest wycenić ilość czasu potrzebnego na wykonanie danej usługi. Natomiast w innych firmach interfejs jest projektowany już po zaplanowaniu całości.

Załóżmy, że projekt interfejsu użytkownika mamy już gotowy, przechodzimy więc do kolejnego etapu. Większość firm używa jakiegoś oprogramowania wspomagającego zarządzanie projektem. To właśnie na tym etapie wprowadzane są do niego zadania do wykonania wraz z odpowiednim opisem. Przeważnie wygląda to w ten sposób, że przechodzimy po kolei wszystkie ekrany aplikacji i do każdego ekranu dodajemy opis funkcjonalności i sposób, w jaki całość powinna działać.

Po tym etapie do pracy przystępuje zespół programistów, w zależności od przyjętej metodologii pracy (nic się nie martw, niebawem napiszę o tym osobny artykuł) programiści rozdzielają między siebie zadania. Zanim jednak rozpoczniemy pracę nad projektem, musimy ustalić kilka kwestii dotyczących sposobu pisania kodu. Musimy między innymi wybrać odpowiednią architekturę, sposób nazywania zmiennych i metod, przedyskutować sprawę testów jednostkowych i wiele innych. Dopiero po tych wszystkich ustaleniach możemy zabrać się do faktycznej pracy.

Oczywiście to nie wygląda tak, że programiści siedzą sobie zamknięci w piwnicy i piszą bez przerwy kod, do czasu aż cała aplikacja będzie gotowa. Przeważnie ustala się pewien okres, po którym przedstawiamy aktualny postęp prac klientowi. Jest to idealny moment na podsumowanie oraz wprowadzenie ewentualnych poprawek przez klienta. Cały proces powtarzamy aż do zakończenia implementacji.

Publikacja

Wbrew pozorom etap ten nie jest taki lekki i przyjemny. Wszystko dlatego, że przed publikacją wykonuje się szczegółowe testy wszystkich funkcjonalności. To właśnie wtedy wychodzi bardzo wiele błędów i nieścisłości, mimo że wszystko i tak jest testowane na bieżąco. Kolejnym powodem jest to, że od momentu planowania projektu do jego publikacji mija przeważnie sporo czasu. Dlatego część funkcjonalności mogła się „zestarzeć” i klient postanawia wprowadzić nieco modyfikacji. W tym etapie robimy również rzeczy, które wcześniej były odkładane na później. To właśnie wtedy dopisujemy jakieś brakujące testy, dopieszczamy interfejs użytkownika, optymalizujemy aplikację i tak dalej. Jest to też czas, w którym nasza aplikacja jest sprawdzana przez zewnętrzne firmy, z którymi współpracujemy. Wszystkie te etapy mogą prowadzić (a przeważnie prowadzą) do powstania dodatkowych zadań do wykonania.

No dobrze, załóżmy, że wszystkie zadania zostały wykonane prawidłowo i nasza aplikacja jest dopieszczona w stu procentach. Teraz już wystarczy ją tylko opublikować w Google Play lub App Store i koniec… No właśnie nie koniec, bo tutaj przechodzimy do ostatniego punktu naszego procesu.

Utrzymanie

programowanie test

Nie ma aplikacji idealnych, dlatego nie możemy jej tak po prostu zostawić po publikacji samej sobie. Musimy być przygotowani na to, że pojawią się jakieś błędy lub sugestie od użytkowników, które wymuszą wprowadzenie pilnych zmian. Przeważnie tych zmian nie ma zbyt dużo, dlatego nie ma potrzeby, aby cały zespół programistów nic nie robił, tylko czekał na zgłoszenie błędu od użytkowników. Dlatego stosuje się różne podejścia do tego etapu. Możemy albo oddelegować część programistów do obsługi tych błędów, albo wprowadzić coś w rodzaju dyżurów. Dyżury polegają na tym, że programiści na co dzień pracują nad zupełnie innym projektem, ale są świadomi, że w każdej chwili może im się trafić jakieś zadanie do rozwiązania. Przeważnie programiści za takie coś dostają dodatkowe wynagrodzenie.

To jest też moment, w którym do pracy przechodzi zespół analityków. Zajmują się oni analizą danych o tym, w jaki sposób użytkownicy używają naszej aplikacji. Jeśli ciekawi Cię, skąd biorą się takie dane, to polecam odcinek o śledzeniu użytkowników. Na tej podstawie mogą zasugerować jakieś zmiany, które zostaną wprowadzone w przyszłych wydaniach aplikacji.

Ile kosztuje stworzenie aplikacji?

Przeszliśmy już z grubsza przez wszystkie etapy tworzenia aplikacji, teraz pora policzyć, ile to wszystko kosztuje. Nie chciałbym jednak, żebyście traktowali te wyliczenia jako wyznacznik kosztu wszystkich aplikacji, bo podane tutaj wartości będą jedynie szacunkowe. No dobrze, przejdźmy do konkretów, zacznijmy od czasu, bo od tego głównie zależy koszt aplikacji.

Nie ma jakiejś złotej liczby, która określi, jak długo robi się aplikację mobilną. Na potrzeby naszych wyliczeń załóżmy, że robimy aplikację średniej wielkości. Natomiast jej czas wykonania wynosi 6 miesięcy, w czym programowanie zajęło 4 miesiące. Dużo zależy, jak duży jest nasz zespół oraz jaka jest jego struktura. Przyjmijmy, że w naszym zespole jest 2 programistów Android oraz 2 programistów iOS. Stawka godzinowa programisty jest uzależniona od jego doświadczenia oraz lokalizacji, w której pracuje. Załóżmy, że każdy z naszych programistów zarabia 60 zł brutto na godzinę. Przy obliczaniu kosztów przyjmuje się, że miesiąc roboczy ma 168 godzin.

Tak, wiem — bardzo dużo założeń, lecz tylko to pozwoli nam poznać jakieś kwoty. Dzięki temu możemy dokonać prostych obliczeń: 4 miesiące x 168 godzin x 4 programistów x 60 zł daje nam 161 280 zł — to jest koszt pracy programistów. Jednak programiści to nie wszystko, poza nimi pracują też managerowie oraz grafik. Nasz projekt jest mały, wiec załóżmy, że mamy tylko jednego managera, który pracował przez cały czas trwania projektu. Stawki managerów są bardzo zróżnicowane, więc tutaj również przyjmijmy stawkę w wysokości 60 zł za godzinę. Po obliczeniu stawki managera według wcześniejszego wzoru wychodzi nam 60 480 zł za 6 miesięcy jego pracy. Został nam więc jeszcze tylko grafik i tutaj niestety nie podam Wam żadnych szacunków – po prostu za mało znam tę branżę, żeby strzelać jakimiś kwotami.

PodsumowanieWarto wiedzieć, ile czasu grasz lub przeglądasz Facebooka

Sumując kwotę wynagrodzenia programistów oraz managera dostajemy 221 760 zł, jednak pamiętajcie, że brakuje tutaj jeszcze kosztów pracy grafika. Oczywiście są to jedynie koszty samej pracy. Do tego wszystkiego musimy doliczyć jeszcze marżę firmy, koszty marketingu, opłaty licencyjne, koszty infrastruktury, obsługę prawną i tak dalej.

Długo zastanawiałem się, czy w ogóle używać w tym artykule konkretnych kwot, ponieważ sami widzicie, że są one małe precyzyjne. Chciałem Wam tylko zobrazować, jakiego przedziału jest to koszt i mam nadzieję, że mi się to udało. Tak więc podsumowując, odpowiedź na tytułowe pytanie powinna brzmieć mniej więcej tak: „Nie da się określić, ile kosztuje przeciętna aplikacja, ale są to kwoty dość duże”. Może nie jest to odpowiedź dość precyzyjna, ale sami widzicie, że precyzyjniej się nie da.

Dotarliśmy do końca dzisiejszego odcinka, tradycyjnie zachęcam do komentowania i pisania propozycji swoich tematów do poruszenia. Widzimy się już za tydzień — opowiem Wam o tym, kiedy aplikacja może uzyskać dostęp do lokalizacji użytkownika. Do zobaczenia za tydzień!

Zapraszam również na największe w Polsce forum dla programistów Android. Jeśli macie pytania odnośnie do kariery programisty — zapraszam do działu Kariera programowanie. Zachęcam również do przejrzenia działu Praca oraz zlecenia dla programistów — być może to właśnie tam znajdziesz swoją pierwszą pracę.

Pozostałe odcinki serii o programowaniu.



  • Łukasz

    Aktualnie prawie każda appka mobilna jest połączona z jakimś serwerem. Dodałeś koszty marketingu, managerów, sprzątaczek i karmy dla psa, a nie dodałeś kosztów związanych ze stworzeniem API po stronie serwera, bazy danych, nie dodałeś kosztów związanych ze zrobieniem CMS’a. Jak weźmiesz pod uwagę aktualne ceny programistów, oraz naprawdę wszystkie czynniki to beż pół bańki nie podchodź 🙂

    • Paweł Dedio

      Też myślałem czy doliczać koszt API, jednak nie każda aplikacja posiada API. Jeśli doliczał bym koszt API to równie dobrze moglibyśmy doliczać też koszt strony internetowej. Zgadzam się z tobą że cena prawie zawsze przekracza 500 tys.

  • Michał Mareczko

    Dziwi mnie fakt, że pominąłeś proces projektowania UX

  • Robert Wisniewski

    A że niby stworzenie aplikacji bez wkładu pieniędzy jest nie możliwa?
    Jak zna się potrzebny język programowania to aplikacje można zrobić jednym pstryknieciem palca (nie dosłownie). Grafiki można znaleźć w internecie za darmo. Ikony i elementy UI również można znaleźć za darmo a są nawet strony do tego przeznaczone.
    Aplikacje rozpowszechniać można poprzez różne fora czy grupy poświęcone podobnym tematem jakim zajmuje się aplikacja. Dać tam kilka reklam i spytać użytkowników o dotacje i wreszcie uzbiera się te 70 zł na publikację apki na Google Play.

    • Łukasz

      Poświęcenie własnego czasu to też wkład pieniędzy, chyba że jesteś bezrobotny. Jeżeli poświęciłeś np miesiąc czasu na zrobienie aplikacji „dla siebie” (21 dni roboczych po 8h, stawka godzinowa 90zł netto/h) to zrobienie tej appki kosztowało Cie 15tyś zł netto. Zakładając zarobek z samych reklam aplikacja musiałaby być naprawdę dobra i popularna (100-150tyś aktywnych użytkowników) żeby w ciągu jednego roku zwrócił Ci się poświęcony czas. Czy doliczyłeś już czas poświęcony na poprawki błędów i nowe funkcjonalności?

    • Paweł Dedio

      Myślę, że Łukasz wyczerpał temat, świetna odpowiedź! Cena aplikacji bierze się z poświęconego czasu, jeśli robisz wszystko sam, to zachowujesz pieniądze, jednak tracisz swój czas.

  • Flaqs

    Super jak co tydzień! 👍
    Czyli podsumowując, programista dostaje projekty gotowych layoutów od grafików i na ich podstawie pisze kod? Rozumiem, że wszystkie pliki w /res, które są używane do konkretnych ekranów również są dostarczane przez grafików?
    I jeszcze pytanie czy ustawienia elementów i constraintów na poszczególnych ekranach w przypadku androida to też zadanie programistów czy są do tego wyznaczone specjalne osoby?
    Z góry dzieki za odpowiedź! 🙂

    • Łukasz

      Często programista nie dostaje nic a jedynie szczątkowy opis działania aplikacji.

    • Paweł Dedio

      Jeśli chodzi o grafiki, to z tym jest różnie, czasami dostajesz wszystko gotowe, a czasami dostajesz tylko projekt jakiegoś ekranu i wszystkie potrzebne obrazki musisz sobie sam wyeksportować z projektu photoshopa lub sketcha.
      Jeśli chodzi o interfejs, to piszą go programiści. Nie jest to jednak coś bardzo trudnego i nie ma co się o to martwić 😉

      • Flaqs

        Dzięki za odpowiedź. Tobie Łukasz również!
        Co do interfejsu to się nie martwię, ponieważ nie jest to kosmicznie trudne. Na etapie nauki, na którym obecnie jestem, chciałem po prostu wiedziec czy skupić się na samym kodzie czy jeszcze również na interfejsie. Teraz już wiem 🙂

  • laser raptor

    A mnie zastanawia jak dobrym trzeba być żeby móc zostać takim zawodowym programistą? Przede wszystkim jak trudne do zaimplementowania problemy, i w jak krótkim czasie trzeba umieć rozwiązać?

    • Wbrew pozorom wcale nie trzeba być dobrym aby zostać zawodowym programistą 😂

    • Łukasz

      To zależy ile chcesz zarabiać.

      • laser raptor

        Powiedzmy, że te wspomniane w tekście 60 zł brutto.

    • Paweł Dedio

      Najciężej jest załapać się do pierwszej pracy. Ja miałem szczęście, bo udało mi się załapać na 3-miesięczny staż, a potem już zostałem w tej firmie. Z perspektywy pracodawcy najważniejsze jest, abyś był w miarę samodzielny, ogromnym atutem jest już jakiś kod, którym możesz się pochwalić. Trochę pisałem o tym w odcinku o rozmowie kwalifikacyjnej

  • Łukasz

    60zł BRUTTO za godzinę pracy programisty?? Może 5 lat temu tak. Dzisiaj więcej netto zarabia junior. Za w miarę ogarniętego programistę Android lub iOS trzeba dać od 90zł NETTO w górę.

    • Michał Derej

      Chciałem napisać to samo. To bardzo mała stawka dla doświadczonego programisty, mniej więcej tyle zarabiają juniorzy w branży mobilnej. Źródło danych: justjoin.it.

    • Paweł Dedio

      Zgadzam się z wami, chciałem jednak napisać kwotę którą będzie w miarę uniwersalna dla każdego poziomu doświadczenia i dla każdej lokalizacjo. Wiem z doświadczenia, że stawki w mniejszych miastach stawki są sporo mniejsze.



x