Kontext
Pracoval jsem hlavně ve velkém C#/.NET monolitu v doméně Billing a Finance. Billing nebyl izolovaná část produktu. Byl propojený s účty, rezervacemi, platbami, účetními kategoriemi, reporty, checkoutem, fiskalizací i historickými finančními daty.
To znamenalo, že i zdánlivě malá změna mohla mít dopad na více procesů, týmů a zákaznických scénářů. Nestačilo implementovat ticket. Často bylo nejdřív potřeba pochopit, proč se systém chová určitým způsobem, kdo na tom chování závisí, jaká data už existují v produkci a co by se mohlo rozbít.
Co bylo na té práci těžké
Ve velkém legacy systému starý kód často není jen technický dluh. Je to také záznam obchodních pravidel, historických rozhodnutí, zákaznických výjimek a edge cases, které už nemusí být popsané nikde jinde než právě v kódu.
To mě naučilo dívat se na refactoring jinak. Ne jako na estetické čištění, ale jako na práci s produkční realitou. Pokud člověk nerozumí důvodu, proč nějaké chování vzniklo, může snadno odstranit něco, co vypadá jako nepořádek, ale ve skutečnosti chrání důležitý zákaznický nebo finanční scénář.
Principy, které jsem si z Mews odnesl
- Nejdřív porozumět doméně a datům, potom navrhovat změnu.
- U finančních dat rozlišovat aktuální konfiguraci od historické správnosti.
- Skryté závislosti dělat viditelnějšími, ne je jen obcházet dalším kódem.
- Zavádět rizikové změny postupně, měřit je a umět je vysvětlit.
- Brát dokumentaci jako součást engineeringu, ne jako administrativní přívěsek.
Vybrané oblasti práce
Níže jsou samostatně rozepsané oblasti, které podle mě nejlépe ukazují, co jsem v Mews řešil a jak nad backendovou prací přemýšlím.
Accounting categories
Práce s historickou správností finančních dat, změnami konfigurace a opravami existujících dat.
Návrh oddělení Billing domény
Architektonická práce na zpřehlednění hranic Billingu uvnitř velkého monolitu.
Feature Flag Runner
Nástrojový vzor pro bezpečné zavádění změn, observabilitu a porovnávání starého a nového chování.
Dokumentace a gamifikované sdílení znalostí
Pokus změnit doménovou dokumentaci v týmovou onboardingovou aktivitu místo pasivního dokumentu.
Shrnutí
Kdybych měl svoji práci v Mews shrnout jednou větou: pracoval jsem na business-critical Billing a Finance backend systémech v C#/.NET, kde jsem se naučil měnit velký legacy monolit s respektem k doméně, historickým datům, produkčnímu riziku a rozhodnutím, která systém formovala dávno přede mnou.