Sytuacja
Platforma Shoptimised przetwarza feedy produktowe dla firm z branży e-commerce. Wraz z jej rozwojem architektura i sposób dostarczania zmian potrzebowały przestrzeni do dalszej ewolucji. Odpowiadałem za technologię, sposób jej rozwijania i ludzi wykonujących tę pracę.
Moja rola łączy zarządzanie zespołem inżynierskim, obowiązki Principal Engineera i pracę CTO, który sam pisze kod. Pracowałem z zespołem nad architekturą, implementacją i wdrożeniem produkcyjnym. Wspólnie z dwoma inżynierami przeprowadziłem w ciągu około sześciu miesięcy migrację ze sprzężonej aplikacji Laravel do trzech niezależnie wdrażanych usług.
Decyzje, które miały znaczenie
Zachować mocne strony zespołu
Pozostaliśmy przy Laravelu i wykorzystaliśmy wiedzę, którą zespół już posiadał. Zmiana architektoniczna koncentrowała się na wyraźniejszych granicach i niezależnych wdrożeniach. Dzięki temu mogliśmy modernizować platformę w praktyczny sposób, nadal dobrze ją rozumiejąc i potrafiąc nią zarządzać.
Zaplanować odwracalną migrację
Przez dwa tygodnie uruchamialiśmy równolegle nowy i dotychczasowy system. Testy obciążeniowe, feature flags i ścieżka powrotu ograniczały ryzyko przełączenia. Te działania pozwalały nam obserwować zachowanie nowego rozwiązania, zanim skierowaliśmy do niego cały ruch.
Wcześniej oddać głos inżynierom
Zacząłem angażować inżynierów już na etapie doprecyzowania wymagań i ustalania zakresu. Wprowadziliśmy mniejsze zadania, wspólne estymacje i jaśniejsze cele sprintów. Ludzie mogli współtworzyć podejście i rozumieć stojące za nim powody.
Jak pracowaliśmy razem
Równolegle z pracami nad platformą wspierałem Senior Developera w rozwoju do roli Leada. Analizowaliśmy realistyczne sytuacje związane z planowaniem i technologią, a pytania pomagały mu rozwijać samodzielny osąd.
Ten inżynier przejął później większą odpowiedzialność za planowanie i zaczął mentorować innych. Dla mnie to ważna część przywództwa: tworzenie warunków, w których ktoś inny może podejmować dobre decyzje i wspierać otaczających go ludzi.
Co się zmieniło
Dzienny wolumen przetwarzanych feedów wzrósł z około 20 000 do 35 000, czyli o 75%. Usługi można było wdrażać niezależnie, a czas wdrożenia skrócił się z około godziny do mniej więcej dwóch minut.
Zespół zyskał również wyraźniejszą odpowiedzialność za doprecyzowanie wymagań, planowanie i realizację. Architektura i rozwój zespołu wzajemnie się wspierały: mniejsze granice ułatwiały rozumienie zmian, a silniejsze poczucie odpowiedzialności pomagało te granice utrzymywać.
Co zabieram ze sobą
Najbardziej użyteczna architektura to taka, którą zespół potrafi zrozumieć, rozwijać i obsługiwać. Staram się jasno określać ważne granice, utrzymywać zmiany w rozsądnej skali i angażować ludzi, którzy będą później pracować z rezultatem.