W czasach gdy fabryki zaczęły wprowadzać pierwsze maszyny przemysłowe zastępujące pracownika fizycznego, jednocześnie wykonując tą samą pracę o wiele efektywniej, wielu robotników straciło swoje posady, a część z nich nigdy w pełni nie odbiła się od dna. Wynika to bezpośrednio ze specyfiki ludzkiej natury. Człowiek bardzo łatwo przyzwyczaja się do aktualnego stanu rzeczy, a w sytuacji jego drastycznej zmiany nie potrafi zaadaptować nowej rzeczywistości, często upierając się przy utartych poglądach, tym samym zostając w tyle pędzącego wciąż naprzód świata.

Jako developerzy żyjemy i czerpiemy z szybkości z jaką rozwija się cywilizacja, a mimo to też jesteśmy istotami nawyku. Wielu z nas posiada wyrobiony już przez lata i sprawdzony w akcji workflow , którego zmiana wiązałaby się z przystosowaniem nowej metodologii i wyrobieniem nowych schematów działania co często jest zjawiskiem niepożądanym i uznawanym za nie efektywne. Takie podejście stosowane wobec nowych procesów wdrażania projektu, testowania czy też innych czynności programistycznych powoduje spowolnienie rozwoju samego programisty jak również, pośrednio, firmy na rzecz której wykonuje on swoją pracę.

Dlaczego? Czyż przypadkiem wykorzystywanie wyrobionej już metodologii działania nie oszczędza nam czasu i kłopotu, który dzięki temu możemy wykorzystać na wykonywanie innych ważnych czynności?

Otóż niekoniecznie. Nie każdy nawyk jest odporny na upływ czasu. Wiele z nich, jak organizmy żywe na przestrzeni mileniów, wymagają ciągłej adaptacji do nowych warunków i standardów. Naturalnie pojawia się pytanie jak możemy zmienić nasze nawyki, jak rozpoznać, które z nich wymagają modernizacji oraz jaki obrać kierunek?

Zanim jednak, drogi czytelniku, przejdziesz do dalszej części artykułu, pozwól, że zaproponuję Ci zaparzenie kubka aromatycznej kawy celem umilenia lektury. 🙂

Jak określić, które nawyki wymagają zmiany oraz jaki kierunek modernizacji obrać?

Stare porzekadło mówi: „Wiedza kluczem do sukcesu”. Owa prawda jest kluczowa w odpowiedzi na powyższe pytanie. Aby być w stanie rzetelnie określić które z naszych developerskich przyzwyczajeń należy zmienić, a które z nich odstawić w kąt pełen niepotrzebnych rupieci należy spełnić dwa warunki:

  1. Przeprowadzić research aktualnych trendów w interesującej nas dziedzinie oraz kwestii automatyzacji w jej zakresie.
  2. Zachować świeżość posiadanych informacji, na bieżąco śledzić nowe trendy oraz zmiany w zakresie naszych technologii oraz technologii zbliżonych/potomnych.

Jeżeli stosunkowo regularnie czytamy nowinki ze świata interesujących nas technologii jako jedni z pierwszych dowiadujemy się o nowych możliwościach i produktach dzięki czemu łatwiej nam przewidzieć nadchodzące trendy i nowe standardy. Dodatkowo, takowe podejście otwiera nam drzwi do samodzielnej innowacji pewnych procesów oraz tworzenia nowych trendów w branży.

W sytuacji gdy dopiero zaczynamy przygodę z automatyzacją, lub chcemy zmienić wyrobione przed laty nawyki powinniśmy zacząć od zrobienia researchu rynku, sprawdzenia jakie podejście stosują znaczący gracze w branży oraz jakie innowacyjne rozwiązania proponowane są przez małe firmy i start-upy jako że to one mają największą tendencję do adaptowania najnowszych technologii. Dopiero kiedy zbudujemy dobre fundamenty pod postacią wiedzy nt. aktualnych standardów powinniśmy zacząć wybierać kierunek modernizacji własnych procesów. Dobrą analogią byłaby tutaj bajka o trzech świnkach, jeżeli chcemy przetrwać w branży jak najdłużej ( przetrzymać ataki złego wilka ) musimy zbudować nawyk modernizacji naszych przyzwyczajeń w zakresie automatyzacji procesów oparty na solidnej wiedzy oraz aktualnych informacjach ( zbudować dom z cegły na solidnym fundamencie ).

Jak zmienić stare nawyki?

Ze wszystkich sił we wszechświecie najtrudniej jest przezwyciężyć siłę przyzwyczajenia. Siła przyciągania to przy niej pryszcz.

Terry Pratchett

Sam proces zmiany naszych przyzwyczajeń jest problemem zależnym od dwóch czynników, naszej osobistej psychiki i determinacji oraz opłacalności danej zmiany.

Nim skupimy się na tym co dzieje się w naszej głowie, warto skupić się na tym co ma miejsce w portfelu naszym lub firmy dla której pracujemy. Musimy określić czy wprowadzenie danej zmiany ułatwi nam pewne procesy w znaczący czy też w drobny sposób, czy otworzy nam drzwi na dalsze ulepszenia i ułatwienia, ile czasu zaoszczędzimy na nowym procesie, czy pomoże on nam unikać błędów lub usprawni pracę w inny sposób, a ostatecznie ile czasowo, będzie nas kosztowało wprowadzenie go w życie.

Jeżeli opłacalność danej zmiany jest na niskim lub bardzo niskim poziomie oraz nie jest znacząca przyszłościowo sugerowanym rozwiązaniem będzie zrezygnowanie z dalszego postępowania w jej kierunku i poszukanie alternatywy, a w przypadku jej aktualnego braku, pozostanie przy starym procesie w oczekiwaniu na nowe rozwiązania.

Jeżeli natomiast dana zmiana okazuje się w naszym przypadku sensowna i opłacalna należy skupić się na kolejnym aspekcie jej wprowadzania, naszej psychice. Każdy zapewne słyszał w swojej głowie głos mówiący nam różne rzeczy w sytuacji gdy chcemy coś zmienić „Dlaczego to robisz, aktualna sytuacja jest dora i wygodna”, „Po co się przemęczać i poprawić coś co działa”, „Jeżeli to działa, nie zmieniaj tego. Co zrobisz jeżeli się nie uda, albo będzie gorzej?”, dlatego też bardzo kluczowa jest determinacja w procesie zmian naszych nawyków. Musimy mieć wystarczającą siłę woli żeby powiedzieć temu głosowi dlaczego dana zmiana jest dobra i dlaczego zamierzamy ją wprowadzić, a następnie podążać w jej kierunku bez zważania na wątpliwości wynikające z niepewności i strachu.

Rola automatyzacji w pracy programisty

Dlaczego automatyzacja odgrywa ważną rolę w pracy programisty?

Dlaczego powstała osobna profesja dla osób zajmujących się stricte automatyzacją procesów integracji i deploymentu projektu (DevOPS)?

Jeżeli spojrzymy na sposób pracy programisty przed dziesięciu laty i porównamy go ze współczesnym reprezentantem gatunku zauważymy drastyczne zmiany w jego pracy. Pliki nie są już przenoszone na serwer developerski za pośrednictwem protokołu FTP tylko żyją w zintegrowanym z nim systemie kontroli wersji, który często połączony jest z dodatkowymi procesami automatycznego testowania kodu oraz aplikacji nim ta zostanie odpalona w środowisku docelowym. Duża zmiana zaszła w edytorach kodu wykorzystywanych przez developerów, które to integrują coraz to więcej funkcji oraz możliwości dostosowania do potrzeb programisty tak aby praca była najsprawniejsza.

Współczesna architektura diametralnie różni się od tej wykorzystywanej przed laty, a jednym ze standardów stała się platforma GitLab która umożliwia zastosowanie metodyki CI/CD (Continuous Integration/Delivery) dzięki czemu programista jest w stanie w pełni zautomatyzować wszystkie testy aplikacji oraz proces wrzucania na serwer produkcyjny.

Podsumowanie

Automatyzacja odgrywa w pracy programisty kluczową rolę ułatwiając mu wiele procesów pozwalając skupić się na tych, które wymagają najwięcej uwagi. Jeżeli chcemy zostać najlepszymi w naszej branży jest to dziedzina na której warto się skupić i poświęcić odrobinę czasu i pracy a będzie się odwdzięczać przez długi czas.

Sam proces wprowadzania zmian w naszych nawykach i workflow jak widać jest procesem wymagającym z naszej strony pracy oraz znajomości samego siebie aby dzięki temu stał się przyjemny i łatwy.

Mam nadzieję że powyższe rozważania zachęciły Cię, drogi czytelniku, do dalszego zgłębiania tematu co przyniesie Ci wiele korzyści w przyszłości! 🙂