Jak wybrać odpowiednią firmę programistyczną
Kiedy chcesz zrealizować jakiś projekt, często stajesz przed faktem znalezienia odpowiedniej firmy, która wykona dla Ciebie dane zlecenie. Jest to trudne zadanie, bo jeżeli nie jesteś zaznajomiony z branżą, a do tego mało ,,techniczny” to pojawia się wtedy pytanie, jak dokonać wyboru, aby twój zamysł został zrealizowany idealnie. Najrozsądniejszym, pierwszym krokiem jest wysłanie zapytania do wielu firm, które można wyszukać w Internecie, a w odpowiedzi zapewne otrzymasz bardzo różne oferty i to zarówno pod kątem wyceny jak i samego wykonania projektu. Ze wszystkich, które otrzymasz wybieramy tą, która wydaje się być najbardziej atrakcyjna cenowo mając nadzieję, że zostanie wykonana rzetelnie. Sama cena to nie wszystko, składowe całości projektu, które mają dla Ciebie znaczenie to: doświadczenie programisty/zespołu programistów, obłożenie kalendarza i czasu wykonania, złożoność specyfikacji.
Małe firmy programistyczne, które nie mają doświadczenia, często nie potrafią niestety należycie wycenić kosztów stworzenia aplikacji czy konkretnego projektu. Branża programistyczna to dość specyficzna działalność gospodarcza. Zanim się zdecydujesz na wybór konkretnej firmy, należy sobie odpowiedzieć: czego potrzebujesz i oczekujesz oraz jak bardzo złożony jest ten projekt. Jeśli założenia są proste takie jak np. instalacja systemu blogowego na serwerze czy też wprowadzenie prostego modułu, warto rozważyć firmę, która zajmuje się właśnie takimi usługami i nie ma wtedy potrzeby angażowanie profesjonalnej firmy programistycznej.
Inaczej sprawa wygląda, jeśli projekt jest skomplikowany, wymagający szerokiej wiedzy technicznej oraz doświadczenia w tej materii. Chodzi tu np. o stworzenie aplikacji webowej z istniejącym panelem klienta, gdzie istnieje system płatności czy konta użytkownika. Do tego rodzaju usługi dokonanie odpowiedniego wyboru jest szczególnie istotne i należy położyć nacisk na specjalizację firmy programistycznej w tej dziedzinie. Jeśli postawimy na niewłaściwego wykonawcę, można stracić sporo pieniędzy, a projekt będzie niefunkcjonalny, niedokończony lub będzie działał niepoprawnie.
Na co położyć nacisk przy wyborze odpowiedniej firmy?
- Technologia — to klucz stanowiący podstawę poszukiwań. Każda firma może stosować całkowicie inny stos technologiczny, dlatego warto zapoznać się z tym czy wybrana firma pracuje w technologii, na której nam zależy. Cena za projekt będzie w dużej mierze uzależniona od złożoności planu, ale również od tego, w jakim języku pracuje programista. Jest to bardzo istotne, ponieważ koder bazujący na języku PHP zarabia mniej niż programista stosujący Java. Wysyłając zapytanie ofertowe należy zapytać, w jakim języku specjalizuje się firma oraz czy ma dodatkowe licencje, gdyż może się to wiązać z kosztami za serwery czy bazy danych. Sporym ułatwieniem są rozwiązania chmurowe, ponieważ cieszą się szybszym skalowaniem i uproszczają całkowicie procedurę monitorowania serwera, gdyż część techniczną zajmuje się dostawca chmury. To świetne rozwiązania dla firm o ograniczonym budżecie. Dzięki elastyczności, jaką daje chmura, można w każdej chwili zmienić jej moc obliczeniową dostosowaną do konkretnych wymagań.
Podczas ogólnej wyceny należy zwrócić uwagę czy firma stosuje rozwiązania webowe, czy standardowe programy, które instaluje klient na swoim sprzęcie. Jest to o tyle ważne, że obecnie odchodzi się od programów desktopowych z uwagi na koszty obsługi oraz złożoności całego procesu, który zależy od systemu operacyjnego klienta. Aplikacje webowe dostępne są dla każdego użytkownika Internetu bez względu na to czy w danej chwili korzysta ze smartfona, czy innego sprzętu, na którym jest dany system operacyjny np. Windows. Firmy, które korzystają z technologii webowych, zwiększają sprawność aplikacji oraz skracają czas reakcji na powstałe błędy. Należy wspomnieć o jeszcze jednej ważnej sprawie mianowicie czy ewentualny wykonawca naszego projektu korzysta z aktualnej wersji języka. Jest to istotne, ponieważ jeśli bazuje na przestarzałej wersji, nigdzie nie supportowanych rozwiązaniach można ponieść dodatkowe koszty w przyszłości. Użycie nieaktualnych rozwiązań jest nieefektywne i niebezpieczne, ponieważ wszystkie luki, które zostały wcześniej wyłapane, zostały naprawione w kolejnych wersjach.
- Framework — to platforma programistyczna, na którym buduje się aplikacje, a programiści dzięki niej pracują sprawniej i efektywniej, to z kolei mniejsza ilość linijek kodu oraz lepsza jakość. Takie rozwiązanie daje ogrom gotowych schematów i ulepszeń. Mając gotowe komponenty koder może skupić się w pełni na budowaniu konkretnej aplikacji. Ważne jest, aby firma pracująca nad naszym projektem korzystała z ogólnodostępnych frameworków np. dla projektów PHP może to być framework Laravel dzięki temu zyska się pewność, że w przyszłości będzie możliwość dalszego rozwoju aplikacji.
- Prawa autorskie majątkowe — przed podpisaniem umowy warto zapytać, czy uwzględnia ona przekazanie ich, ponieważ od tego będzie zależało czy będzie można w konkretnej sytuacji dokonywać zmian w kodzie aplikacji. Jeśli takie prawa nie zostaną nam przekazane, tylko twórca będzie mógł dokonać poprawek. Jest to też ważne, bo jeśli nie uzyskasz takich uprawnień, jesteś przywiązany do tej firmy, a również skazany się na brak rozwoju projektu, jeśli twórca nie wyrazi chęci współpracy. Musimy też wiedzieć, że przekazanie praw majątkowych ma wpływ na cenę, ponieważ programista nie może wcześniej napisanej aplikacji wykorzystać gdzie indziej i musi stworzyć ją od początku, a cena w tym przypadku będzie znacznie wyższa.
- Open Source — to gałąź ruchu wolnego oprogramowania, którego celem jest swobodny dostęp każdego użytkownika do oprogramowania. W życiu codziennym znaczy to, że każdy użytkownik Internetu może w dowolnym momencie wykorzystać wcześniej napisany kod wtedy, gdy tworzy własne aplikacje. Każda profesjonalna firma programistyczna, która uczestniczy w tego typu projektach, nie ma nic przeciw temu, aby pokazać innym nad czym wcześniej pracowała, ponieważ potwierdza tym jakość pracy i ważność dokonań. Każda szanująca się organizacja programistyczna powinna nie tylko korzystać z projektu Open Source, ale również intensywnie wspierać rozwój już istniejących rozwiązań.
- Automatyczne testy sprawdzające — to już standard w obecnym programowaniu. Zdecydowanie zmniejszają ryzyko pojawienia się karygodnych błędów, zapewniając wysoką jakość kodu. Po zastosowaniu testów można w przyszłości rozbudowywać naszą aplikację i zmieniać jej działanie, co jest niemożliwe w przypadku większej aplikacji, gdzie nie na napisanych wcześniej testów. Niestety niewiele firm korzysta z tego rozwiązania zasłaniając się brakiem czasu czy brakami kadrowymi. Jest to błędne postępowanie, ponieważ kiedy nastąpi konieczność wprowadzenia poprawek lub zmian, w powstającej aplikacji mogą się pojawić niezaplanowane błędy, które zdecydują o poprawności jej działania.
- Potrfolio i referencje — stanowią idealne źródło na temat wykonanych zleceń i projektów oraz obrazują dokonania danej firmy, aczkolwiek w tej branży trudno jest je sprawdzić. Nie chodzi o brak chęci prezentacji własnego dorobku, a raczej o rodzaj umów z klauzulą poufności. Natomiast na pewno dobrym sposobem jest sprawdzenie referencji danej firmy, dlatego warto skorzystać z takich portali jak LinkedIn czy GoldenLine gdzie jest dużo informacji na temat danego programisty i firmy.
O czym jeszcze warto pamiętać?
Przede wszystkim o tym, że każdy klient tworząc zamysł projektu nie jest w tym ekspertem i myśli raczej biznesowo, a wszystko co z założenia ma być w projekcie zawarte wydaje się proste do wykonania. Programista patrzy na to technicznie i wie od samego początku jak bardzo może być to złożone zadanie. Większość firm nie przedstawi wiarygodnej wyceny na podstawie takiej wstępnej specyfikacji, jest to po prostu technicznie niemożliwe, ponieważ podczas realizacji projektu mogą wystąpić różne komplikacje, których wcześniej nie udało się przewidzieć. Generalnie można przyjąć, że napisanie 90% kodu zajmuje jednocześnie 90% czasu, a pozostałe 10% kodu zajmuje 90% czasu i to jest chyba kwintesencja pisania projektu.
Czasem to co na początku wydaje się być dziecinnie proste w perspektywie czasu okazuję się być trudniejsze niż się wydawało, a najtrudniejszym etapem jest ostatni etap tworzenia. Jeśli zatem nie mamy doświadczenia w tworzeniu specyfikacji poszukajmy kogoś kto to zrobi idealnie, a do tego znajdzie firmę, która zajmie się realizacją planu. Taki „planer” zrobi z nami wywiad na temat naszych oczekiwań, jak ma działać program, a później na tej podstawie przygotuję techniczną i łatwą w ocenie specyfikację i przekaże odpowiedniej firmie.
Reasumując. Kiedy zdecydujemy się na realizację projektu musimy zdawać sobie sprawę jak bardzo jest to złożony proces. Zadajmy sobie pytanie czy potrzebny nam programista czy może wystarczy pomoc ze strony WebMastera. Kiedy wiemy, że potrzebujemy programistów sprawdźmy w jakiej technologii pracuje firma, która zajmie się naszym zleceniem i czy pracuje na gotowych frameworkach, tworzy testy i czy przekazuje prawa autorskie i majątkowe. Przed ostateczną decyzją należy sprawdzić portfolio kilku firm i wybrać tą która ma najlepsze kwalifikacje oraz rekomendacje. Taką która sprosta naszym oczekiwaniom.
Other entries
Zawody przyszłości w branży IT (część 3)
Zgodnie z obietnicą przedstawimy Wam dziś kolejne zawody, które wchodzą z rozmachem na rynek pracy w branży IT i zaczniemy od: Trener / Mentor IT — zapotrzebowanie na specjalistów w IT to gorący temat i sprawia, że akurat w sferze szkoleń tworzy się nisza, a to z...
Zawody przyszłości w branży IT (część 2.)
Zaciekawiła Was pierwsza część artykułu o zawodach, które obecnie wchodzą na rynek pracy? Dziś przybliżymy Wam kolejne. Analityk Danych (ang. Data Scientist) — firmy i przedsiębiorstwa gromadzą coraz więcej danych każdego dnia. Dlatego też eksperci data science są...
Kilka zawodów przyszłości w branży IT (część 1.)
Branża technologiczna kwitnie i tworzy ogromną liczbę zawodów przyszłości. Właśnie teraz jest najlepszy czas, aby przekonać się, które stanowiska są topie, a zarazem są najlepiej płatnymi stanowiskami w branży technologicznej. Zaletą tych profesji jest to, że w wielu...