Tým zdědí fakturační modul, kterému nikdo plně nerozumí. Nemá žádné testy, které by chránily stávající chování. Je navržen sprint, který by ho „vyčistil“, a plán je přepsat jádro do nové struktury. Nikdo nedokáže říct, jak by věděl, že nová verze stále správně účtuje zákazníkům.
Toto je ilustrativní scénář, nikoli zdokumentovaný incident. Popisuje mezeru, kterou musí projekt školení refaktoringu zacelit: inženýři, kteří vidí, že kód je chaotický, ale zatím nemohou naplánovat omezené vylepšení a prokázat, že chování bylo zachováno.
Tato příručka je určena pro vedoucí inženýrských aktivit a manažery inženýrských aktivit. Zahrnuje popis problému s výkonem, diagnostiku nedostatků, přípravu a procvičování návrhu, práci s případovou studií a posouzení, zda se dovednosti přenesou do reálné praxe. Jde o návrh školení. Kód, testy a pravidla ve vašem programu by měly být validovány seniorními inženýry na vašem vlastním stacku.
Co je to školící projekt refaktoringu?
Školicí projekt refaktoringu je strukturovaná práce na starším kódu, jejímž cílem je jak vybudovat nové funkce, tak i vylepšit kód. Studenti plánují malé, omezené změny, chrání stávající chování pomocí testů, vylepšují návrh v malých krocích a prokazují, že se nic nepokazilo. Kód se zlepšuje a, co je důležitější, inženýři si procvičují úsudek, který budou potřebovat na základě skutečného technického dluhu.
Rychlá fakta
| Otázka | Stručná odpověď |
|---|---|
| Jaký je úkol? | Naplánujte a ověřte vylepšení omezeného staršího kódu. |
| Jaké skóre dosáhnete? | Analýza rizik a důkazy o zachování stávajícího chování. |
| Je široké přepracování dobrým školicím projektem? | Obvykle ne. Skrývá to procvičovanou dovednost a ztěžuje to projevení zachovaného chování. |
| Stačí kvíz o vzorcích refaktoringu? | Ne. Potvrzuje předpoklady, ale ne to, zda inženýr dokáže změnu naplánovat a ověřit. |
| Kdo ověřuje obsah? | Manažer technického oddělení a vedoucí inženýr, který zná kódovou základnu. |
| Co trénink nemůže vyřešit? | Chybějící testovací nástroje, uvolňovací tlak, nejasné vlastnictví a nedostatek času na údržbářské práce. |
| Jak víš, že to fungovalo? | Nový, dosud neviděný případ s využitím staršího kódu, hodnocený podle dohodnutých kritérií, s následnou analýzou skutečné práce. |
1. Popište problém s výkonem
Začněte s úkolem: naplánujte a ověřte ohraničené vylepšení staršího kódu. Důležité slovo je „ohraničené“. Student si vybere změnu dostatečně malou na to, aby ji dokončil, a dokáže říci, co je a co není v rozsahu.
Je dobré být přesný v termínech. Martin Fowler popisuje refaktoring jako kontrolovaná technika pro vylepšení návrhu existující kódové základny, složené z malých transformací zachujících chování. Fráze „zachování chování“ je to, co odlišuje refaktoring od přepisování, a je to to, co musí školení zviditelnit. Samotná metafora technického dluhu vymyslel Ward Cunninghama Fowlerova diskuse je užitečnou připomínkou toho, že dluh lze brát záměrně a obezřetně, takže ne každý chaotický modul je chyba, kterou je třeba opravit.
Kniha Michaela Featherse o starším kódu se v praxi věnuje stejnému přístupu. Vydavatel uvádí, že v ní učí vývojáře psát testy, které zajistí… neúmyslně nemění aplikacia dostat stávající software pod kontrolu bez nutnosti jeho úplného přepracování.
Napište prohlášení o výkonu v jedné větě a nechte ho zkontrolovat manažerem inženýrství: „Vzhledem k zastaralému modulu a definovanému cíli inženýr navrhne omezenou změnu, přidá testy, které definují aktuální chování, provede změnu po malých krocích a ukáže, že chování je zachováno.“
2. Diagnostikovat mezery ve vzdělávání a kontextu
Než cokoli postavíte, porovnejte požadovaný úkol s tím, co v současnosti procvičujete a zhodnoťte. Tréninkovou mezeru od něčeho jiného obvykle odlišují tři otázky:
- Využívá současná praxe skutečný úkol? Pokud školení zahrnuje vzory refaktoringu v slajdech, ale nikdo nikdy nezmění neotestovaný kód, nikdo neprocvičoval ochranné chování. Pokud je hodnocení testem s výběrem odpovědí na pachy kódu, měří zapamatovatelnost.
- Jaká je kognitivní poptávka? V Bloomově revidované taxonomii se posuzování bezpečnosti změny provádí na úrovni analýzy a hodnocení a návrh plánu a testů se odvíjí od úrovně tvorby. Přiřazení aktivit k těmto úrovním je popsáno v našem průvodci přiřazování vzdělávacích aktivit k Bloomově taxonomii.
- Stojí v cestě něco jiného než dovednost? Zkontrolujte personální obsazení, nástroje a postupy. Pokud sestavení trvá hodinu, nikdo nebude často provádět testy. Pokud se údržba nikdy neplánuje, inženýři budou refaktorovat pouze tajně. Příčiny, které nesouvisejí se školením, nahlaste lidem, kteří je mohou opravit.
3. Navrhněte cílenou přípravu a praxi
Jakmile zjistíte, které mezery může trénink zacelit, zadejte každé fázi specifický úkol.
Příprava. Zkontrolujte předpoklady pomocí krátké diagnostiky: jak funguje váš testovací rámec, co je charakterizační test a jak váš tým provádí kontroly a slučování. Do této fáze je vhodné studium vlastním tempem. Kontrola opakování pouze potvrzuje předpoklady.
Praxe. Používejte systematické refaktoringové projekty s jasnou strukturou. Začněte na malém, bezpečném vzorku a poté přejděte k reálné, ale ohraničené části vaší vlastní kódové základny. Kata Gilded Rose je známým výchozím bodem pro první krok. Jeho soubor README, spravovaný Emily Bache, doporučuje napsat testy před změnou kódu a cvičení chápe jako procvičování malých kroků, častého spouštění testů a postupného vylepšování návrhu. Rozumná posloupnost pro každý projekt je: definovat cíl a hranice, napsat testy, které zachycují, co kód dělá dnes, měnit jednu věc po druhé, spouštět testy po každém kroku a zapsat si, co jste se naučili.
Zpětná vazba. Propojte zpětnou vazbu s rozhodnutími, nikoli s celkovým skóre. „Vybrali jste logiku slev, ale vaše testy pokryly pouze šťastnou cestu, takže jste si změny zaokrouhlování nemohli všimnout“ je užitečnější než „3 z 5“.
Živý vstup instruktora nebo asynchronní kontrola? Živý vstup přidává největší hodnotu, když je volba nejednoznačná, například zda přestat a přidat chybějící test, nebo pokračovat. Asynchronní kontrola je dostačující, když studenti porovnávají svůj plán a testy s anotovanou verzí pro experty. Mnoho týmů používá obojí: nejprve přípravu vlastním tempem a poté facilitovanou lekci na složité případy.
4. Vypracujte realistický příklad
Ilustrativní příklad. Vedoucí inženýrství by měl před použitím ověřit případ a kritéria odpovědi.
Pouzdro. Starší funkce vypočítává celkovou cenu objednávky, včetně slevy, daně a pravidla dopravy. Nemá žádné testy. Tým navrhuje restrukturalizaci celého fakturačního modulu, aby byl „přehlednější“.
Úkol. Student vysvětlí, co by udělal, uvede důkazy, které by shromáždil, a uvede, jaké další informace nebo podporu potřebuje.
První pokus. „Rozdělil bych modul na tři služby, přesunul logiku a pak bych zkontroloval čísla ve stagingovém prostředí.“ Student si zvolil velkou změnu a pozdní manuální kontrolu. Neexistuje způsob, jak zjistit, zda se stará a nová verze shodují v okrajových případech.
Zpětná vazba a opakování. Recenzent se ptá, co funkce dělá dnes pro prázdný košík, slevu, která způsobí zápornou celkovou hodnotu, a případ zaokrouhlení. Opakovaný pokus žádá studenta, aby zúžil rozsah na jedno chování a uvedl, jak by dokázal, že se nezměnilo.
Silnější pokus. „Strukturu modulu bych prozatím nechal na pokoji. Zachytil bych, co funkce Order Total dnes vrací pro sadu vstupů, včetně okrajových případů, jako testy. Pak bych extrahoval výpočet slevy do vlastní funkce, spustil testy po tomto jediném kroku a zastavil. Poznamenal bych, že pravidlo dopravy má chování, kterému nerozumím, a než se ho pustím, zeptal bych se kolegy.“ Všimněte si, že tato odpověď omezuje změnu, chrání nejprve chování a pojmenovává to, co je neznámé.
Proč je každá odpověď obhajitelná nebo neúplná. Každý pokus posuzujte podle schválených kritérií, nikoli podle preferencí recenzenta. První pokus může být rozumným dlouhodobým směrem, ale jako plán je neúplný, protože nenese žádné důkazy o zachovaném chování. Silnější pokus je malý, ověřitelný a upřímný ohledně nejistoty.
5. Posouzení kapacit a plánování přenosu
Důkazem schopnosti je výkon na novém případu ze staršího kódu, který student dosud neviděl. Ohodnoťte analýzu rizik a důkaz, že chování bylo zachováno. Jednoduchá rubrika používá stupnici od 0 do 2 pro každé kritérium:
| Kritérium | Pozorovatelné důkazy |
|---|---|
| Provádění úkolů | Plánuje a ověřuje vylepšení omezeného staršího kódu a zaznamenává provedené akce a důkazy, které za nimi stojí. |
| Uvažování | Vysvětluje omezení, alternativy a nejistotu a kontroluje rizika a důkazy o zachování chování. |
| Hranice | Používá schválené postupy a žádá o pomoc, pokud informace nebo oprávnění nejsou dostatečné. |
Kotvy: 0 chybí nebo není podloženo, 1 je částečné s relevantními opomenutími a 2 je úplné a odůvodněné podle dohodnutých kritérií. Kritické chyby definujte samostatně, například změnu chování bez testu, který by si jí všiml, takže celkové skóre je nemůže skrýt. Tato rubrika je návrh, nikoli validovaný standard připravenosti: upravte ji s technickým manažerem a otestujte ji. Náš průvodce navrhování interaktivních postupů s užitečnou zpětnou vazbou ukazuje, jak psát zpětnou vazbu, která odkazuje na rozhodnutí.
Převod plánujte záměrně. Po cvičení dejte každému inženýrovi malý, skutečný dluh, který má projednat s recenzentem, nebo proveďte krátkou retrospektivu nedávné změny, která něco narušila. Převod zkontrolujte po vhodném setkání s reálnou prací, ne hned po workshopu.
Kde pomáhá interaktivní výuka
Interaktivní formáty pomáhají tam, kde by se všichni měli zavázat, než se setkají se skupinou. V živém setkání může facilitátor ukázat krátký úryvek staršího kódu, požádat každého inženýra, aby odeslal první změnu, kterou by provedl, a jak by prokázal její bezpečnost, a poté odhalit rozložení před diskusí. Stejný výzva může probíhat vlastním tempem pro přípravu. AhaSlides podporuje interaktivní učení a přepínání mezi živým a vlastním tempem. Je to nástroj pro prezentace a učení, nikoli místo pro spouštění nebo analýzu kódu, proto spusťte samotný refaktoring ve svém vlastním prostředí. Zkontrolujte všechny konkrétní funkce pro tvorbu, zpětnou vazbu nebo reporting, na které se chcete spolehnout, oproti svému vlastnímu pracovnímu postupu. Pokyny k výběru formátů naleznete v našem článku o Kdy použít adaptivní, interaktivní a živé učení.
Změřte, co se změnilo
Předem se rozhodněte, co by prokázalo, že inženýři dokáží daný úkol zvládnout. Porovnejte kvalitu analýzy rizik a důkazy o zachovaném chování na neviditelném případě s výchozím stavem. Definujte, kdo je zahrnut, jmenovatel a načasování. Pokud se výsledky zlepší, zkontrolujte, co se dalšího ve stejném období změnilo, například nové testovací nástroje, rychlejší sestavení nebo změna vlastnictví, než školení započítáte.
Omezení, která mohou přetrvávat
- Čas na údržbářské práce. Pokud se práce na dluzích nikdy neplánují, vyškolení inženýři stále nemají kde tuto dovednost využít.
- Testovací nástroje. Bez použitelného testovacího postroje nebo rychlé sestavení je těžké udržet malé kroky a časté kontroly.
- Krytí případu. Jeden starší případ ukazuje několik druhů rizik. Skóre obecně nepopisuje úsudek inženýra.
- Posouzení, kdy neprovést refaktoring. Některý kód je lepší nechat být, nahradit nebo vyřadit z provozu a toto rozhodnutí vyžaduje více než jen dovednosti.
- Převod. Výkon v kata není stejný jako výkon v produkčním modulu pod tlakem.
Včas je jmenujte sponzorům a naplánujte samostatné opravy. Školení zlepšuje to, co může inženýr plánovat a dokazovat. Nevytváří čas ani nástroje.
Často kladené otázky
Co je to školící projekt refaktoringu?
Jde o strukturovanou praxi na starším kódu, kde inženýři plánují malé změny, chrání stávající chování testy, mění design v malých krocích a ukazují, že se nic nepokazilo.
Je kompletní přepracování dobrý způsob, jak se dozvědět o technickém dluhu?
Obvykle ne. Přepisování je rozsáhlé, obtížně validovatelné a skrývá dovednost, kterou chcete rozvíjet. Ohraničená změna s testy, které zachycují aktuální chování, zviditelňuje dané zdůvodnění.
Jak posuzujete, zda inženýři dokáží bezpečně provést refaktoring?
Uveďte nový případ s použitím staršího kódu a ohodnoťte analýzu rizik a důkazy o zachování chování podle dohodnutých kritérií. Kvíz o vzorcích refaktoringu potvrzuje pouze předpoklady.
Potřebujete pro školení ukázkovou kódovou základnu?
Potřebujete místo, kde si můžete bezpečně procvičovat. Mnoho týmů začíná s veřejným kata a poté přechází k ohraničené části vlastního kódu. Váš technický manažer by měl potvrdit, že kód je vhodný.
Kde začít
Vyberte si jednu malou, opakující se změnu ve vaší kódové základně. Napište prohlášení o výkonu, nechte manažera inženýrství ověřit případ a testy, které by prokázaly zachované chování, a vypracujte tříkritériovou rubriku se stupnicí od 0 do 2 a seznamem kritických chyb. Před spuštěním ji otestujte v malé skupině.
Chcete-li vidět, jak by se dalo cvičení refaktoringového rozhodování spustit živě s vaším vlastním týmem a následně znovu použít vlastním tempem, prozkoumejte AhaSlides.








