Przeczytaj wersję webową.

Wdrożenie != koniec pracy

2024-05-03

Cześć!

Po majówce wracamy z nową inżynierską prasówką. Tym razem krótko o tym, dlaczego powinniśmy wyraźnie rozróżniać moment wdrożenia od zakończenia pracy i jakie korzyści nam to przynosi.

Standardowo mam dla Ciebie również kilka ciekawych newsów z branży. A niestandardowo dorzucam też parę słów o nadchodzącej konferencji ProductPro Summit. 😉

A więc w dzisiaj mam dla Ciebie:

Miłego czytania 😀


Inżynierska prasówka

Dzisiaj otwieramy tematem systemów zdarzeniowych, a kończymy patoarchitektami. Pomiędzy znalazło się miejsce dla zagadnień takich jak principal engineer, serverless i modele językowe. Bo co to za Inżynierska Prasówka bez AI 😉

  1. So You Want to Build An Event Driven System? - James Eastham
    Kolejny poradnik budowania systemu zdarzeniowego? Tak i nie. James pokazuje ciekawe wzorce, które wychodzą poza typowy 101 budowania takich systemów. Enriching, observability, CDC, governance – to tylko część tematów, o których usłyszycie w ramach tej prezentacji.
    https://www.youtube.com/watch?v=qcJASFx-F5g

  2. Principal Engineer - The level after staff engineer – Alex Ewerlof
    Niedawno miałem przyjemność nagrywania krótkiego webinaru na podstawie książki Staff Engineer. Alex idzie krok dalej i opisuje swoje wrażenia z pozycji Principal Engineera. Super studium przypadku i masa wartościowej wiedzy. Bo okazuje się, że idąc w górę spotykamy problemy coraz większej skali, a prostych odpowiedzi też i coraz mniej.
    https://blog.alexewerlof.com/p/principal-engineer

  3. The Serverless Illusion – Gregor Hohpe
    Główny strateg AWS dzieli sie kilkoma mocnymi opiniami wymierzonymi w coraz szerszej aplikowany model serverless. Bardzo utkwiło mi w pamięci zdanie: „Serverless zmniejsza zapotrzebowanie na (łatwo dostępne) umiejętności operacyjne, ale zwiększa zapotrzebowanie na (trudniej dostępne) umiejętności projektowania systemów rozproszonych." Warto pamiętać, że większość zmian dotyczy nie tylko samej technologii, ale także umiejętności dookoła.
    https://architectelevator.com/cloud/serverless-illusion/

  4. ExploreDDD 2024 - Panel: The Crucial Intersection of DDD With LLMs
    Buzzword alert! W ramach ostatniej konferencji ExploreDDD odbył się panel dookoła łączenia DDD z modelami językowymi. Powstała z tego bardzo ciekawa dyskusja, którą podsumował na swoim blogu Chris Richardson. Jeśli temat was interesuje, to zachęcam do przeczytania streszczenia, a następnie zapoznania się z samym panelem.
    https://microservices.io/post/architecture/2024/03/23/exploreddd-intersection-ddd-llms.html

  5. Technology Radar vol. 30 – Review – Patoarchitekci
    W ostatnich dniach wyszedł nowy Technology Radar od firmy Thoughtworks. Kto lepiej wprowadzi was w meandry tego zbioru wiedzy niż Patoarchitekci? Chłopaki z radaru wyłapali bardzo ciekawy materiał o wykorzystaniu LLMów do nakładania struktury na nieustrukturyzowane dane. Jeśli miałbym stawiać pieniądze, gdzie LLM da największą wartość, to myślę, że właśnie w tym obszarze.
    https://open.spotify.com/episode/6AlXBIsLbqWBGK5new2LGp?si=88c615c79fb8470f


ProductPro Summit

Jak uczyć się pracy produktowej to od praktyków. I najlepiej praktycznie 😉

Nie będzie więc lepszej okazji do takiej nauki niż uczestnictwo w konferencji ProductPro Summit.

W programie chcemy przede wszystkim postawić na naukę przez praktyczne przykłady i zadania. Oprócz krótkiej sekcji teoretycznej, mamy w planach:

  • Panele dyskusyjne
  • Mastermindy
  • Hackaton produktowy
  • Spotkania networkingowe

Pojawię się tam również ja, opowiadając jak współpracować w Product Discovery od strony technicznej.

Zapisz się na: https://www.productprosummit.pl/


Czy wdrożenie to koniec pracy?

W wielu firmach spotkałem się z takim modelem pracy, już po samym developmencie:

  • User Story / fragment rozwiązania jest już na głównej gałęzi, przeszedł wszystkie testy i code review.
  • Jedyne czego brakuje to przestawienie wajchy i wdrożenie paczki na główne środowisko.
  • Po wdrożeniu praca zostaje przez nas uznana za zakończoną.

Można to zwizualizować jako fragment typowej tablicy zespołu:

IMG1.jpg

Zespół świętuje sukces dokładnie w momencie, gdy dana funkcja pojawia się na środowisku produkcyjnym. Czy jednak jest tak idealnie?

Takie myślenie niesie ze sobą 2 zasadnicze problemy:

  • Zamyka pracę po wdrożeniu – spojrzenie na koniec procesu
  • Ogranicza częste wdrażanie – spojrzenie na początek procesu.

Omówimy je po kolei.

Nie ma Cię w newsletterze?
Zapisz się na radekmaziarka.pl

Zamykanie pracy po wdrożeniu

Rzadko kiedy dzieje się tak, że po wdrożeniu możemy natychmiast odtrąbić sukces. W prawdziwej pracy produktowej wdrożenie na produkcję to dopiero początek problemów.

W zależności od specyfiki możemy mieć do zrobienia:

  • Monitorowanie – sprawdzanie czy aplikacja się odpowiednio zachowuje.
  • Metryki – wysyłanie szczegółowych informacji procesowych do narzędzi analitycznych.
  • Dokonfigurowanie – włączenie specyficznej konfiguracji dla danej funkcji.
  • Sprzątanie po sobie – usunięcie nadmiarowego kodu lub dodatkowa refaktoryzacja.
  • Dokumentacja – spisanie nowych praktyk, czy podejść do zbioru wiedzy
  • Dodatkowe translacje – dodanie nowych tłumaczeń, poza standardowym zbiorem do wdrożenia.

Jeśli po wdrożeniu przesuwamy zadanie na DONE, to kto się tym ma zająć?

W mojej ocenie jest to jeden z powodów, dla których zespoły nie pamiętają o analizie dokumentacji. Pojawia się poczucie, że moja praca została zakończona. Skoro projekt jest DONE to co niby mamy jeszcze tam robić?

I niestety w taki sposób kluczowe elementy pracy uciekają bokiem. Część tematów jest porzucanych (np. dokumentacja), część robi się na ad-hoc zwiększając koszt kognitywny zespołu (np. translacje). Ostatecznie cierpi i zespół, i jakość produktu.

Dużo więcej pisałem o tym w poprzednim odcinku newsletteru Jaka jest rola Tech Lead w Delivery.

Jednak, istnieje druga strona tego medalu. Problem ograniczenia częstych wdrożeń. I to on jest w mojej ocenie o wiele poważniejszy.

Ograniczenie częstych wdrożeń

Powyższa tabela pracy może powodować złudne wrażenie powiązania wdrożenia z rozwiązaniem. Możemy stworzyć taki ciąg logiczny:

  • Mamy 1 historyjkę na tablicy, w kolumnie TO DEPLOY lub DONE.
  • Dalej: jest wdrożona albo nie – binarnie.
  • Więc: zakończenie historyjki wymaga wdrożenia.
  • Wobec czego: jeśli wdrażam to powinienem zakończyć historyjkę.
  • W efekcie: całe moje wdrożenie musi zawierać kod, który zakończy historyjkę.

Z bardzo drobnego rozróżnienia na tablicy pracy wychodzi, że:

  • Zakończenie = wdrożenie pełnego kodu, który kończy historyjkę.

To natomiast sprawia, że nie możemy efektywnie przeprowadzać drobnych mergów i niewielkich wdrożeń. Bo jeśli go zrobimy, to w teorii praca powinna nam się zakończyć. A się nie kończy.

Pojawia się tu więc pewien dysonans, szczególnie jeśli połączymy to z praktykami typu Feature Flags czy z podejściem Trunk-Based Development. W teorii powinniśmy wdrażać szybciej. W praktyce nie można, bo trzeba wdrożyć raz, a konkretnie.

Z mojej perspektywy jest to jeden z głównych problemów jakie ludzie mają z przestawieniem się na stopniowe wdrażania. I bynajmniej nie jest to trudność techniczna. To problem czysto procesowy, można powiedzieć, mentalny.

Stworzyliśmy sobie środowisko pracy w ramach którego częste wdrożenie nie jest możliwe, bo nie można go odpowiednio opisać i wcielić do procesu pracy. Jest taki koncept Death by PowerPoint – powyższe wygląda mi na Death by Jira:

IMG2.jpg

Tak sobie to wyobraża ChatGPT.

Tablica pracy

Oba opisane punkty jasno pokazują, że tablica pracy jest do bani. A więc jaka może być lepsza?

Tutaj moja propozycja dla wizualizacji User Story / fragmentów rozwiązań:

IMG3.jpg

Co tutaj znajdziesz:

  • To Do – historyjka czeka na zaopiekowanie się nią.
  • In Dev – cała praca developerska, zapewniania jakości i wdrożeniowa
  • Full In Prod – praca developerska się zakończyła, ale jeszcze są jeszcze pewne kwestie dookoła, którymi będzie trzeba się zająć.
  • Done – pełne uruchomienie, mój trud skończony.

Taki model pracy:

  • Zapewnia dużą dowolność w kwestii wdrożeń jeszcze przed uruchomieniem.
  • Wymusza myślenie o pracy po zakończeniu wdrożeń, a przed zamknięciem projektu.

Jednocześnie takie uproszczenie jest celowe, ponieważ tutaj nie zarządzamy pojedynczymi zadaniami / wdrożeniami. Z ich perspektywy ta wizualizacja może wyglądać inaczej i mieć dodatkowe fazy (testy, code review etc.)

Rozdzielenie wdrożeń od zakończenia prac jest wymagane, by móc wdrażać mniejsze zmiany częściej. A do tego potrzeba osobnego spojrzenia na historyjki i zupełnie innego - na zadania.

Podsumowanie

Jest w tym sens, prawda? 😀

Wszyscy chcielibyśmy zamknąć projekt i świętować sukces jak najszybciej, ale żeby dotrzeć do mety, musimy najpierw ustalić gdzie ona właściwie jest.

Masz swoje przemyślenia odnośnie zarządzania pracą po wdrożeniu? Daj znać w odpowiedzi 😊


📧 Prześlij dalej

Dzięki, że doczytałeś(aś) do końca. 😊

Wszystkie poprzednie wydania newslettera są dostępne tutaj.

Jeśli spodobał Ci się mój newsletter, prześlij go proszę osobom, którym też mógłby się spodobać. Z góry dziękuję.

A jeśli nie jesteś jeszcze w newsletterze, to zachęcam do zapisania się.

Polecam się na przyszłość!
Radek Maziarka

Radek Maziarka
"Inżynierskie podejście do produktów cyfrowych."

P.S. Co myślisz o tym newsletterze? Odpisz :)