Jak wybrać profesjonalną firmę programistyczną

Jak wybrać profesjonalną firmę programistyczną

Decydując się na realizację projektu, często stajemy przed problemem znalezienia kompetentnej firmy programistycznej. Jest to dla nas bardzo duże wyzwanie, ponieważ albo nie znamy branży, albo jesteśmy mało techniczni. Tak więc od czego zacząć?

Na początku wysyłamy zapytania do wielu firm znalezionych w internecie, po czym otrzymujemy diametralnie różne wyceny. Spośród wielu propozycji wybieramy tą, która wydaje się dla nas najbardziej atrakcyjna cenowo w nadziei, że projekt zostanie należycie wykonany. Niestety cena stanowi jedynie wypadkową takich składowych jak: złożoność specyfikacji, doświadczenie programisty, obłożenie kalendarza czy czasu potrzebnego do realizacji projektu. 

“Firmy programistyczne, które nie mają większego doświadczenia często niedoszacowują kosztów stworzenia aplikacji.”

Dlatego usługi programistyczne to bardzo specyficzna branża. Oferty odsyłane do klienta, często różnią się nie tylko ceną ale również szczegółami implementacji, które mają ogromny wpływ na to czy realizacja naszego projektu będzie w ogóle możliwa. Dlatego zanim podejmiemy nieprzemyślaną decyzję, należy zadać sobie proste pytanie “Jak znaleźć profesjonalną firmę programistyczną oraz czym się kierować, aby dokonać najlepszego wyboru”.

Kiedy potrzebujesz programisty

Zanim zdecydujemy się na wybór odpowiedniej firmy, warto na początku zastanowić się czego tak naprawdę potrzebujemy i jak złożony jest nasz projekt. Jeśli nasza specyfikacja zakłada proste czynności takie jak: instalację popularnego systemu blogowego (np. WordPress) na serwerze, stworzenie layout-u witryny czy dopisanie mało skomplikowanego modułu, to złożoność takiego projektu jest bardzo mała i nie wymaga pomocy ze strony firmy programistycznej. Warto w tym przypadku poszukać firmy, która specjalizuje się dokładnie w tego typu usługach.

Co innego jeśli projekt wymaga szerokiej wiedzy technicznej i doświadczenia. Mowa tutaj o stworzeniu od podstaw gotowego rozwiązania np. aplikacji webowej, która zawierałaby panel klienta, integrację z systemami płatności czy konta użytkowników. W tej sytuacji wybór odpowiedniej firmy programistycznej jest bardzo ważny. Warto pamiętać o tym, aby wybrać taką firmę, która specjalizuje się w konkretnej dziedzinie. Jeśli postawimy na firmę, której zakres doświadczenia i kompetencji jest nieadekwatny do specyfikacji, możemy utopić nasze pieniądze w projekcie, który może zostać nieukończony lub będzie działał niepoprawnie.

Na co zwrócić uwagę podczas wyboru firmy programistycznej

Jak wybrać profesjonalną firmę programistyczną

Technologia

Technologia stanowi jeden z kluczowych czynników na jaki należy zwrócić uwagę podczas poszukiwania firmy programistycznej. Każda z nich może wykorzystywać zupełnie inny stos technologiczny, dlatego na samym początku powinniśmy sprawdzić czy dana firma pracuje w takiej technologii na jakiej nam zależy.

Na co zwrócić uwagę

  • Cena - Cena za realizację projektu często uzależniona jest nie tylko od złożoności specyfikacji, ale również od języka w jakim pracuje programista. Ma to kluczowe znaczenie, ponieważ przykładowo programista PHP zarabia średnio mniej niż programista JAVA.
    Dlatego wysyłając zapytania do wielu firm programistycznych, warto poruszyć kwestię w jakim języku się specjalizują.
     
  • Dodatkowe licencje - Przykładowo używając technologii Microsoft musimy liczyć się z dodatkowymi kosztami związanymi z wykupem licencji na serwery,  ewentualnie bazy danych.
     
  • Serwer w chmurze - Z roku na rok cloud serwery cieszą coraz większą popularnością. W przeciwieństwie do serwerów dedykowanych ich ogromną zaletą jest łatwość skalowania, ponieważ już w kilka minut można stworzyć nową instancję z preinstalowanego obrazu. Dodatkowo upraszczają nam one całą procedurę monitorowania serwera, ponieważ częścią techniczną zajmuje się dostawca chmury.
    Ma to znaczenie dla wszystkich tych firm, które mają ograniczony budżet. Dzięki dużej elastyczności jaką daje nam chmura, możemy w każdej chwili dostosować jej moc obliczeniową do naszych wymagań.
     
  • Rozwiązania webowe - Podczas wyceny naszego projektu warto zapytać czy firma programistyczna proponuje rozwiązanie webowe czy standardowe programy komputerowe, które instalowane są na komputerze klienta. Ma to ogromne znaczenie, ponieważ w dzisiejszych czasach odchodzi się od programów desktopowych, z powodu generowania dużych kosztów obsługi i komplikacji całego procesu, który uzależniony jest od systemu operacyjnego klienta.
    W przeciwieństwie do standardowych programów komputerowych, aplikacje webowe dostępne są dla wszystkich użytkowników internetu, niezależnie od tego czy korzystają w danym momencie ze smartphone-a czy z komputera, na którym zainstalowany jest konkretny system operacyjny np. Windows. Wykorzystywanie przez firmy programistyczne technologii webowych oznacza dla klienta krótszy czas reakcji na powstałe błędy oraz większą sprawność aplikacji.
     
  • Aktualna wersja oprogramowania - Ostatnią ale równie ważną kwestią jest czy firma, której mamy zamiar powierzyć nasz projekt, korzysta z najnowszych rozwiązań np. aktualnej wersji języka. Warto o to zapytać, ponieważ bazowanie na przestarzałych i nigdzie nie supportowanych rozwiązaniach może narazić nas na dodatkowe koszty jakie będziemy musieli ponieść w przyszłości.
    Co więcej używanie nieaktualnych rozwiązań jest nie tylko nieefektywne, ale również niebezpieczne, ponieważ wszystkie luki jakie zostały wcześniej wykryte naprawiono dopiero w kolejnych wersjach.

Jak wybrać profesjonalną firmę programistyczną

Framework

Framework to platforma programistyczna lub “szkielet”, który wykorzystuje się do budowania aplikacji. Dzięki wykorzystaniu tego rodzaju rozwiązania programiści mogą pracować sprawniej i efektywniej. Co przekłada się na mniejszą ilość linijek kodu, jak również program jest dużo lepszej jakości.

Takie rozwiązanie daje nam masę gotowych do wykorzystania schematów i udogodnień. We framework-u pewne problemy są rozwiązane za programistę, dlatego nie musi on przysłowiowo “wynajdywać koła na nowo”. Dzięki gotowym komponentom może w całości skupić się na budowaniu konkretnej aplikacji.

Ogólna dostępność framework-ów sprawia, że wielu programistów może na nich łatwo pracować. Jeśli w przyszłości powierzymy nasz projekt innej firmie programistycznej, która specjalizuje się we framework-u w jakim napisana jest nasza aplikacja, łatwiej będzie im zrozumieć napisany wcześniej kod.

Natomiast jeśli aplikacja wykorzystuje autorskie rozwiązania, pisane zwłaszcza przez początkujących programistów, może zawierać wiele błędów, nie tylko logicznych ale również projektowych. Wiele firm może nie podjąć się dalszego rozwoju takiej aplikacji, ponieważ ilość prac oraz ogrom problemów do rozwiązania może okazać się nie tylko bardzo czasochłonny, ale również nieopłacalny.

Dlatego bardzo ważne jest, aby firma, która będzie pracowała nad naszym projektem, korzystała z gotowych ogólnodostępnych framework-ów np. dla projektów PHP może to być framework Laravel. Dzięki temu mamy pewność, że w przyszłości będziemy mogli dalej rozwijać naszą aplikację.

Autorskie prawa majątkowe

Zanim zdecydujemy się na podpisanie umowy z firmą programistyczną, warto zapytać czy uwzględnia ona przekazanie autorskich praw majątkowych. Jest to bardzo ważna kwestia, ponieważ od tego zależy czy będziemy mogli wprowadzać jakiekolwiek zmiany w kodzie aplikacji.

Jeśli prawa majątkowe do kodu nie zostaną przekazane, nikt prócz twórców nie ma prawa przy niej dalej pracować. Jest to dla nas bardzo złe rozwiązanie, ponieważ nie tylko przywiązujemy się do konkretnej firmy, ale również narażamy się na ryzyko braku możliwości rozwoju projektu, jeśli firma nie wyrazi chęci dalszej współpracy.

Warto pamiętać, że przekazanie praw majątkowych ma duży wpływ na cenę, ponieważ programista, nie może napisanej wcześniej aplikacji wykorzystać gdzie indziej. Musi po prostu stworzyć ją od nowa. Dlatego cena w tym przypadku będzie o wiele wyższa.

Jak wybrać profesjonalną firmę programistyczną

Doświadczenie przy projektach Open Source

Open Source to odłam ruchu wolnego oprogramowania (Free Software), którego celem jest swobodny dostęp do oprogramowania, dla każdego użytkownika. W praktyce oznacza to, że każdy użytkownik internetu może zmienić lub wykorzystać wcześniej napisany kod, podczas tworzenia własnej aplikacji.

Profesjonalne firmy programistyczne, które uczestniczą przy tego typu projektach nie boją się pokazać tego nad czym pracowały, ponieważ właśnie takie projekty potwierdzają ich umiejętności oraz jakość ich kodu.

Co więcej dobra firma programistyczna, którą mamy zamiar wynająć powinna nie tylko korzystać z projektów z licencją Open Source, ale również angażować się w rozwój już istniejących. Warto również przejrzeć jej profil na GitHub-ie, ponieważ jest to dla nas dodatkowe źródło informacji czy dana firma miała okazję uczestniczyć w jakichkolwiek projektach Open Source.

Automatyczne testy sprawdzające

Tworzenie automatycznych testów to złoty standard we współczesnym programowaniu. Zmniejszą one nie tylko ryzyko pojawienia się krytycznych błędów, ale również zapewniają wysoką jakość kodu. Dzięki nim możemy w przyszłości nie tylko rozbudować naszą aplikację, ale również zmienić sposób jej działania, co praktycznie nie jest możliwe w przypadku większej aplikacji, która nie posiada napisanych wcześniej testów.

“Automatyczne testy zapewniają poprawność działania aplikacji”

Niestety większość firm nie tworzy automatycznych testów, argumentując to brakiem czasu czy ograniczoną ilością programistów. Jest to bardzo poważny błąd, ponieważ jeśli będziemy chcieli wprowadzić jakiekolwiek poprawki lub zmiany w naszej aplikacji, mogą pojawić się nieoczekiwane błędy, które wpłyną na poprawność jej działania. Dlatego warto o to zapytać podczas wyceny naszego projektu.

Portfolio i referencje

Jak każdy wie, portfolio i referencje stanowią doskonałe źródło wiedzy na temat ilości zrealizowanych projektów. Pozwalają nam zobrazować sobie poziom doświadczenia konkretnej firmy. Jednak w tej branży, portfolio może okazać się bardzo trudne do sprawdzenia.

Nie chodzi tutaj o brak chęci szczycenia się mało wymagającymi projektami, tylko o rodzaj umów jakie często podpisują firmy w celu ochrony szczegółów danego procesu biznesowego. Zabraniają one ujawnienia jakichkolwiek informacji na temat zrealizowanego projektu.

Dlatego dużo lepszym rozwiązaniem jest sprawdzenie referencji, które pozwolą nam zweryfikować doświadczenie danej firmy. W celu sprawdzenia danego wykonawcy warto również skorzystać z takich portali jak LinkedIn czy GoldenLine. Można na nich znaleźć wiele informacji na temat danego programisty, począwszy od jego historii zatrudnienia, poprzez referencje i potwierdzone umiejętności, kończąc na ilości znajomych z branży.

Kilka dodatkowych uwag

O czym jeszcze należy pamiętać:

Jak wybrać profesjonalną firmę programistyczną

  • Klient nie umie napisać dobrej specyfikacji -  Klient podczas tworzenia specyfikacji myśli językiem czysto biznesowym, natomiast programista technicznym. To co dla klienta wydaje się być proste do wykonania, technicznie może okazać się dużo bardziej złożone. Często dostarczona przez klienta specyfikacja zawiera wiele błędów i jest mało dokładna. Dlatego większość firm nie przedstawi wiarygodnej wyceny na bazie takiej specyfikacji.
     
  • Nie istnieje idealna specyfikacja - Nawet najlepsza firma programistyczna nie napisze idealnie dopracowanej specyfikacji. Jest to po prostu technicznie niemożliwe, ponieważ podczas realizacji każdego projektu pojawi się dużo zmiennych i różnego rodzaju czynników mających wpływ na działanie aplikacji, których wcześniej nie dało się przewidzieć.
     
  • Tworzenie aplikacji jest zawsze trudniejsze niż się wydaje - mówi się, że napisanie 90% kodu zajmuje 90% czasu, natomiast napisanie pozostałych 10% kodu zajmuje pozostałe 90% czasu. W tym powiedzeniu jest bardzo dużo prawdy. Zawsze to co wydaje się nam na początku bardzo proste do wykonania w perspektywie czasu, okazuje się trudniejsze niż zakładaliśmy. Ostatni etap tworzenia aplikacji często jest tym najtrudniejszym.
     
  • Znajdź osobę, która pokieruje Twoim projektem - Jeśli nie mamy doświadczenia w tworzeniu specyfikacji warto znaleźć osobę lub firmę, która będzie w stanie pomóc nam w jej tworzeniu. Może nam to zaoszczędzić dużo czasu i przykrości związanych z wyborem nie odpowiedniej firmy programistycznej. Tego typu osoba lub firma powinna przeprowadzić z nami wywiad na temat tego jak ma działać program, a następnie przygotować dużo bardziej techniczną i łatwiejszą do wyceny specyfikację dla innych firm.

Podsumowując

Jeśli zdecydujemy się na realizację naszego projektu, na samym początku zastanówmy się jak bardzo jest złożony. Czy wymaga pracy programistów czy jedynie pomocy ze strony WebMaster-a. Warto sprawdzić czy firma programistyczna, której zamierzamy zlecić wykonanie aplikacji, pracuje w technologii jaka nas interesuje. Czy bazuje na gotowych frameworkach, tworzy automatyczne testy i czy przekazuje autorskie prawa majątkowe. Przed ostatecznym podjęciem decyzji warto również zweryfikować referencję oraz jeśli to możliwe portfolio tej firmy. Dzięki tym uwagom dużo łatwiej będzie nam odfiltrować wszystkie te firmy, które nie spełniają naszych oczekiwań i wybrać tą, która posiada najlepsze kwalifikacje.