Jakub był jednym z prelegentów podczas Infoshare 2020 Online. Nam udało mu się zadać kilka pytań uzupełniających jego wystąpienie. Zachęcamy do lektury.
W swojej prelekcji mówisz o refaktoringu kodu. W niektórych organizacjach to część programowania, która jest odkładana na potem. Jakie powinny być sygnały dla programisty, że to ostatni moment by zamiast dodawać nowe funkcje, skupić się na refaktorze?
Każdy produkt jest inny. Są przypadki, w których dokonujemy tzw. mechanicznej refaktoryzacji, czy jak ja to nazywam, polerowania kodu. Takie czynności powinny być codzienną rutyną zespołu. Są też przypadki, kiedy zmieniają się reguły gry i naiwny model nie jest w stanie dalej wspierać nowych funkcji naszego przedsiębiorstwa. Przekształcenia typu “Extract Method” czy “Replace If with Object” nie pomogą, bo trzeba wykonać refaktoryzację strategiczną — to już wymaga zaplanowania.
Często to biznes stopuje takie zmiany. Jakich argumentów może użyć zespół programistów, żeby go przekonać do refaktoru?
Wspominam o tym w prezentacji. Biznes nie rozmawia językiem technicznym, nie rozmawia językiem rozwiązania. Do ludzi biznesu najlepiej mówić metrykami biznesowymi, które często można przetłumaczyć na oszczędności. Jeśli moja zmiana techniczna przyspiesza przykładowo tzw. “user journey” i zwiększa konwersję klientów i jestem w stanie to zaprezentować liczbami, to dla biznesu nie ma znaczenia czy osiągamy to nową wersją biblioteki czy nowym frameworkiem na frontendzie. Oczywiście, dopóki koszt wprowadzenia jest niższy niż zysk.
A drugiej strony, jak stwierdzić, że refaktor to coś, co nie jest potrzebne w danym momencie — a chęć przepisania na technologię X wynika bardziej z np. osobistych przesłanek (zna tą technologię dobrze, albo był na konferencji, zobaczył jedną prelekcje i bardzo chce jej spróbować) jednego z programistów.
Sam wpadałem w takie pułapki. Dobrze jak w zespole są bardziej doświadczone osoby, które mogą przystopować takie zmiany. Z drugiej strony, jeśli nie są one inwazyjne i nie zajmują dużo czasu, to pamiętamy, że jest z nich wartość dodana — morale zespołu się zwiększa. To często dość istotny driver architektoniczny.
Co zespół programistyczny jest w stanie zrobić, by pomóc sobie w refaktorze kodu?
Nieustanna edukacja i wspólne zrozumienie kiedy i czy w ogóle musimy refaktoryzować. Refaktoryzacja to inwestycja, dopóki nie ma z niej zysku, zespół musi zrozumieć, że być może lepiej poświęcić ten czas na coś innego.
Co w swojej programistycznej pracy każdego dnia możemy robić, by uniknąć “wielkiego przepisywania systemu”, a każdego dnia po trochu go refaktorować?
Prowadzę z takiej tematyki 5‑dniowe szkolenia. Wymienię tylko jedną, najważniejszą, rzecz. Odpowiednie granice modułów, obiektów, enkapsulacja i zdrowy coupling pozwalają zapewnić, że ewentualne “przepisanie” zamknie się w skończonej liczbie miejsc.
Infoshare 2020 Online — wirtualny festiwal społeczności napędzanej technologią!
Ponad 7,5 tysiąca uczestników z 71 krajów, 250 technologicznych startupów i korporacji oraz blisko 200 ekspertów z całego świata, którzy dzielili się wiedzą na 9 scenach Infoshare. Tak wyglądał Infoshare 2020 Online! Największa technologiczna konferencja w CEE odbyła się we wrześniu i transmitowana była na cały świat z Gdańska.