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.

 

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 24000 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. Zaplanujmy sobie na to czas – 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ć. Niestety, żeby dobrze wykonywać swoją pracę, musimy 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.

Autor: Paweł Młynarczyk – 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. Uczy się, kiedy tylko może. Prywatnie tata, miłośnik komiksu i czeskiego kina.

Zostaw komentarz

Polecamy

Sztuczna inteligencja w wykrywaniu zagrożeń bezpieczeństwa IT

Sztuczna inteligencja w wykrywaniu zagrożeń bezpieczeństwa IT

Cyberbezpieczeństwo to nie tylko zaawansowane technicznie systemy zabezpieczeń w dużych firmach czy wojsku. To także nasze prywatne bezpieczeństwo, walka z zagrożeniami i ich prewencja w codziennym życiu oraz wiedza o bezpiecznym korzystaniu z internetu. Adam Kowalski-Potok, nasz Seurity Engineer, opowiada jak AI i jej rozwój wpływa na wykrywanie zagrożeń w cyber security.

Data & Analytics – architektura systemów jutra

Data & Analytics – architektura systemów jutra

Jaka jest historia inżynierii danych? Jak przebiegał rozwój technologii i na jakie trendy zwraca obecnie uwagę świat? Marek Kozioł, Data Solution Architect i Arkadiusz Zdanowski, Cloud Data Engineer & Team Leader w Onwelo opowiedzieli o tych zagadnieniach podczas konferencji „Transformacje cyfrowe dla biznesu”. Zapraszamy do lektury artykułu przygotowanego na bazie tego wystąpienia.

Sztuczna inteligencja w wykrywaniu zagrożeń bezpieczeństwa IT

Sztuczna inteligencja w wykrywaniu zagrożeń bezpieczeństwa IT

Cyberbezpieczeństwo to nie tylko zaawansowane technicznie systemy zabezpieczeń w dużych firmach czy wojsku. To także nasze prywatne bezpieczeństwo, walka z zagrożeniami i ich prewencja w codziennym życiu oraz wiedza o bezpiecznym korzystaniu z internetu. Adam Kowalski-Potok, nasz Seurity Engineer, opowiada jak AI i jej rozwój wpływa na wykrywanie zagrożeń w cyber security.

#Udostępnij

strzałka przewiń do góry strony