Masz już konto? Zaloguj się
Artykuły

Jak mądrze wybrać stack technologiczny do projektu?

Opublikowany 31 sierpnia 2023

Rozpoczynasz nowy projekt i jesteś odpowiedzialny za jego dalszy rozwój. Przed Tobą decyzje dotyczące technologii, frameworków i narzędzi. Jak wybrać mądrze i czy to w ogóle możliwe?

Szybki kontekst: mam za sobą kilkanaście większych projektów działających na skali do ~2 mln UU (Unikalnych Użytkowników) oraz kilka rozbudowanych rozwiązań dla Biznesu. W praktycznie każdym z nich byłem odpowiedzialny za najważniejsze decyzje dotyczące technologii oraz często rozwoju samego produktu.

Poniżej znajdziesz kilka moich spostrzeżeń i wniosków opartych o ponad 10 lat pracy.

Zasada #1: Poznaj kontekst biznesowy

Im więcej posiadasz informacji biznesowych tym lepiej dla Ciebie. Mowa m.in. o: wiedzy o rynku i konkurencji, długoterminowej strategii firmy, krótkoterminowych celach, obecnej sytuacji, wizji founderów i/lub top managementu oraz użytkownikach końcowych.

Im więcej wiesz tym lepiej dla Ciebie. Uważaj tylko na pułapkę nieskończonej analizy i próby zadowolenia wszystkich. Szerokie zrozumienie całego kontekstu pozwoli Ci szybko podejmować lepsze decyzje.

Gdzie znajdziesz te informacje? Wszędzie. Największy nacisk połóż na: wiedzę o rynku, użytkowników końcowych oraz founderów.

Zasada #2: Znajdź balans pomiędzy przyszłością i teraźniejszością

Podejmowanie decyzji projektowych, szczególnie na początkowym etapie, ma długoterminowy wpływ na cały biznes. Naturalne jest więc to, że będziesz dążył do tego aby uniknąć przyszłych problemów.

Zaakceptuj jedno: problemy są nieuniknione.

Twoim zadaniem jest tylko obniżenie ryzyka ich wystąpienia. Uwzględnij to co masz (zasoby i wiedzę) i skup się na teraźniejszości, posiadając jedynie ogólną wizję przyszłości. Np. duża skala i niska wydajność aplikacji to problemy, które chciałbyś mieć. W momencie gdy startujesz (i w wielu przypadkach nigdy) nie mają one znaczenia.

Skup swoją uwagę na tym co ważne.

Czy to oznacza, że możesz zignorować przyszłe problemy? NIE. Musisz skupić się na tych, które są realnie ważne. W ich wyborze pomoże Ci Zasada #1.

Zasada #3: Zwracaj uwagę na hype

Co chwilę na rynku pojawiają się nowe narzędzia i technologie, które mają odmienić naszą rzeczywistość. Tylko niektóre z nich rzeczywiście to robią. Rozpoczynając projekt najlepiej polegać wyłącznie na sprawdzonych narzędziach z dużym community. Wybór popularnej technologii nie jest dobrym pomysłem z wyjątkiem sytuacji gdy cały projekt jest niesamowicie innowacyjny (np. wykorzystuje AI).

Tutaj ponownie najlepszym rozwiązaniem jest odpowiedni balans. Z jednej strony dobrze polegać na sprawdzonych technologiach i narzędziach,
z których korzysta wiele osób. Z drugiej jednak - zwykle programiści chcą pracować wykorzystując najnowszy stack. Miej to na uwadze, bo to od tego będzie zależało to, czy utrzymasz zespół oraz jak łatwo będzie Ci rekrutować nowe osoby.

Najgorszym doradcą są tutaj osobiste preferencje i podejmowanie decyzji
w emocjach.
Nie polecam również konsultacji z doświadczonymi programistami, którzy pracują tylko w jednej technologii bo ... polecą Ci technologię, w której sami pracują. To nie jest dobra odpowiedź.

Zatem: monitoruj sytuację na rynku ale wybieraj w oderwaniu od emocji
i osobistych preferencji.

Zasada #4: Nie czekaj i zostawiaj otwarte drzwi

Podejmuj decyzje możliwie jak najszybciej. Czas w przypadku projektu jest niemal zawsze jednoznacznie połączony z finansowaniem. Od tego jak zwinnie potrafisz działać w dużym stopniu zależy powodzenie całego projektu. Lepiej podjąć złą decyzję szybko i równie szybko ją naprawić niż tygodniami podejmować jedną dobrą.

Jednocześnie przy podejmowaniu decyzji zadbaj o to aby były możliwie odwracalne i to jak najniższym kosztem. W przypadku gdy nie jest to możliwe - staraj się wyjść poza schemat. Jeżeli nadal nie znajdziesz odpowiedniego rozwiązania, podejmij decyzję.

Każda decyzja to balansowanie ryzyka i przewidywanie konsekwencji. Jest to umiejętność, którą zdobędziesz wraz z upływem czasu.

Zasada #5: Wykorzystaj maksymalnie to co już masz

Za każdym razem kieruj się przewagami, które już posiadasz. Przykładowo jeżeli masz do dyspozycji zespół programistów React to trudno mi sobie wyobrazić sytuację, w której rozpoczynasz projekt w Angularze.

Natomiast takie decyzje nie zawsze są oczywiste. Wyobraź sobie, że masz zespół programistów PHP a potrzebujesz wejść w ekosystem JavaScriptu. Wtedy sytuacja się komplikuje. Tutaj jednak nadal trzeba trzymać się zasady wykorzystania tego, co masz do dyspozycji - np. oceń zdolność zespołu do zmiany technologii. To pomoże Ci w podjęciu decyzji.

Takich scenariuszy może być wiele, natomiast chodzi tutaj tylko o jedno:
w pierwszej kolejności skup się na tym co masz, dopiero potem sięgaj po to, co możesz mieć i zastanów się czy warto.

Podsumowanie

Podejmowanie decyzji o stacku technologicznym projektu nie jest łatwe. To co może Ci w tym pomóc najbardziej to: poznanie szerokiego kontekstu biznesowego oraz umiejętność podejmowania analizy w oderwaniu od swojego ego.

Polecane książki w temacie:
- Think Like a Rocket Scientist,
- Black Box Thinking,
- Good to Great
- Inspired