Dlaczego consulting jest ważny w wyborze technologii dla twojego projektu
Przed rozpoczęciem realizacji jakiegokolwiek projektu, jednym z etapów przygotowawczych do jego implementacji, (czyli rozpoczęcia pracy nad nim), jest dobór technologii, której chcesz użyć do zrealizowania twojego pomysłu. Uważam, że jest to jedna z kluczowych decyzji, a zarazem jedna z trudniejszych rzeczy, jaka przed Tobą stoi na tym etapie. Oczywiście dobór nazwy, wyglądu logotypu, czy też nazwy domeny również jest istotna, ale są to elementy, które są w dość łatwy sposób możliwe do zmiany. Przepisanie projektu już istniejącego (czy też już trwającego) pod nową technologię oznaczać może dla Ciebie znacznie większe koszty i zająć o wiele więcej czasu. Jeśli chcesz się uchronić przed taką sytuacją, to zapraszam do poniższego artykułu.
Nie, nie znasz technologii
Często w naszej branży (IT) można usłyszeć, że w jeden rok możliwa jest rewolucja tejże branży.Wystarczy powstanie nowego języka bądź narzędzia, aby wszystko obrało inny kurs. Nawet osoby będące w IT od wielu lat, nie są w stanie nadążać za wszystkimi zmianami, zwyczajnie jest to niemożliwe. Jeśli jednak dalej uważasz, że masz taką wiedzę i dalej utrzymujesz, że jesteś w stanie określić technologię, w której zostanie stworzony Twój projekt, to poznaj tylko jeden fakt z wielu, który zobrazuje Ci, z czym się mierzysz.
Obecnie, by pracować przy projekcie jako programista (mam tutaj na myśli technologie webowe), należy znać wiele technologii i narzędzi. Na przykład programista backendowy. Jeśli nie wiesz, kim jest taki programista to użyję prostej analogii. Po rozkręceniu obudowy zegarka widzisz mnóstwo turbin, kółek i innych elementów. Backend developer analizuje jak ten mechanizm powinien działać, planuje jego budowę a następnie go tworzy z wielu elementów i sprawia, że zaczyna działać. Natomiast reszta zegarka, czyli obudowa, jej złożenie, podłączenie wskazówek do mechanizmu to już rola frontendowca.
Back-end developer to osoba, która zna/bądź potrafi przynajmniej:
- Jeden język programowania
- Pracować z relacyjną bazą danych oraz umieć stworzyć schemat relacji pomiędzy danymi
- Przynajmniej jeden framework
- Pisać testy
- Umieć czytać dokumentację techniczną
- Znać zagadnienia związane z architekturą API
- Mieć wiedzę z konfiguracji środowiska pracy aplikacji
- Znać wzorce projektowe
Przy każdym z tych punktów można określić czas, którego człowiek potrzebuje, aby opanować go na poziomie przynajmniej dobrym. Łącznie otrzymamy kilka lat ciągłego siedzenia w kodzie. A teraz weź pod uwagę to, że do doboru technologii do swojego projektu, potrzebujesz kogoś z wiedzą znacznie większą oraz opartą o praktykę i doświadczenie w pracy z klientem (a nie studiowanie książek i przeglądanie Google). Zauważ też, że nie wspominam tutaj o innych osobach jak Project Manager, DevOps, czy też Front-endowiec. Czy dalej uważasz, że Ty lub firma, którą poprosiłeś/-aś o pomoc, macie wystarczającą wiedzę?
Ufaj firmom sprawdzonym
Przez wiele lat miałem styczność z klientami, którzy przesyłając zapytanie ofertowe wskazywali w nim technologię, w której chcieliby, aby zrealizowano im projekt. Właściwie ma to miejsce do tej pory i nie neguję tego jako złej praktyki. Oczywiście fajnie by było, aby ten wybór był dokonany przez osobę doświadczoną. Ale tak najczęściej niestety nie jest.
Bardzo zastanawiające jest to, że przy projektach o bardzo dużych budżetach, firmy które piszą specyfikację dla klienta (na przykład przy projektach unijnych), nie mają wystarczającej wiedzy technicznej. Zdarzyło mi się zatem nie raz łatanie takich dziur niewiedzy i uświadomienie klientowi, że coś trzeba zrobić inaczej, używając innej technologii, bo obecna nie pozwala na to, co opisano w dokumentacji. A warto nadmienić, że klient otrzymał już zgodę na realizację projektu, duże pieniądze na jego realizację, ale pod warunkiem dotrzymania zapisów z dokumentacji. nie, aczkolwiek kosztowało to samego klienta bardzo dużo niepotrzebnego stresu.
Warto zatem przy wyborze technologii do projektu (już nawet średnio budżetowego) skonsultować to z firmą, która:
- Ma długoletnie doświadczenie na rynku (min.5 lat)
- Zrealizowała do tej pory średnie jak i duże projekty w różnych technologiach
- Pracowała dla polskich i zagranicznych firm
- Tworzyła w różnych technologiach
- Tworzy rozwiązania indywidualne dla klienta pod jego potrzeby (a nie używa jedynie gotowych rozwiązań).
Szanuj swój czas i pieniądze
Dla każdego z nas czas i pieniądze to (mierzalne) kryteria, które przy prowadzeniu naszego biznesu są najistotniejsze. A szczególnie jeśli chcesz zainwestować swój czas i pieniądze w projekt, który ma odmienić Twoją firmę, bądź Twoje życie.
Niestety często nie zdajesz sobie sprawy z tego, że wydając pieniądze, na consulting dla twojego projektu oszczędzasz znacznie więcej. Oszczędzasz na tym, że unikasz błędów ze źle podjętej decyzji, które prędzej czy później zaczną się pojawiać, a za które zapłacisz w późniejszym czasie. Pisząc o późniejszym czasie, mam na myśli okres nawet po zrealizowaniu projektu. Wyobraź sobie sytuację: stworzono dla Ciebie projekt, w którym zastosowano technologię, która po roku funkcjonowania okazała się niewystarczająca dla Twoich potrzeb. Jest ona trudna do skalowania co może zostawić Cię w tyle za konkurencją. Może to doprowadzić, do tego, że ponownie włożysz sporo swojego czasu i pieniędzy, aby elementy na to wpływające poprawić, a może nawet stworzyć od nowa.
Unikaj trendów
Często na konferencjach programistycznych słucham prelegentów, którzy próbują przekonać nas do tego, że dane podejście jest jedynym możliwym i rozwiąże wszystkie nasze problemy. W rzeczywistości nigdy tak nie jest, bo nie ma rozwiązań bez wad. Przykładem jest budowanie aplikacji w oparciu o mikroserwisy. Obecnie istnieje trend takiego podejścia i wielu klientów od razu zgłaszając wymagania do swojego projektu, chce, aby był on oparty o to podejście i najlepiej jeszcze, żeby to było w chmurze (na przykład w AWS). Gdy pytam dlaczego, to argumentem jest to, że tak robią teraz wszyscy. Takie osoby nie mają wiedzy na temat tego czy i kiedy warto, takiego podejścia używać. A przecież może istnieć rozwiązanie prostsze i tańsze. Takie które w miarę potrzeby można dostosować tak, aby dawało nam to, co dają nam architektury rozproszone. Przecież nie każdy projekt musi być od początku z założenia zbudowany tak jak architektura, nad którą pracują np. zespoły w Allegro.
Jeszcze ciekawszym zjawiskiem jest wybór języka programowania. Często klienci chcą stworzyć swój projekt w danym języku programowania, bo używa go na przykład...Google. Niestety nie są świadomi, że Google, jak i inni potentaci używają wielu języków programowania i dobierają go pod swoje potrzeby. Obecnie na topie języków programowania jest Python, czy jednak jest to najlepszy język dla rozwiązań webowych? Według mnie, nie w każdym aspekcie. W wielu wykorzystaniach można wskazać kilka innych języków. Dobór technologii idzie za potrzebami biznesu, a nie za trendami, czyli popularnością danej technologii.
Technologie wpływają na koszt projektu
Warto również, abyś zdał sobie sprawę z tego, że wybierając technologię do swojego projektu, decydujesz o jego budżecie. Być moje zdanie jest dla Ciebie mało zrozumiałe, więc opiszę na przykładzie, o co mi w tym wątku chodzi.
Załóżmy, że chcesz zrealizować wewnętrzny system do zarządzania dokumentami dla Twojej firmy liczącej 1000 osób. Jako firma z branży finansowej, spotykasz się w branży z osobami, które już mają taki projekt. Najczęściej słyszysz, że system został stworzony w oparciu o Java bądź .NET. Bo takie technologie głównie wybierają firmy w tej branży. I wszystko jest w porządku, bo przecież to są technologię używane przez banki, firmy ubezpieczeniowe. Czy w tym przypadku jesteś w stanie określić, dlaczego zdecydowano się na te technologie? Czy można Twoje rozwiązanie stworzyć w innej technologii, znacznie taniej, zachowując te same standardy i wypełniając twoje wymagania? Osobiście uważam, że odpowiedzi na te pytania, wymagają dużej wiedzy i doświadczenia i tutaj proponuję ci, abyś rozważył skorzystanie z pomocy eksperta.
Jeśli zatem liczysz się z budżetem firmy na realizację projektu i kosztami utrzymania projektu po jego zrealizowaniu, to warto skonsultować to z ekspertem. Wybór technologii niesie za sobą również wybór specjalistów do jego zrealizowania i późniejszego utrzymania. Dla przykładu specjalista Java na tym samym poziomie, co specjalista PHP, zarabia nawet dwa razy więcej, co dla Ciebie może oznaczać przynajmniej dwa razy większy koszt wykonania projektu.
Podsumowanie
Zanim odpowiesz sobie, czy warto wziąć pod uwagę consulting w zewnętrznej firmie i wydać na to pieniądze, odpowiedz sobie na pytanie, czy jesteś kompetentny, aby samemu podjąć tak kluczową decyzję, jak wybór technologii do projektu Twojego, bądź Twojej firmy? Jeśli masz jakiekolwiek obawy to zwróć się o pomoc do osób kompetentnych. Nawet jeśli ta osoba stwierdzi, że nie jest w stanie Ci pomóc (bo może zajmować się inną działką w IT), to być może będzie znała kogoś godnego polecenia. Nie podejmuj decyzji na podstawie artykułów w internecie, opinii znajomych czy też Twojego ogólnego rozeznania, zawsze stawiaj na doświadczenie i wiedzę opartą o praktykę.
Nasza firma przede wszystkim specjalizuje się w rozwiązaniach webowych, tworzonych w oparciu o PHP i JavaScript. Są to jedne z najczęściej używanych języków programowania, zapewne dlatego, że są sprawdzone i pozwalają na realizację nawet najbardziej wymagających potrzeb. A zatem jeśli już realizujemy consulting to jedynie w ramach naszej specjalizacji. Osobiście radzę ci, abyś właśnie w takich firmach szukał wsparcia, zwłaszcza, gdy na pokładzie ma ona bardzo doświadczone osoby.
Co zatem tak dokładnie może ci dać consulting techniczny? Z mojej perspektywy i dotychczas wykonanych konsultacji, wyodrębnił bym następujące elementy:
- Przeanalizowanie twoich potrzeb i zaproponowanie optymalnego zestawienia technologii (języków programowania, frameworków, narzędzi, baz danych, rozwiązań chmurowych, zewnętrznych API)
- Określenie możliwych architektur informatycznych (dobór serwera, oszacowanie możliwych obciążeń i kosztów)
- Określenie zagrożeń i problemów, jakie mogą się pojawić w przyszłości
- Warsztaty z zakresu technologii, które zaproponujemy do twojego projektu
- Większe bezpieczeństwo twojej inwestycji