концепції / technical-debt
Технічний борг
Формулювання, що запало Віктору, — цитата, яку він переказує далі: «якщо ти просто пишеш код — ти накопичуєш технічний борг» (випуск про код-ревʼю в Google). Його приклад: систему спроєктували під 10 модулів, а тепер їх 300. Кожен новий модуль написано точно так само, як попередні, поревʼюєно, як попередні, і в диффі він виглядає чудово — але архітектура в цілому вже не працює. У цьому суть погляду каналу: борг — це не неохайний код, що прослизнув повз ревʼю; це консистентний код, який накопичується всупереч дизайну, що тихо втратив актуальність, — і саме тому він невидимий для пре-сабміт код-ревʼю.
Той самий механізм — у його історіях про абстракції: віджет-прототип на ~100 рядків виростає в один файл на 5000 рядків саме тому, що кожна зміна лишалася консистентною з навколишньою структурою — «нас же ТИ так навчив», сказала йому команда (голосове про страшні абстракції). Ліки, які він описує, — структурні, а не на рівні диффа: у Google — post-launch проходи по вже змердженому коду, у WebbyLab — періодичні архітектурні ревʼю з чеклістами, C4-діаграмою та планом дій, який повторно перевіряють за ~2 місяці (випуск про код-ревʼю в Google). Мікросервіси роблять цей борг унікально дорогим: хибна межа в моноліті — дешевий рефакторинг, а між сервісами різними мовами й у різних командах її виправити неймовірно важко (головна проблема мікросервісів).
Розібрано у відео
- Як покращити Code Review? Як це робить Google?
теза «просто писати код = накопичувати борг», приклад 10→300 модулів і формати ревʼю, які ловлять гниття на рівні архітектури
- Голосове №3 — страшні абстракції
як борг росте через консистентність зі застарілою структурою (файл на 5000 рядків)
- Головна проблема мікросервісів, яку часто недооцінюють
хибні межі сервісів як найважча для повернення форма боргу
Повʼязане
Код-ревʼю — ревʼю окремих PR не бачить цей клас боргу; архітектурне ревʼю — бачить Якість коду — якість як код, що й далі дозволяє себе розширювати Абстракції — не виділяти нові абстракції, коли відповідальності ростуть, — саме так борг і накопичується Мікросервіси — розподілені системи заморожують погані рішення намертво