Programowanie i WWW

Jak mądrze wybrać stack technologiczny do projektu?

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…

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

Lista linków z Newslettera:

Szybkie projektowanie w oparciu o design system



Obecnie większość aplikacji posiada wspólne komponenty i projektowanie od podstaw np. formularza czy nawigacji, rzadko ma jakiś sens. Prime to rozbudowany zestaw komponentów umożliwiający bardzo szybkie tworzenie interfejsów i stron www.

Jak stracić $10000000 budując aplikację do zadań?



Kilka wartościowych wskazówek od współzałożyciela Basecamp w odniesieniu do historii założyciela aplikacji Flow, który stracił ponad 10 mln dolarów.

Godny uwagi Design System



Ant Design to drugi co do popularności (po Material UI) design system oferujący gotowe komponenty do Reacta (są też wersje Angular/Vue). Zdecydowanie warto sprawdzić.

CI/CD prosto od Github



Github Actions to świetne rozwiązanie do automatyzacji workflow pracy z repozytorium oraz deploymentem aplikacji. Prosta obsługa i bezpośrednia integracja z Githubem to zdecydowany plus.

Proces „Getting Real”



To książka przedstawiająca proces Getting Real na podstawie którego 37signals zbudował 5 aplikacji, które odniosły sukces (m.in. Basecamp). Wiedza z tej książki przydatna jest dla każdego zaangażowanego w rozwój produktów.

UDOSTĘPNIJ ARTYKUŁ:

Powiązane artykuły

Programowanie i WWW

Proste rozwiązania

Proste rozwiązania stają się oczywiste w chwili gdy je zobaczymy. Dlaczego zwykle są poza naszym zasięgiem i co możemy z tym zrobić? Jak zobaczyć to, czego nie…

Programowanie i WWW

5 rzeczy, które programista musi wiedzieć o designie

Programowanie w pewnym punkcie łączy się z designem i od jakości tego połączenia w dużym stopniu zależy końcowy efekt. Nawet jeżeli designerzy i programiści zrobią "swoją robotę"…

Programowanie i WWW

5 nieoczywistych narzędzi programisty w 2021 roku

Pozostań na bieżąco!

Już nigdy nie przegapisz ważnych informacji, promocji oraz nowych kursów. Zapisz się na newsletter już teraz!

Zapisując się do newslettera akceptujesz naszą politykę prywatności