Czym jest Model dojrzałości Engineering Excellence?
Inżynierowie zazwyczaj wiedzą, gdzie kod najbardziej boli. Trudniej jest uzgodnić w zespole, które problemy są najważniejsze i na jakim etapie ich rozwiązywania jesteście. W Modelu dojrzałości Engineering Excellence zespół ocenia 12 praktyk w czterech grupach (Jakość kodu i standardy, Architektura i skalowalność, Zarządzanie długiem technicznym oraz Współpraca i wsparcie inżynierów) w pięciostopniowej skali od poziomu Ad hoc do poziomu Zoptymalizowany. Każdy poziom ma swój opis, więc oceny zamieniają mgliste odczucia dotyczące jakości w coś konkretnego: code review, które wyłapuje błędy, ale nie służy dzieleniu się wiedzą, albo dług techniczny, o którym wszyscy wiedzą, ale nikt go nie śledzi. Taki wspólny język pomaga inżynierom i liderom uzgodnić, co poprawić w pierwszej kolejności. Przeprowadzajcie ocenę regularnie, a zobaczycie, czy wprowadzone zmiany podniosły praktyki o poziom wyżej.
Wymiary
Jakość kodu i standardy
Jak konsekwentnie zespół pisze czysty, łatwy w utrzymaniu i dobrze przejrzany kod zgodnie ze wspólnymi standardami.
Spójność standardów kodowania
Jak konsekwentnie zespół stosuje wspólne wytyczne dotyczące kodowania.
- Ad hocPraktyki kodowania znacznie się różnią; nikt nie stosuje wspólnych standardów.
- PoczątkowyIstnieją pewne standardy, ale są stosowane niekonsekwentnie.
- ZdefiniowanyStandardy są udokumentowane i zwykle przestrzegane.
- ZarządzanyStandardy są konsekwentnie stosowane i regularnie przeglądane.
- ZoptymalizowanyKultura jakości kodu jest silna; standardy ewoluują dzięki współpracy i dobrym praktykom.
Utrzymywalność kodu
Łatwość, z jaką kod można czytać, rozumieć, modyfikować i rozszerzać.
- Ad hocKod jest trudny do czytania, poruszania się po nim i ponownego użycia.
- PoczątkowyWprowadzono pewne usprawnienia, ale problemy z utrzymywalnością nadal występują.
- ZdefiniowanyBaza kodu jest w większości zrozumiała i łatwa w utrzymaniu.
- ZarządzanyKod jest czysty, modułowy i przewidywalny, a zespół stosuje solidne praktyki dbania o utrzymywalność.
- ZoptymalizowanyUtrzymywalność jest normą kulturową; zespoły proaktywnie ulepszają i rozwijają strukturę kodu.
Jakość code review
Jak skutecznie code review poprawia jakość i wspiera naukę w zespole.
- Ad hocPrzeglądy są rzadkie, pospieszne lub powierzchowne.
- PoczątkowyPrzeglądy się odbywają, ale bardzo różnią się dokładnością i przydatnością.
- ZdefiniowanyPrzeglądy niezawodnie wyłapują problemy i poprawiają jakość.
- ZarządzanyPrzeglądy są konstruktywne, spójne i podnoszą zarówno jakość, jak i umiejętności zespołu.
- ZoptymalizowanyPrzeglądy opierają się na współpracy, są źródłem wiedzy i stanowią integralną część doskonałości inżynierskiej.
Architektura i skalowalność
Jak przejrzysta jest architektura systemu oraz jak dobrze system się skaluje, działa wydajnie i radzi sobie z ryzykiem technicznym.
Przejrzystość architektury
Jak dobrze architektura systemu jest zdefiniowana, udokumentowana i zrozumiana.
- Ad hocArchitektura jest niejasna lub nieudokumentowana.
- PoczątkowyIstnieje pewna dokumentacja, ale jest niekompletna lub niejasna.
- ZdefiniowanyArchitektura jest udokumentowana i rozumiana przez większość członków zespołu.
- ZarządzanyArchitektura ukierunkowuje decyzje i ewoluuje dzięki ustrukturyzowanej współpracy.
- ZoptymalizowanyArchitektura jest skalowalna, przemyślana i stale doskonalona na podstawie wniosków i zdobytych doświadczeń.
Skalowalność i odporność
Zdolność systemu do obsługi wzrostu, wymagań wydajnościowych i potrzeb w zakresie niezawodności.
- Ad hocSystem ma problemy pod obciążeniem; skalowanie nie jest planowane.
- PoczątkowyNiektóre komponenty się skalują, ale ograniczenia pozostają.
- ZdefiniowanySystem obsługuje typowe obciążenie z akceptowalną wydajnością.
- ZarządzanySystem niezawodnie się skaluje, a wydajność jest aktywnie monitorowana i optymalizowana.
- ZoptymalizowanySkalowalność jest mocną stroną; system płynnie i przewidywalnie radzi sobie ze wzrostem.
Zarządzanie ryzykiem technicznym
Jak skutecznie ryzyka inżynierskie są identyfikowane, oceniane i ograniczane.
- Ad hocRyzyka ujawniają się późno i powodują poważne zakłócenia.
- PoczątkowyRyzyka są czasem omawiane, ale nikt nie zarządza nimi systematycznie.
- ZdefiniowanyRyzyka są identyfikowane podczas planowania i w razie potrzeby obsługiwane.
- ZarządzanyUstrukturyzowana ocena ryzyka umożliwia proaktywne ograniczanie zagrożeń.
- ZoptymalizowanyZarządzanie ryzykiem jest wbudowane we wszystkie procesy inżynierskie i zapobiega poważnym problemom.
Zarządzanie długiem technicznym
Jak widoczny jest dług techniczny, jak jest śledzony i redukowany oraz czy zespół wiąże go z wpływem na dostarczanie.
Widoczność długu
Jak dług techniczny jest identyfikowany, śledzony i komunikowany.
- Ad hocDług techniczny jest ukryty i nikt nim nie zarządza.
- PoczątkowyIstnieje pewna świadomość długu, ale rzadko jest on dokumentowany.
- ZdefiniowanyDług jest śledzony i okresowo przeglądany.
- ZarządzanyBacklog długu jest priorytetyzowany i uwzględniany w planowaniu.
- ZoptymalizowanyWidoczność długu i zapobieganie mu to kluczowe praktyki inżynierskie.
Praktyki redukcji długu
Jak skutecznie zespół zajmuje się długiem technicznym i go zmniejsza.
- Ad hocDług narasta, a nikt nie reaguje.
- PoczątkowyDług jest omawiany, ale rzadko spłacany.
- ZdefiniowanyDług jest spłacany, gdy pozwalają na to możliwości.
- ZarządzanyRedukcja długu jest proaktywna i stanowi część regularnej pracy.
- ZoptymalizowanyZespół utrzymuje minimalny dług dzięki zdyscyplinowanej inżynierii i ciągłemu doskonaleniu.
Świadomość wpływu
Zrozumienie, jak dług techniczny wpływa na tempo pracy, jakość i ryzyko.
- Ad hocZespół nie łączy długu technicznego z problemami w dostarczaniu.
- PoczątkowyIstnieje pewna świadomość, ale działania są ograniczone.
- ZdefiniowanyWpływ długu jest rozumiany i brany pod uwagę przy niektórych decyzjach.
- ZarządzanyWpływ długu konsekwentnie ukierunkowuje planowanie i priorytetyzację.
- ZoptymalizowanySilna kultura świadomości długu zapobiega jego narastaniu i wspiera zrównoważone tempo pracy.
Współpraca i wsparcie inżynierów
Jak skutecznie zespół dzieli się wiedzą, poszerza kompetencje i zapewnia programistom narzędzia do świetnej pracy.
Dzielenie się wiedzą
Jak skutecznie wiedza i doświadczenie inżynierskie są przekazywane w zespole.
- Ad hocWiedza jest zamknięta w silosach; zależność od pojedynczych osób jest duża.
- PoczątkowyDzielenie się wiedzą się zdarza, ale niekonsekwentnie.
- ZdefiniowanyWiedza jest przekazywana kanałami nieformalnymi lub ustrukturyzowanymi.
- ZarządzanyWiedza przepływa płynnie; onboarding przebiega sprawnie.
- ZoptymalizowanyKultura silnej współpracy z ciągłym uczeniem się i wspólną odpowiedzialnością.
Szerokość kompetencji i elastyczność
Zdolność zespołu do pracy w wielu obszarach systemu.
- Ad hocSilne silosy prowadzą do wąskich gardeł wynikających z zależności.
- PoczątkowyOd czasu do czasu członkowie zespołu poszerzają kompetencje o inne obszary.
- ZdefiniowanyCzłonkowie zespołu potrafią obsłużyć większość kluczowych obszarów.
- ZarządzanyWysoka elastyczność; zespół szybko dostosowuje się do zmian obciążenia.
- ZoptymalizowanyGłęboka i szeroka wiedza w całym zespole umożliwia szybkie i odporne dostarczanie.
Wsparcie programistów
Jakość narzędzi, procesów i środowiska wspierających produktywność programistów.
- Ad hocNarzędzia są przestarzałe lub niespójne; w pracy pojawia się wiele tarć.
- PoczątkowyUsprawnienia są w toku, ale luki pozostają.
- ZdefiniowanyProgramiści mają niezawodne narzędzia, które zaspokajają podstawowe potrzeby.
- ZarządzanyNarzędzia są dopracowane, wydajne i stale ulepszane.
- ZoptymalizowanyDoświadczenie programistów na światowym poziomie umożliwia szybką i wysokiej jakości pracę inżynierską.
Kiedy należy skorzystać z tej kontroli stanu zdrowia
- Aby ustalić punkt odniesienia dla dojrzałości technicznej zespołu inżynierskiego w obszarze kodu, architektury i współpracy.
- Podczas kwartalnych retrospektyw lub retrospektyw po wydaniu, aby śledzić zmiany w praktykach inżynierskich.
- Gdy dołącza nowy lider inżynierski, który potrzebuje szczerego obrazu obecnych mocnych stron i luk.
- Przed inwestycją w narzędzia, refaktoryzację lub zmiany procesów, aby zdecydować, gdzie wysiłek przyniesie najwięcej.
- Gdy zespół się rozrasta i chcecie, by standardy, dzielenie się wiedzą i architektura nadążały za wzrostem.
Porady i wskazówki
- Poproś każdą osobę o samodzielną ocenę przed dyskusją, aby szczere opinie wybrzmiały, zanim pojawi się myślenie grupowe.
- Najwięcej czasu poświęć wymiarom z największym rozrzutem ocen. Różnice zdań często pokazują, gdzie ludzie inaczej postrzegają system.
- Traktuj poziomy jak kolejne etapy, a nie szkolne oceny. Przejście z poziomu Początkowy na Zdefiniowany to realny postęp i warto to docenić.
- Wybierz jeden lub dwa wymiary do poprawy przed kolejną oceną, zamiast próbować zmienić wszystko naraz.
- Powtarzaj ocenę w regularnych odstępach, aby postęp w praktykach inżynierskich był stale widoczny.