Jak dobierać technologie do projektu?
Masz marzenie. Olśniło Cię i w głowie narodziło się rozwiązanie Twoich codziennych problemów. Ta sytuacja Cię zawsze denerwowała. Teraz wpadłeś na pomysł i dzięki prostej aplikacji możesz zmienić nie tylko swoje, ale też życie innych.
- Nie jesteś osobą techniczną, więc szukasz ekspertów
- Ilu ekspertów, tyle opinii na temat tego, jak powinieneś zbudować aplikację
- Pojawiają się sprzeczne informacje i zaczynasz się w tym gubić
- Szukasz ratunku – płacisz za konsultacje lub co gorsze podejmujesz samodzielnie decyzje o wyborze technologii
- Uruchamiasz aplikację – tylko ze względu na dobór technologii nie osiągasz sukcesu
Powyższy scenariusz jest mroczny. Chciałem, żebyś wczuł się w klimat i poznał bardzo częsty scenariusz realizacji aplikacji. Prowadzisz biznes lub jesteś doskonałym pracownikiem. Potrafisz przecież radzić sobie ze zdobywaniem informacji. Nie podejmujesz szybkich decyzji. Mimo wszystko zderzasz się ze światem informatycznym i wykonawcy wybijają Cię z rytmu na tyle, że już nie jesteś tak doskonały.
Skąd to wiem? Znam takie przypadki!
W 2019 roku skontaktował się z nami potencjalny partner. Osoba doskonale radząca sobie na co dzień z organizacją. Manager – prowadzi swój zespół i osiąga sukcesy. Doskonale wie do czego dąży – na 2019 rok postawił sobie cel, aby zacząć realizować swoje marzenie.
Marzenie, które w formie papierowej leżało do tej pory w szufladzie.
Pomysł na aplikację był prosty. Jak się o nim dowiedziałem, to w głowie pojawiła mi się zielona lampka – to jest genialne!
Jako osoba dobrze zorganizowana i porządnie przygotowana, sam zbudował cały model biznesowy (oparty o Business Model Canvas). Przygotował też mapę produktu.
Osobiście byłem w szoku – wszystko było dopięte na ostatni guzik. Teraz naszedł czas na poszukiwanie wykonawcy. Takiego, który doprowadzi pomysł do sukcesu, a nie tylko wystawi fakturę za zbudowanie aplikacji.
Nasz potencjalny partner opracował model biznesowy, przeanalizował konkurencję, zbudował strukturę kosztów i przychodów, a także przygotował mapę produktu w oparciu o opinie grupy docelowej. Co może teraz pójść nie tak? Oczywiście produkt może się nie przyjąć. W tym jednak przypadku, problem pojawił się dużo wcześniej.
Otrzymaliśmy cały zestaw informacji o produkcie. Zorganizowałem spotkanie naszego zespołu. Oceniliśmy, ile mniej więcej będzie trwało zbudowanie aplikacji. Dobraliśmy wspólnie technologie, które według nas powinny być użyte do realizacji.
Na tej podstawie nasz Business Manager przygotował ofertę. Umówił się na spotkanie z potencjalnym partnerem i wszystko jasno przedstawił. Po spotkaniu przesłał ofertę w formie PDFa. Czekaliśmy na decyzję.
Po tygodniu dostaliśmy maila:
Panowie, nie mam pojęcia jakiego wykonawcę wybrać. Nie chcę patrzyć tylko na cenę, więc skupiam się na technologiach. Każdy z wykonawców mówi co innego!
Pewny siebie manager nagle stał się dzieckiem we mgle. Na 8 ofert, otrzymał 5 różnych propozycji technologii. Oprócz tego, ceny w poszczególnych ofertach drastycznie się różniły. Dlaczego?
Jedna aplikacja, a różne technologie – jak to możliwe?
Mamy XXI wiek. Powstało już wiele języków programowania. Świat pędzi. Za nim pędzi technologia, która niejednokrotnie jest dużo do przodu przed biznesem.
Nie oszukujmy się – na rynku brakuje programistów i inżynierów. Programiści świadomie chcą ułatwiać sobie życie – tworzą frameworki. Framework to w dużym uproszczeniu gotowy szkielet do tworzenia aplikacji, który posiada wiele gotowych funkcjonalności. Programista może je rozszerzać, co powoduje, że powtarzalne elementy aplikacji są już gotowe.
Biznes posiada swoje cele – programiści i inżynierowie swoje. Biznes tworzy długoterminowe cele – nawet na 5 lat. Wraz z programistami dobiera framework X – w ciągu 5 lat powstają 3 inne frameworki. Niejednokrotnie okazuje się, że są lepsze od tych, które już istnieją.
Programiści muszą nabrać w nich doświadczenia – przecież nie mogą od razu budować skomplikowanych aplikacji, nie znając zupełnie zasad nowego frameworka. Zanim się go nauczą, to mija trochę czasu.
No dobrze, ale żadna powyższa informacja nie wyjaśnia, skąd wzięło się aż 5 różnych zestawów technologii. Odpowiedź jest bardzo prosta. Każda firma programistyczna (wykonawca) posiada określonych specjalistów. Nie można mieć zatrudnionych programistów wszystkich technologii – no chyba, że jest to firma ponad 1000 osobowa. Dodatkowo, realizując kolejne projekty programiści czasami nie nadążają z nauką nowych technologii.
W takim przypadku firma posiadająca programistów znających język programowania X będzie za wszelką cenę polecała ten język. To smutne, że w ten sposób działają firmy, ale tak właśnie jest. Często bywa tak, że osoba odpowiedzialna za ofertowanie już na początku wie, iż ta technologia się nie sprawdzi – ostatecznie nic z tym nie robi, bo liczy się zdobycie projektu.
Osobiście uważam, że jest to swojego rodzaju oszustwo – potencjalny partner nie ma wiedzy technicznej. Skąd on może wiedzieć co jest dobre? Tak jak w przypadku opisanym powyżej – nawet najbardziej pewna siebie osoba może zgłupieć. Otrzymuje przecież „rzetelne” informacje od inżynierów i specjalistów.
Technologia nie ma większego znaczenia
Nic bardziej mylnego. Dobór technologii ma ogromne znaczenie. Powiedziałbym, że w wielu wypadkach decyduje o sukcesie lub porażce projektu.
Prosty i krótki przykład. W lipcu 2019 roku trafił do Nas partner, który rozpoczął realizację aplikacji webowej. Znalazł wykonawcę, który zaczął prace na początku roku. Na dzień kontaktu z nami aplikacja nie była jeszcze gotowa.
Dlaczego? Bo wykonawca wybrał do stworzenia aplikacji framework, który od lat nie jest już wspierany. Na rynku jest niewielu programistów, którzy jeszcze potrafią i chcą w nim pracować. Wykonawca rozstał się z dwoma programistami i powstał ogromny problem, co zrobić dalej z aplikacją.
Mamy doświadczenie w tym frameworku, ale nie podjęliśmy się współpracy. Technologia zbyt niepewna i nie daje możliwości stabilnego rozwoju oprogramowania.
Jak widzisz, technologia nie tylko wpływa na samo działanie aplikacji. Ma ogromny wpływ na to, czy w ogóle będą dostępni specjaliści. A jeżeli będą dostępni to za jaką cenę.
W doborze technologii ważna jest również społeczność programistów (określana jako community). Standardem jest, że jeżeli technologia posiada szeroką społeczność specjalistów, to jest łatwiejsza w utrzymaniu i rozwoju. W Internecie można wtedy znaleźć wiele gotowych elementów oraz odnaleźć odpowiedzi na niestandardowe pytania. Mniej popularne języki programowania nie dają takich możliwości, co przekłada się na większą ilość godzin prac programistów.
Dlaczego jeszcze dobór technologii ma znaczenie?
Wyobraź sobie, że chcesz zbudować prosty rower – kierownica, rama, koła, łańcuch. Jedziesz do pobliskiego sklepu rowerowego. Kupujesz gotowe elementy. Dokładasz do tego trochę swojej pracy i rower gotowy. A teraz wyobraź sobie, że jedziesz nie do pobliskiego sklepu rowerowego, ale do globalnej firmy produkującej rowery i prosisz o budowę roweru. Koszt stworzenia roweru wyniesie 10 razy tyle.
Jak to odnosi się do technologii? Nie możesz wybierać zbyt skomplikowanych frameworków, jeżeli chcesz zbudować coś prostego. Pamiętaj jednak, że nie oznacza to zatrudniania do pracy niedoświadczonych programistów – bo może się to skończyć bardzo źle.
Gdzie szukać pomocy?
Zdaję sobie sprawę, że jeżeli jesteś na początku drogi, to rzeczy które omawiam mogą wydawać się trudne. Często zdarza się, że osoby zaczynające podejmują decyzję o zatrudnieniu dyrektora technicznego (CTO).
Według mnie są dwie strony medalu takiego zabiegu. Z jednej strony zatrudniając taką osobę zyskujesz wiedzę techniczną, która pokieruje projektem. Z drugiej strony, taka osoba to bardzo duże obciążenie budżetu. Tym bardziej, że dopiero zaczynasz.
Osobiście sugeruję nie zatrudniać takiej osoby. Poszukaj wśród swoich znajomych ludzi, którzy mogą Ci doradzić. Sam też poczytaj i udaj się na kilka konferencji technicznych. Nie musisz stawać się inżynierem, ale wypadałoby wiedzieć chociażby czym różni się framework Vue od Angulara lub czym jest aplikacja webowa, a czym strona internetowa.
Technologie do tworzenia aplikacji webowych
Jesteśmy specjalistami od aplikacji webowych, dlatego też chciałbym Ci trochę doradzić, jakie technologie dobierać do ich budowy. To co jest bardzo istotne – nie wymieniam poniżej wszystkich dostępnych technologii. Jest ich bardzo dużo. Wymieniam te, które znam i jestem pewny tego co piszę.
Aplikacja webowa – samo słowo aplikacja często kojarzy się od razu z aplikacją na telefon. Nic bardziej mylnego. Istnieją też aplikacje webowe (internetowe), które uruchamiane są praktycznie tak samo jak zwykłe strony www.
Strona www | Aplikacja webowa |
Uruchamiana po stronie serwera – gotowe treści są wysyłane do przeglądarki | Uruchamiana po stronie przeglądarki użytkownika |
Proste treści, zdjęcia, wideo | Zaawansowane funkcjonalności wraz z przetrzymywaniem dużej ilości danych |
Wymagany dostęp do Internetu | Możliwość działania i uruchamiania offline |
Ma charakter informacyjny | Ma charakter interaktywny |
Zazwyczaj przy realizacji swojego pomysłu, będziesz miał do czynienia z aplikacjami webowymi. Aplikacja webowa to warstwa prezentacyjna – czyli coś, co widzi użytkownik. Dodatkowo do pełnego działania potrzebna jest logika biznesowa – czyli część po stronie serwera, w której zawarta jest cała logika obsługi danych.
Poniżej przedstawię popularne frameworki i ich zastosowanie do warstwy prezentacyjnej:
- Angular 2+ – framework stworzony przez Google, wykorzystujący język TypeScript. Język ten pozwala na programowanie obiektowe, co w skrócie oznacza większą kontrolę nad danymi i ich spójnością. Jak widać na poniższym screenie, język TypeScript staje się bardzo popularny w ostatnich latach. Angular posiada wysoki próg wejścia, co oznacza, że programiści potrzebują więcej czasu na naukę. Natomiast idealnie nadaje się do aplikacji dużych, które będą przetwarzać spore zbiory danych. Dodatkowo, dzięki swojej architekturze pozwala na szybki rozwój aplikacji w przyszłości. Doskonały do aplikacji typu: aplikacje bankowe, aplikacje do zarządzania danymi (typu CRM, ERP, CMS itp.), platformy szkoleniowe, sklepy internetowe
- Vue – framerowk dużo prostszy i w obecnych czasach wielu programistów zaczyna swoją przygodę właśnie od jego nauki. Doskonale nadaje się do niedużych aplikacji. Dobrym standardem jest używanie tego frameworka do budowy prototypów aplikacji, aby sprawdzić pomysł. Czym jest prototyp (czyli MVP) już pisaliśmy. Nie oznacza to, że Vue nadaje się tylko do MVP. Powstają większe aplikacje, jednak ich utrzymanie jest trudniejsze.
- React – biblioteka, narzucająca architekturę komponentów. Stała się bardzo popularna w ostatnim okresie. Posiada wiele gotowych pluginów. Pozwala na dużo większą dowolność w architekturze aniżeli Angular. Jest to cecha z jednej strony wspomagająca pracę, jednak przy dużych i zaawansowanych aplikacjach może być zgubna. Oparta tak jak Vue o język JavaScript.
Kiedy podjąć decyzję o wyborze technologii?
Wybór konkretnej technologii powinien odbywać się bezpośrednio po przeprowadzeniu warsztatów produktowych. Na tym etapie wiesz już, jak będzie wyglądała pierwsza wersja Twojej aplikacji. Masz opisane konkretne funkcjonalności, a także określiłeś na czym powinieneś się skupić. Wytworzona mapa produktu pozwala na stworzenie jasnego obrazu produktu dla potencjalnego wykonawcy.
Na tej podstawie możesz dokonać wyboru technologii. Jeżeli widzisz, że w wybranych elementach pojawia się przetwarzanie danych, a w przyszłości może dojść do szybkiego wzrostu aplikacji – wybierz Angulara. Jeżeli uważasz, że chcesz niskim kosztem sprawdzić swój pomysł, a sama aplikacja nie zawiera nic skomplikowanego – wybierz Vue.
Dobór technologii – to nie jest takie proste!
Nawet specjaliści mają czasami problem z odpowiednim doborem technologii. Najważniejsze co powinieneś zapamiętać to analiza i poszukiwanie odpowiedzi. Nie zdawaj się tylko na jedną opinię wykonawcy – jak wskazałem w artykule, może być nierzetelna.
Bądź szczery i przekaż wszystkie wymagania biznesowe wykonawcy. Im więcej będzie wiedział o Twoim pomyśle oraz Twoich intencjach, tym lepiej dobierze odpowiedni język programowania. Nie bój się pytać – wykonawcy słyszeli już różne dziwne rzeczy. Pamiętaj, że nie ma głupich pytań.
My zawsze jesteśmy szczerzy i jeżeli uważamy, że dany projekt wymaga technologii, której nie jesteśmy w stanie wytworzyć – polecamy inne firmy. Nie staramy się robić nic na siłę!