Ciężkie życie programisty

Główna uwaga dotycząca tego tekstu, to to, że nie jest on prawdziwy, napisany jest w formie żartu i nie ma związku z moją pracą. Piszę go jako wprawkę do szybkiego pisania tekstów.

Produktywność.

Szybkie pisanie na klawiaturze to podstawa produktywności. Tak piszą na pierwszej stronie każdej książki. Ależ ja jako programista jestem nieproduktywny, siedzę i gapię się w ten monitor, zamiast pisać kod. Myślę o interfejsach, jakie zaraz będę musiał zaimplementować. Muszę pomyśleć jakie testy napiszę do tego interfejsu oraz jaki ja w ogóle design pattern implementuje.
Za cholerę nie mogę sobie przypomnieć jak ten pattern się nazywał. Może to jakaś fabryka, może kreator.
Hmm, szkoda czasu, interfejs i tak wrzucę do jakiegoś kontenera i dostanę go w kontrolerze. A może zrobić jakaś fabrykę IoC. Nie, no to już przerost formy nad treścią. Zawsze można takim kodem pochwalić się przy kawie kolegom. Ciekawe kto zrobi lepszą fabrykę.
I tak fabryka, za fabryką moje myśli docierają do frameworka. To dopiero jest wyzwanie dla mojego programistycznego ego. Najpierw muszę pomyśleć nad architekturą mojego frameworka. Co będzie, jak zastosuję do tego reaktywne programowanie. To najnowszy trend, którego pewnie żaden z moich kolegów od picia programistycznej kawy nie implementował jeszcze.

IoC
IoC

Maszyny mnie nienawidzą.

System, na jakim pracuję wynalazł jakiś sadysta. Jako programista wpisuję tylko literki i cyferki a mój edytor, Visual Studio potrafi się zawiesić przy tej czynności. Uruchamia się pewnie z minutę, projekty wczytuje tak długo, jakby to były filmy, a kod kompiluje jakby to była kompresja filmów 4K. No, cholera człowieka może trafić. Visual Studio podobno programuje kilka tysięcy hindusów, co poniekąd tłumaczy, dlaczego zajmuje 80GB na dysku.
Chyba każdy hindus siedzi i naparza w klawiaturę te linijki kodu, stąd taka wielkość całego pakietu. Nie dziwi też wolna praca, skoro te GB trzeba jakoś wczytać i uruchomić.
A ja chcę tylko wpisać kilka linijek kodu i wcisnąć F5 w celu uruchomienia mojego super frameworka, którego celem jest zawojowanie dzisiejszego spotkania w kuchni na kawie. Jak ten Visual będzie tak wolno kompilował, to nie zdążę na kawę.

Tata Consultancy Services
Tata Consultancy Services

Zła karma wraca.

Czy jakoś kawy spada, czy ja już jej za dużo wypiłem i wypaliła mi wszelkie kubki smakowe? Jak dla każdego porządnego programisty, picie kawy jest moim obowiązkiem. Wiąże się to z rytuałem spotkań w kuchni, z kolegami po fachu.
Ciekawe kto dzisiaj zrobi fajniejszego frameworka. Mój będzie zajefajny, oparty na reactive, żaden angular mu nie podskoczy.
Po spotkaniu kawowym, niestety okazało się, że zła karma wróciła. Visual się zawiesił, angular jest już w wersji drugiej, niekompatybilnej w pierwszą, a kolega od kawy zrobił coś w F#, programowaniu funkcyjnym. Taka podobno teraz moda.
Dodatkowo patrzę na ten jego funkcyjny kod i nie wiem co on robi. O kurcze, czy ja jestem aż taki głupi, żeby nie wiedzieć co robi ten kawałek kodu. To kilkanaście linijek, a ja nie wiem, co one robią. Dla dodania sobie pewności siebie przytaknę, że programowanie funkcyjne to świetna sprawa.

F#
F#

PM się uwziął.

O rety ten znów coś chce, pyta się o jakieś story pointy, a ja dopiero co wróciłem z kawy i moją głowę jeszcze zaprząta funkcyjna porażka. Czy on nie wie, że ja mam wyższe cele niż jakieś retrospekcje.
Ja tu tworzę framework, a nie jakieś zwykłe formatki. To jest teraz najważniejsze i na tym chcę się skupić, a nie na celach biznesowych. Niech analityk zajmie się celami biznesowymi, a ja sobie poprogramuję.
Dobra, stworzyłem sobie fabrykę kontenerów, sama wykonuje się inwersja kontroli. To teraz trzeba zrobić jakiegoś CQRS-a. To mój cel na dzisiaj.
Tylko jak to uzasadnić biznesowo? Haha, to najłatwiejsza, rzecz w mojej pracy. I tak nikt nie wie, o czym ja mówię. Wystarczy powiedzieć, że potrzebujemy zaimplementować CQRS i Event Sourcing, żeby mieć kilka dni spokoju. A jak mnie ktoś pyta, po co to. To mu odpowiadam, że najważniejsza jest skalowalność naszych rozwiązań. Będziemy mogli wprowadzić asynchroniczność wywołań i w kolejce obsługiwać żądania.
Po takim wykładzie dla sceptyków zaczynam rysować kilkanaście kwadratów, komandy, query, eventy, strzałka zapisu, z drugiej strony strzałka czytania a pomiędzy nimi wielki walec z napisem event bus.
Jak ktoś dalej docieka, to zaczynam mnożyć kwadraty w nieskończoność i mówić, że to mikro serwisy. Wtedy nikt nie ma już wątpliwości, kto tu jest architektem tego systemu. Oczy słuchaczy są wpatrzone w moją osobę jak w eksperta wszechwiedzącego, który ocali ten system i rozbije ten monolit.

CQRS
CQRS

Zemsta systemu

Dobra, kilka dni nie muszę nikomu tłumaczyć, co robię, każdy rozsądny PM słyszał od swoich kolegów, że mikroserwisy to zbawienie systemów i tylko one uratują nasz świat. Także siedzę i programuję mikroserwisy. Jeden za drugim. Dopóki mi się Visual Studio nie zawiesi.
Naklepałem tych usług od groma, trzeba by je jakoś wgrać na integrację. Nie wypada ich po prostu skopiować, nie te czasy. Muszę wymyślić jak je automatycznie wrzucać. Chyba będzie potrzeba kilka kolejnych dni na to. A może i cały sprint. O jeee, jak ja kocham swoją robotę. Zrobię sobie jednego dockera na jeden mój serwis. To jest myśl. Kucharz Chef na pewno ma jakiegoś cookbooka.

Docker
Docker

Nikt mnie nie rozumie.

Przychodzę do domu, podekscytowany nową biblioteką do materializacji widoków, jaką będę sobie robił jutro. Chcę się pochwalić tym przed rodziną, ale oni patrzą na mnie jak na kosmitę, co gada od rzeczy. Znów zapomniałem przełączyć się z trybu programisty na tryb zwykłego śmiertelnika, gadającego o pierdołach, tak przyziemnych, że szkoda gadać. Kogo obchodzi, co się dzieje w polityce, kto nami teraz rządzi. Ja mam wyższe cele, już jutro czeka mnie wyzwanie, stworzenia czegoś z niczego.

 

Materialized View
Materialized View
Michał Szafrański
Programista - Architekt - Projektant Oprogramowania. Zainteresowania: Cloud Computing - Architectural Design Patterns - Google Cloud Platform. Miłośnik sprzętu i oprogramowania firmy Apple.
  • Wojtek

    To ja dzisiaj też zbuduję sobie jakiegoś CQRS-a.

    • Michał Szafrański

      Nie zapomnij o Event Store.