Legacy як Старенька: чому не переписують живий легасі
Трохи філософії роботи з живими легасі-системами.
2025-09-30
Це Старенька. Вона кішка. Так, дружина дала їй якесь ім’я (дружина вважає, що імена важливі — дуже важливі), але Старенька — це саме Старенька, а не якась Керрі.
Старенька — стара (сюрприз). Ніхто не знає її точного віку; ми знайшли її вже такою. Вона маленька, налякана й беззуба.
Важко їсти, коли не маєш зубів. Важко жити, коли не можеш їсти.
Але знаєте що? Старенька живе. Вона хоче жити й робить усе, щоб продовжувати. Вона сама прийшла до нашої машини — і відмовилася йти.
Її їжа має бути м’якою або перемеленою. Вона хоче любові, хоче, щоб її хтось погладив, але коли простягаєш руку — лякається, інстинктивно відсмикує голову (хто сказав, що на вулиці їй жилося солодко?).\
То про що я, власне, говорю? Ви ж працюєте зі старим кодом, так? Він древній, написаний давно, немодний, неактуальний, потворний?
Так ось — це ваша Старенька. Ваш проєкт теж хоче трохи любові.
«Усе написане раніше застаріло, непотрібне. Треба все викинути й переписати з нуля».
Ось вона — ключова фраза, що горить в очах багатьох нових розробників, коли вони бачать це.
«Усе треба викинути й переписати з нуля», дійсно? Ні. Забудьте — викресліть цю фразу зі свого словника. Не думайте про білу мавпу. Це неможливо.
Якщо ви трохи патологоанатом і ваш проєкт радше схожий на мертвого пацієнта — ви там лише тому, що хтось мусить бути — гаразд, ресурсів на переписування вже немає. Труп — це труп; не знущайтеся з тіла.
А якщо ваш проєкт живий, активний, дихає — із новими фічами та підтримкою — переписування тим паче неможливе.
По-перше, це фінансово безглуздо.
По-друге — що ми отримаємо в результаті переписування? Гарненьку нову цукерочку? Тепер усе надсучасне, поліроване, блискуче? А страшний технічний борг — тепер нульовий?
Насправді технології вже трохи постаріли за ті кілька років, поки ви переписували (айті так працює). А ваш технічний борг? Він не зменшився — він злетів десь на орбіту Starlink (якщо дочитали досюди, ви маєте розумієти, чому).
У результаті ми не просто нічого не виграли — ми програли, і програли майже всюди.
Легасі не потребує революції. Йому потрібна турбота.
Не геройство, а терпіння. Не переписування, а розуміння.
Старий код не треба викидати — його треба лікувати.
Якщо сьогодні маєте кілька зайвих хвилин — поліпшіть щось: оптимізуйте, відрефакторте клас, файл, метод — бодай один рядок. Без поспіху й геройства. Крок за кроком.
І тоді одного дня ви побачите: система почне жити сама, тихо муркочучи собі під ніс.