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.

    1. Ad hocPraktyki kodowania znacznie się różnią; nikt nie stosuje wspólnych standardów.
    2. PoczątkowyIstnieją pewne standardy, ale są stosowane niekonsekwentnie.
    3. ZdefiniowanyStandardy są udokumentowane i zwykle przestrzegane.
    4. ZarządzanyStandardy są konsekwentnie stosowane i regularnie przeglądane.
    5. 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ć.

    1. Ad hocKod jest trudny do czytania, poruszania się po nim i ponownego użycia.
    2. PoczątkowyWprowadzono pewne usprawnienia, ale problemy z utrzymywalnością nadal występują.
    3. ZdefiniowanyBaza kodu jest w większości zrozumiała i łatwa w utrzymaniu.
    4. ZarządzanyKod jest czysty, modułowy i przewidywalny, a zespół stosuje solidne praktyki dbania o utrzymywalność.
    5. 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.

    1. Ad hocPrzeglądy są rzadkie, pospieszne lub powierzchowne.
    2. PoczątkowyPrzeglądy się odbywają, ale bardzo różnią się dokładnością i przydatnością.
    3. ZdefiniowanyPrzeglądy niezawodnie wyłapują problemy i poprawiają jakość.
    4. ZarządzanyPrzeglądy są konstruktywne, spójne i podnoszą zarówno jakość, jak i umiejętności zespołu.
    5. 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.

    1. Ad hocArchitektura jest niejasna lub nieudokumentowana.
    2. PoczątkowyIstnieje pewna dokumentacja, ale jest niekompletna lub niejasna.
    3. ZdefiniowanyArchitektura jest udokumentowana i rozumiana przez większość członków zespołu.
    4. ZarządzanyArchitektura ukierunkowuje decyzje i ewoluuje dzięki ustrukturyzowanej współpracy.
    5. 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.

    1. Ad hocSystem ma problemy pod obciążeniem; skalowanie nie jest planowane.
    2. PoczątkowyNiektóre komponenty się skalują, ale ograniczenia pozostają.
    3. ZdefiniowanySystem obsługuje typowe obciążenie z akceptowalną wydajnością.
    4. ZarządzanySystem niezawodnie się skaluje, a wydajność jest aktywnie monitorowana i optymalizowana.
    5. 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.

    1. Ad hocRyzyka ujawniają się późno i powodują poważne zakłócenia.
    2. PoczątkowyRyzyka są czasem omawiane, ale nikt nie zarządza nimi systematycznie.
    3. ZdefiniowanyRyzyka są identyfikowane podczas planowania i w razie potrzeby obsługiwane.
    4. ZarządzanyUstrukturyzowana ocena ryzyka umożliwia proaktywne ograniczanie zagrożeń.
    5. 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.

    1. Ad hocDług techniczny jest ukryty i nikt nim nie zarządza.
    2. PoczątkowyIstnieje pewna świadomość długu, ale rzadko jest on dokumentowany.
    3. ZdefiniowanyDług jest śledzony i okresowo przeglądany.
    4. ZarządzanyBacklog długu jest priorytetyzowany i uwzględniany w planowaniu.
    5. 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.

    1. Ad hocDług narasta, a nikt nie reaguje.
    2. PoczątkowyDług jest omawiany, ale rzadko spłacany.
    3. ZdefiniowanyDług jest spłacany, gdy pozwalają na to możliwości.
    4. ZarządzanyRedukcja długu jest proaktywna i stanowi część regularnej pracy.
    5. 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.

    1. Ad hocZespół nie łączy długu technicznego z problemami w dostarczaniu.
    2. PoczątkowyIstnieje pewna świadomość, ale działania są ograniczone.
    3. ZdefiniowanyWpływ długu jest rozumiany i brany pod uwagę przy niektórych decyzjach.
    4. ZarządzanyWpływ długu konsekwentnie ukierunkowuje planowanie i priorytetyzację.
    5. 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.

    1. Ad hocWiedza jest zamknięta w silosach; zależność od pojedynczych osób jest duża.
    2. PoczątkowyDzielenie się wiedzą się zdarza, ale niekonsekwentnie.
    3. ZdefiniowanyWiedza jest przekazywana kanałami nieformalnymi lub ustrukturyzowanymi.
    4. ZarządzanyWiedza przepływa płynnie; onboarding przebiega sprawnie.
    5. 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.

    1. Ad hocSilne silosy prowadzą do wąskich gardeł wynikających z zależności.
    2. PoczątkowyOd czasu do czasu członkowie zespołu poszerzają kompetencje o inne obszary.
    3. ZdefiniowanyCzłonkowie zespołu potrafią obsłużyć większość kluczowych obszarów.
    4. ZarządzanyWysoka elastyczność; zespół szybko dostosowuje się do zmian obciążenia.
    5. 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.

    1. Ad hocNarzędzia są przestarzałe lub niespójne; w pracy pojawia się wiele tarć.
    2. PoczątkowyUsprawnienia są w toku, ale luki pozostają.
    3. ZdefiniowanyProgramiści mają niezawodne narzędzia, które zaspokajają podstawowe potrzeby.
    4. ZarządzanyNarzędzia są dopracowane, wydajne i stale ulepszane.
    5. 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.

Najczęściej zadawane pytania

Czym jest health check Engineering Excellence?
To ocena praktyk inżynierskich oparta na modelu dojrzałości, obejmująca jakość kodu, architekturę i skalowalność, zarządzanie długiem technicznym oraz współpracę. Każdy z 12 wymiarów jest oceniany na pięciu poziomach od Ad hoc do Zoptymalizowany, co daje zespołowi wspólny język do opisania, gdzie się znajduje.
Czym różni się od standardowego health checku zespołu?
Standardowy health check zespołu pokazuje, jak ludzie się czują. Ten ocenia, na ile ugruntowana jest każda praktyka, a każda ocena odpowiada opisanemu poziomowi, więc wyniki pokazują, czego wymaga przejście na kolejny poziom.
Kto powinien wziąć udział?
Inżynierowie, liderzy techniczni i menedżerowie inżynierii. Wartościowe spojrzenie ma każdy, kto jest blisko tego, jak kod jest pisany, przeglądany i utrzymywany.
Jak często należy przeprowadzać ocenę?
Większość zespołów robi to raz na kwartał lub przy ważnych wydaniach. Regularny rytm pozwala śledzić trendy i sprawdzać, czy prace usprawniające przynoszą efekty.
Co oznaczają poziomy dojrzałości?
Skala obejmuje poziomy Ad hoc, Początkowy, Zdefiniowany, Zarządzany i Zoptymalizowany. Niższe poziomy oznaczają niespójne lub reaktywne praktyki, a wyższe praktyki spójne, proaktywne i stale doskonalone.