Manifest programisty-rzemieślnika
Jestem programistą i chciałbym nim być jak najdłużej, bo lubię to, co robię. Kiedyś wydawało mi się, że po kilku latach programowania będę musiał odwiesić klawiaturę na kołek i przesiąść się na tabelki w Excelu, ciągłe pisanie maili i przebywanie na niekończących się spotkaniach. Na szczęście dowiedziałem się o czymś, co zmieniło podejście do tego, co robię i jak może wyglądać moja przyszłość. Chciałbym podzielić się z Wami moim sposobem na bycie lepszym programistą i spokojną przyszłość w branży IT.
Paweł Młynarczyk. Senior Software Engineering w Onwelo. Programista od 10 lat nieustannie związany z Javą. Koduje, devopsuje i pomaga w rozwoju młodszym kolegom. Od czasu do czasu można go usłyszeć na konferencjach IT, a jego teksty przeczytać na firmowym blogu. Uczy się, kiedy tylko może. Prywatnie tata, miłośnik komiksu i czeskiego kina.
Spis treści
Jak zostałem rzemieślnikiem?
Kluczowym momentem w mojej karierze była chwila, w której postanowiłem zostać rzemieślnikiem-programistą. Czy słyszeliście o ruchu Software Craftsmanship? Po ogłoszeniu manifestu Agile na początku XXI w. cały świat skupiony na wytwarzaniu oprogramowania zachłysnął się ideą szybkiego dostarczania funkcjonalności na produkcję. Niestety wiele firm przypłaciło to obniżeniem jakości tworzonych programów. Najważniejsze było dodanie jak największej liczby funkcji w zadanym czasie. Gdy zbliżał się ustalony termin, programiści pod presją popełniali coraz więcej błędów i nie dbali o niezawodność swojego kodu. Niestety często zapominano o tym, że napisany program będzie używany przez długi czas, a zmiany w kodzie nie będą dokonywane przez tych samych programistów, którzy go napisali.
Pewnie niejeden z Was pracował nad kodem (nie zawsze „odziedziczonym”), który nie miał testów jednostkowych i był napisany nieczytelnie. Każda modyfikacja była ryzykowna. Zmiana w jednym miejscu programu powodowała, że w innym coś przestawało działać. Wprowadzenie kolejnych funkcjonalności zajmowało przez to coraz więcej czasu, a w rezultacie okazywało się, że najlepszym rozwiązaniem będzie napisanie całego programu od nowa. Takie przypadki irytowały między innymi Roberta C. Martina (znanego wszystkim programistom jako Wujek Bob), który na konferencji Agile 2008 zaproponował piąty punkt Manifestu Agile – Craftsmanship over Crap (pozwólcie, że zostawię to bez tłumaczenia). Na początku 2009 roku grupa programistów chcących zmienić ten stan rzeczy opublikowała Manifest Sofware Craftsmanship, który rozwijał kolejne punkty manifestu Agile:
- Nie tylko oprogramowanie działające, ale również dobrze wykonane,
- Nie tylko reagowanie na zmiany, ale również ciągłe dodawanie wartości,
- Nie tylko ludzie i interakcje, ale również społeczność profesjonalistów,
- Nie tylko współpraca z klientami, ale również efektywne partnerstwo.
Manifest do tej pory podpisało już ponad 24 000 osób. Powyższe punkty dla każdego mogą mieć inne znaczenie. Co dla mnie znaczy bycie rzemieślnikiem-programistą?
Spłacaj swoje długi
Punkt pierwszy manifestu mówi o dobrze wykonanym oprogramowaniu. Myślę, że każdy z nas stara się pisać dobry kod, ale czasami pod presją terminów pozwalamy sobie na zaniechanie dobrych praktyk. Po pierwsze i najważniejsze – kod, który piszemy, musi działać, ale musi być też czytelny. Pamiętajmy o tym, że źle napisany kod po jakimś czasie będzie niezrozumiały nie tylko dla innych, ale również dla nas samych. Żeby kod naszego programu był godny zaufania, musi być odpowiednio pokryty testami. Bez tego każda kolejna zmiana będzie wiązała się z dużym stresem i ryzykiem.
Jeśli pod presją terminów zaciągniemy dług technologiczny, to musimy znaleźć czas na jego spłacenie. Dlatego zaplanujmy jak to zrobić – w dłuższej perspektywie projekt tylko na tym zyska. Parafrazując motto jednego z rodów z Gry o Tron – rzemieślnicy zawsze spłacają swoje długi. Rzemieślnik-programista powinien zawsze zostawić kod w lepszym stanie, niż go zastał. Wszystko po to, żeby przedłużyć żywotność programu, który pisze.
Mów o zagrożeniach
Nie powinniśmy ślepo wykonywać przypisane do nas zadania, ale także wypatrywać zagrożeń i komunikować je odpowiednim osobom. Jeśli, na przykład, w zadaniu nie będzie jasno napisane, że należy uwzględnić bezpieczeństwo (bo prawdopodobnie ktoś o tym zapomniał), to w naszym interesie jest zadbać o to bezpieczeństwo i dopytać o szczegóły kogoś, kto zdefiniował to zadanie – wszyscy na tym skorzystamy. Jeśli nasz przełożony lub klient pyta, czy uda nam się wykonać jakieś zadanie w terminie, to mówmy prawdę. Jeśli czujemy, że na 90% nam się to nie powiedzie, to zakomunikujmy to odpowiednio wcześnie – prawdopodobnie uda się zmniejszyć zakres funkcjonalności tak, żeby nasz partner biznesowy również nie musiał ryzykować utratą zaufania i wizerunku z powodu niespełnionych obietnic.
Rozwijaj się
Profesjonalny programista powinien się ciągle rozwijać, żeby dobrze wykonywać swoją prac powinien w siebie zainwestować. Musimy poświęcić część naszego wolnego czasu (a nierzadko też pieniędzy) na podniesienie poziomu swoich umiejętności. Niestety w naszej branży coraz częściej można spotkać się z opinią, że jeśli pracodawca nie wyśle nas na szkolenie, to nie musimy się dokształcać. Sandro Mancuso w książce „Software Craftsman” (którą polecam wszystkim, którzy poważnie podchodzą do swojej pracy) posuwa się wręcz do porównania programistów do fachowców, u których zamawia się jakąś usługę (np. hydrauliczną), a oni proszą zamawiającego o sfinansowanie im szkolenia. Za możliwość uczestnictwa w szkoleniach i konferencjach możemy być wdzięczni pracodawcy, jeśli nas na nie wyśle, ale nie możemy mieć do niego pretensji o to, że tego nie zrobił. Powinniśmy sami kierować swoją karierą. Jeśli sami nie zadbamy o swoją przyszłość, to nikt za nas tego nie zrobi.
Dziel się wiedzą i twórz społeczność
Często narzekamy, że młodsi koledzy napisali kod wołający o pomstę do nieba, ale czy na pewno poświęciliśmy im chwilę na podzielenie się swoim doświadczeniem? Ucząc dobrych praktyk, zmieniamy swoje środowisko. Kto z nas bardziej woli pracować z partaczami niż fachowcami? Jeśli otworzycie się na innych programistów i aktywnie będziecie tworzyć tę społeczność, to wpłynie to nie tylko na rozwój Waszych umiejętności technicznych, ale też na dobre samopoczucie, zmniejszając ryzyko tego, że będziecie musieli pracować ze źle napisanym kodem. Mentoring jest w równym stopniu ważny dla ucznia, co dla mistrza. Częste utrwalanie podstaw podczas mówienia o nich innym pozwala nam samym utrwalić je w naszej pamięci.
Polecam też otwarcie się na ludzi spoza najbliższego otoczenia. Jeśli nauczysz się czegoś nowego i ciekawego – napisz o tym na blogu, zaprezentuj na lokalnym meetupie lub wybierz się na spotkanie lokalnej społeczności programistycznej (np. JUG). W ten sposób trafisz na innych rzemieślników, którzy również będą chcieli podzielić się z Tobą swoją wiedzą.
Dbaj o swoją reputację
Pamiętaj o tym, że nie pracujesz na taśmie w fabryce, ale jesteś fachowcem wykonującym usługi. Zacznij traktować swojego pracodawcę lub klienta jak partnera. Twój zleceniodawca nie zawsze wie o wszystkich technicznych zawiłościach, których Ty jesteś świadomy. Jeśli widzisz, że jest jakiś lepszy sposób na rozwiązanie problemu albo, że mało znacząca zmiana funkcjonalności może zaoszczędzić tydzień pracy Twojemu zespołowi (a klientowi pieniędzy), to porozmawiaj z nim o tym. Jeśli będziesz traktował poważnie swojego klienta / pracodawcę, to on będzie tak samo traktował Ciebie. Dbajmy o swoją reputację.
Śpij spokojnie
Co daje mi bycie rzemieślnikiem? Spokój ducha i poczucie spełnienia po powrocie z pracy do domu. Jeśli pisząc program, nie myślisz tylko o jego funkcjonalności, ale również o jego niezawodności, to możesz spać spokojnie. Jeśli usłyszysz, że coś nie działa na produkcji, a użytkownicy z widłami i pochodniami żądają sprawiedliwości, to będziesz wiedział, że nie o Twoją część programu im chodzi. Jeśli będziesz pisał „czysty kod” i zadbasz o to, żeby Twoi koledzy i koleżanki też chcieli taki kod pisać, to idąc do pracy, będziesz spokojny, wiedząc, że nie czeka Cię praca z czymś, co przyprawi Cię o ból głowy. Spędzamy w pracy sporą część naszego dnia, więc róbmy wszystko, żeby wykorzystać ten czas jak najlepiej.
Zdjęcie główne artykułu pochodzi z pexels.com. Artykuł został pierwotnie opublikowany na blog.onwelo.pl.