Od dawna zastanawiałem się, czym tak naprawdę jest praca programisty. Wydawało mi się, że to przede wszystkim pisanie kodu. Jednak z czasem zrozumiałem, że to tylko wierzchołek góry lodowej. Programowanie to przede wszystkim systemy - decyzje, procesy, komunikacja i radzenie sobie z chaosem. Obecnie uważam, że programista to tak naprawdę osoba rozwiązująca problemy, która polega na dobrym zespole, procesach i narzędziach, a kod jest tylko jednym z elementów tej układanki.
Management to fundament
Możesz mieć zespół geniuszy, ale przy fatalnym zarządzaniu projekt ma duże szanse na porażkę. Dobre zarządzanie to nie tylko planowanie i organizacja, ale także umiejętność radzenia sobie z nieprzewidywalnymi sytuacjami, motywowania zespołu i podejmowania trudnych decyzji.
Procesy i jasne priorytety dają strukturę, w której kod faktycznie dowozi wartość. Chaos zabije nawet najlepszego architekta.
Słabi programiści + dobry management > Dobrzy programiści + słaby management
Research to ważna część pracy
Godzina czytania dokumentacji to nie jest marnowanie czasu. Lepiej poświęcić czas na przeczytanie dokumentacji, niż spędzić godziny na wymyślaniu rozwiązania, które już istnieje. Istnieją sytuacje, gdzie prześledzenie dokumentacji daje ogromne korzyści np. performance, bezpieczeństwo, skalowalność.
Czytanie jest ważniejsze niż pisanie
Większość czasu spędzamy na czytaniu kodu, a nie jego pisaniu. Bardzo często się zdarza, że zmiana jednej linijki w kodzie jest wynikiem wielogodzinnej analizy i zrozumienia istniejącego kodu.
Jest to frustrujące, ponieważ nie widzimy efektów tej pracy, ale jest to jej kluczowy element. Im lepiej rozumiemy istniejący kod, tym lepiej możemy go modyfikować i rozwijać.
Testowanie na pierwszym miejscu
Kilka lat temu testy były dla mnie czymś, co trzeba zrobić, ale ich nie doceniałem. Na dzień dzisiejszy uważam, że testy są najważniejsze.
Napisanie prostego unit testu jest krótkim zadaniem, które oszczędza godziny debugowania.
Testy to też dokumentacja, która mówi innym programistom, jak kod powinien działać. Dobre testy to inwestycja, która zwraca się wielokrotnie.
Komunikacja to klucz
Istnieją dwa typy komunikacji: over-communication i under-communication.
Over-communicationto sytuacja, gdzie zespół jest zalewany informacjami, które nie są istotne dla ich pracy. To prowadzi do zmęczenia informacyjnego i utraty koncentracji. Tracimy czas na mówienie o rzeczach, które są oczywiste lub nieistotne.Under-communicationto sytuacja, gdzie zespół nie ma wystarczających informacji, aby wykonać swoją pracę. To prowadzi do błędów, nieporozumień i frustracji. Tracimy czas na rozwiązywanie problemów, które można było uniknąć, gdybyśmy lepiej się komunikowali.
Nasuwa się pytanie, co wybrać? Oczywiście, że over-communication jest lepsze niż under-communication. Lepiej mieć zbyt dużo informacji niż za mało. Jednak musimy być świadomi, że over-communication może być szkodliwe, jeśli przekazujemy szum, czyli informacje całkowicie niezwiązane z projektem/taskiem.
Musimy znaleźć sposób, aby dostarczać informacje w sposób zorganizowany i przemyślany, aby uniknąć zmęczenia informacyjnego. Zazwyczaj jest lepiej mówić minutę dłużej, żeby wszystko było jasne, niż zostawiać miejsce na domysły i tracić czas drugiego pracownika.
Stabilność środowiska
Najlepsze projekty, to projekty które łatwo postawić od nowa oraz łatwo zrobić rollback. Stabilność środowiska to klucz do szybkiego rozwoju i minimalizacji ryzyka. Jeśli środowisko jest niestabilne, programiści tracą czas na rozwiązywanie problemów z konfiguracją zamiast na pisanie kodu.
Najlepsze praktyki moim zdaniem to:
- Docker - pozwala na stworzenie spójnego środowiska, które można łatwo odtworzyć na różnych maszynach.
- CI/CD - automatyzacja procesu budowania, testowania i wdrażania aplikacji.
- Monitoring - pozwala na szybkie wykrywanie i rozwiązywanie problemów w środowisku produkcyjnym.
- Migracje - zarządzanie zmianami w bazie danych w sposób kontrolowany i przewidywalny.
- Blue-Green Deployment - pozwala na wdrażanie nowych wersji aplikacji bez przestojów i minimalizując ryzyko.
Mikroprzerwy to nie problem, a wręcz konieczność
Najlepsze pomysły często przychodzą, gdy nie siedzimy przed komputerem. Mikroprzerwy, takie jak krótki spacer, rozmowa ze znajomym czy nawet chwila relaksu, mogą pomóc w rozwiązaniu problemów, które wydają się nierozwiązywalne.
Takie przerwy to nie oszukiwanie pracodawcy, ani lenistwo czy strata czasu. One są bardzo potrzebne, aby utrzymać świeżość umysłu i kreatywność oraz chronić zdrowie oczu.