Jak skutecznie wybrać język programowania do projektu
Około roku temu dostałem największą szansę w mojej karierze — kierownictwo zapytało mnie, czy nie chciałbym pokierować nowym zespołem cloud-native. "No pewnie, że chcę" — odpowiedziałem. Spędziłem trochę czasu na kompletowaniu zespołu złożonego z myślących przyszłościowo osób z działu zajmującego się developmentem, które, jak sądziłem, zapewnią zespołowi sukces. Doświadczenie tych ludzi wahało się od kilku do ponad 20 lat.
Byliśmy dużą firmą zajmującą się oprogramowaniem dla przedsiębiorstw, głęboko osadzoną w stosie technologii Microsoftu. Wiedzieliśmy, że wszystko może stanąć na głowie, ale jedyną zmianą, której nigdy nie rozważaliśmy, była zmiana języka programowania. Dlaczego?
Bo zawsze pracowaliśmy z jednym i tym samym.
Po co zmieniać coś, co dobrze działa? Znamy nasz język dobrze, więc nie musimy tracić czasu na naukę nowego. Cały nasz czas poświęcimy na naukę takich rzeczy jak CI/CD, programowanie serverless oraz NoSQL.
Stary i nowy porządek
W swojej książce pt. Sacred Cows Make the Best Burgers Robert Kriegel mówi o tym, jak stare procesy biznesowe przeszkadzają w innowacji. Mowa tutaj o rzeczach, które należało poddać ponownej ocenie dawno temu, ale nigdy nie były one kwestionowane, ponieważ zawsze je wykonywano.
Szybko zdaliśmy sobie sprawę, że język programowania, do którego wszyscy byliśmy przyzwyczajeni, nie będzie działać w naszej nowej aplikacji. Zbudowaliśmy kilka funkcji Lambda, które były bardzo wolne ze względu na cold start. Rozważaliśmy obejście problemu, ale doszliśmy do wniosku, że tak naprawdę będziemy walczyć z naszymi własnymi narzędziami.
Postanowiliśmy więc zaburzyć stary porządek.
Decyzja o pójściu pod prąd była trudna, ale stwierdziliśmy, że jest to konieczne. Zakłócanie czegokolwiek oznacza zazwyczaj stawienie temu czoła samemu, ponieważ nie ma żadnych procesów, które mogłyby pomóc. Ale jeśli masz solidny zespół, to wszystko jest możliwe.
Wybór właściwych narzędzi
Nie użyłbyś młotka do wkręcenia śruby w kawałek drewna. Starałbyś się raczej znaleźć coś bardziej odpowiedniego, np. wiertarkę lub wkrętarkę. Twój język programowania jest Twoim narzędziem. Aby wykonać najlepszą aplikację w jak najkrótszym czasie, użyj najlepszego narzędzia.
Oto ogólnie przyjęte przypadki użycia dla głównych języków programowania:
- Python — data science, uczenie maszynowe i backend
- C# — aplikacje Windows i gry
- Java — backend, aplikacje Androida
- JavaScript — szybki development webowy
- Swift — aplikacje iOS
Oczywiście istnieje wiele innych języków, ale pamiętaj, że niektóre bardziej ułatwiają rozwiązanie danego problemu niż inne.
Konieczność zmiany
Na początku procesu tworzenia oprogramowania masz okno, w którym możesz zmienić język programowania przy minimalnym wpływie na produktywność. Zrobiłeś koncepcję, znalazłeś pewne pułapki i wydaje Ci się, że ryzyko użycia danej technologii jest większe niż korzyści.
Warto by się zatem zastanowić nad zmianą technologii.
Minimum pracy zostało wykonane. Zbierzcie się jako zespół i porozmawiajcie o zaletach i wadach. Jeśli zespół zgodzi się, że dany język programowania nie jest właściwy, to dokonaj zmiany najwcześniej, jak to możliwe. Im dłużej będziesz czekać, tym trudniej będzie wykonać refaktoryzację.
Zdarzyło się to w moim zespole nie raz, a dwa razy. Podjęliśmy szybką decyzję o rozpoczęciu korzystania z Pythona na wczesnym etapie procesu. Po kilku tygodniach zdaliśmy sobie sprawę, że nie damy rady utrzymać i rozwijać projektu w tym języku w naszym konkretnym przypadku użycia. Zebraliśmy się więc, przedyskutowaliśmy nasze opcje i zmieniliśmy język. Zachowaj czujność we wczesnych fazach projektu, aby całkiem wcześnie się zorientować i wprowadzić zmianę na lepsze.
Przyszłość projektu
Nie będziesz tworzyć jednego produktu do końca swojej kariery. Nadejdzie moment, w którym albo zostaniesz przeniesiony do nowego działu, albo opuścisz firmę i zaczniesz zajmować się czymś zupełnie innym. Oznacza to, że musisz pomyśleć o swoich następcach, czyli o ludziach, którzy będą utrzymywać Twoją apkę po Tobie. Zastanów się więc, co ułatwi im życie i zadaj sobie następujące pytania:
- Czy ten język jest standardem?
- Czy mógłbym zatrudnić pierwszą lepszą osobę, aby tworzyła tę aplikację przy jak najkrótszym okresie wprowadzenia do projektu?
- Czy jest wsparcie społeczności?
- Czy znajdę odpowiedzi na moje pytania na Stack Overflow?
Twoim zadaniem jako lidera jest wywarcie wpływu na swoją firmę. Choć brzmi to głupio, to wybór odpowiedniego języka programowania dla projektu może zdecydować, czy wpłyniesz na niego w sposób pozytywny, czy negatywny.
Podsumowanie
Najgorsze, co możesz zrobić, to zignorować pewne opcje, ponieważ wydają się za trudne. Idź w danym kierunku nie dlatego, że tak jest łatwiej, a dlatego, że to właściwa droga. Argument, że zawsze robiłeś to w taki, a nie inny sposób, też nie jest tu najlepszy.
„Jeśli chcesz czegoś nowego, musisz przestać robić rzeczy po staremu”. - Peter F. Drucker
Spróbuj z takim językiem programowania, który najlepiej rozwiąże Twój problem. Jeśli nie zadziała, wyciągnij wnioski i poszukaj innego. Podejmuj zwinnie i świadome decyzje oraz rób wszystko najlepiej, jak potrafisz. Przekonasz się, że najwcześniejsza decyzja dotycząca technicznej strony aplikacji (czyli tego, w czym jest napisana) będzie miała największy na nią wpływ. Każdy może nauczyć się czegoś nowego. Nie bój się chodzić nieuczęszczanymi drogami.
Oryginał tekstu w języku angielskim przeczytasz tutaj.