Legacy як Старенька: чому не переписують живий легасі

Трохи філософії роботи з живими легасі-системами.

2025-09-30

Це Старенька. Вона кішка. Так, дружина дала їй якесь ім’я (дружина вважає, що імена важливі — дуже важливі), але Старенька — це саме Старенька, а не якась Керрі.

Старенька — стара (сюрприз). Ніхто не знає її точного віку; ми знайшли її вже такою. Вона маленька, налякана й беззуба.

Важко їсти, коли не маєш зубів. Важко жити, коли не можеш їсти.

Але знаєте що? Старенька живе. Вона хоче жити й робить усе, щоб продовжувати. Вона сама прийшла до нашої машини — і відмовилася йти.

Її їжа має бути м’якою або перемеленою. Вона хоче любові, хоче, щоб її хтось погладив, але коли простягаєш руку — лякається, інстинктивно відсмикує голову (хто сказав, що на вулиці їй жилося солодко?).\

То про що я, власне, говорю? Ви ж працюєте зі старим кодом, так? Він древній, написаний давно, немодний, неактуальний, потворний?

Так ось — це ваша Старенька. Ваш проєкт теж хоче трохи любові.

«Усе написане раніше застаріло, непотрібне. Треба все викинути й переписати з нуля».

Ось вона — ключова фраза, що горить в очах багатьох нових розробників, коли вони бачать це.

«Усе треба викинути й переписати з нуля», дійсно? Ні. Забудьте — викресліть цю фразу зі свого словника. Не думайте про білу мавпу. Це неможливо.

Якщо ви трохи патологоанатом і ваш проєкт радше схожий на мертвого пацієнта — ви там лише тому, що хтось мусить бути — гаразд, ресурсів на переписування вже немає. Труп — це труп; не знущайтеся з тіла.

А якщо ваш проєкт живий, активний, дихає — із новими фічами та підтримкою — переписування тим паче неможливе.

По-перше, це фінансово безглуздо.

По-друге — що ми отримаємо в результаті переписування? Гарненьку нову цукерочку? Тепер усе надсучасне, поліроване, блискуче? А страшний технічний борг — тепер нульовий?

Насправді технології вже трохи постаріли за ті кілька років, поки ви переписували (айті так працює). А ваш технічний борг? Він не зменшився — він злетів десь на орбіту Starlink (якщо дочитали досюди, ви маєте розумієти, чому).

У результаті ми не просто нічого не виграли — ми програли, і програли майже всюди.

Легасі не потребує революції. Йому потрібна турбота.
Не геройство, а терпіння. Не переписування, а розуміння.

Старий код не треба викидати — його треба лікувати.

Якщо сьогодні маєте кілька зайвих хвилин — поліпшіть щось: оптимізуйте, відрефакторте клас, файл, метод — бодай один рядок. Без поспіху й геройства. Крок за кроком.

І тоді одного дня ви побачите: система почне жити сама, тихо муркочучи собі під ніс.