Aktualności
Dziś Dzień Programisty. Tajniki zawodu zdradza Jakub Gańko
13 września obchodzimy Międzynarodowy Dzień Programisty. To nieformalne święto wszystkich programistów, obchodzone na świecie od kilku lat w 256 dniu roku. Dlaczego akurat ten dzień? Ponieważ 256 to 2^8, czyli liczba wszystkich możliwych wartości jednego bajta informacji w jego najpopularniejszej, 8-bitowej postaci. Zdaniem twórców, tego dnia, ta kombinacja liczb najlepiej oddaje charakter pracy programisty i jego zamiłowanie do tworzenia różnych kodów i ciągów liczbowych. O pracy programisty i o tym, jak przebiegała ewolucja tego zawodu na przestrzeni lat, rozmawiamy z Jakubem Gańko, Głównym Architektem SIMPLE.ERP.
Jak na przestrzeni lat ewoluował zawód programisty?
20-30 lat temu wymagania dla programistów były inne niż obecnie. Języki programowania orientowano na maszyny, a nie na rozwiązywanie rzeczywistych problemów domen biznesowych. Powodowało to, że na programistów preferowano osoby potrafiące symulować algorytmy jako sekwencję instrukcji procesora według założeń opracowanych przez analityków i projektantów w programie komputerowym. Nie wymagano zrozumienia oprogramowywanej domeny, wymagano kodowania algorytmów na strukturach danych opisanych przez analityków.
Dziś te przewidywania futurologów ciągle są w sferze fantazji, a praca programisty jest ciągle w cenie. Zmienił się jednak charakter pracy programistów a wraz z nim cechy i zdolności osób jakie są potrzebne przy tworzeniu oprogramowania. Dzięki nowym językom programowania, narzędziom wspomagającym cykl wytwórczy oprogramowania, obiektowemu paradygmatowi programowania, upowszechnieniu się modelowania domenowego DDD (Domain Design Drive) oraz zwinnych metod programowania i organizacji prac w projektach informatycznych (Agile), programista przestał być koderem a stał się… projektantem.
Co to oznacza? Czym różni się współczesne programowanie od tego sprzed kilkudziesięciu lat?
Tworzenie nowoczesnego oprogramowania opiera się dziś o zdarzenia biznesowe, zachowania obiektów biznesowych odpowiadających zachowaniom rzeczywistych bytów biznesowym wyrażane bezpośrednio w języku zrozumiałym dla biznesu, a nie sztywnym strukturom danych i kodzie języka programowania. Pozwoliło to zrozumieć twórcom systemów, że aby programista/projektant tworzył adekwatny do rzeczywistości kod programu musi rozumieć tę rzeczywistość, a w tym celu musi pozyskiwać wiedzę od ekspertów używać pojęć zrozumiałych dla nich, nie wystarczy sama sprawność w kodowaniu. Doceniono także organizację samego zespołu projektowego tworzącego oprogramowanie, na stałe włączono do nich ekspertów dziedzinowych. Kluczowe stały się aspekty interpersonalne w zespole jak komunikacja i zdolność do wspólnego rozwiązywania problemów projektowych. Ciężar tworzenia oprogramowania przeniósł się z wyrażania logiki przy użyciu instrukcji procesorów i struktury baz danych na modelowanie zdarzeń w domenie i jej zrozumienie przez zespół tworzący oprogramowanie. Ponownie twórczo powrócono do idei analizy obiektowej.
Zdano sobie również sprawę, że tworzone dotychczas oprogramowanie jest zbyt złożone, a złożoność ta nie wynika jedynie ze złożoności modelowanej rzeczywistości, a jest efektem samej metody tworzenia systemów bez oparcia go na istotnych zdarzeniach biznesowych. Ponadto systemy składały się ze zbyt ściśle powiązanych ze sobą komponentów, które próbowały modelować wszystkie zachowania rzeczywistości, a nie tylko te istotne z punktu widzenia zdarzeń biznesowych. Powodowało to olbrzymie trudności z wprowadzaniem zmian w oprogramowaniu, wynikłych ze zmieniających się realiów biznesowych.
Wszystko to spowodowało zmianę podejścia do tworzenia systemów. Kluczową dla sukcesu projektów informatycznych okazała się współpraca zespołu projektantów i programistów z ekspertami dziedzinowymi oraz modelowanie oparte o zdarzenia biznesowe.
To oznacza, że zmiany w programowaniu wymusiły również ewolucję w podejściu do pracy samych programistów…
Tak, efektem takiego podejścia stała się też zmiana wymagań dla programistów, które są obecnie inne niż te sprzed 20 - 30 lat. Ideałem programisty nie jest już dziś introwertyczny programista „dłubiący w samotności magiczny kod”. Dziś poszukuje się ludzi, którzy poza biegłością w kodowaniu w języku programowania potrafią zrozumieć rzeczywiste cele biznesowe oraz współpracować zarówno z ekspertami domenowymi jak i innymi członkami zespołów projektowych. Kluczowa stała się zdolność do tworzenia modeli rzeczywistości biznesowych bezpośrednio w kodzie nowoczesnych obiektowych języków programowania. Porzucone zostały także twarde podziały na analityków, projektantów i programistów w zespołach. Programiści stali się twórcami modeli wyrażanych bezpośrednio w kodzie, twórcami - rozumiejącymi biznes.
Rozwój sztucznej inteligencji sprawia, że praca rąk ludzkich staje się zastępowalna przez pracę maszyn. Część zawodów wykonywanych przez ludzi już uległa częściowej mechanizacji. Czy istnieje ryzyko, że w przyszłości pracę programistów zastąpią komputery, a zawód ten będzie „na wymarciu”?
Obecne inaczej rozumiemy działania ludzkiego mózgu. Wiemy, że kluczowe dla tworzenia wysokiej jakości oprogramowania są kreatywność i zdolność do modelowanie oprogramowywanego fragmentu rzeczywistości przez umysł projektanta programisty. Modelowanie rzeczywistości w mózgu człowieka - według stanu obecnej wiedzy - odbywa się głównie w procesach podświadomych umysłu w pamięci skojarzeniowej przez konstrukcję sieci powiązanych pojęć z kluczowym udziałem zmysłów i emocji. Trudno więc sobie wyobrazić, aby komputery oparte o architekturę von Neumanna (sekwencje wykonywanych instrukcji procesora) mogły się na razie choćby zbliżyć do zdolności mózgu człowieka w tym zakresie.
Moim zdaniem, w najbliższych latach, pomimo obiecujących prób konstrukcji komputerów kwantowych, trudno oczekiwać realizacji starej wizji futurologów, zastąpienia programistów przez samo programujące się maszyny. Kreatywność i zdolność do modelowania pojęciowego ludzi nadal będzie kluczowa dla powstawania dobrego oprogramowania i programiści/projektanci będą mieli jeszcze wiele programów do napisania.
Wszystkim programistom, w dniu ich święta, życzymy pasji do tworzenia wielu fascynujących kodów!