Людина, яка тримає це в робочому стані
Є окремий тип програм, про який ніхто не пише. Його дописали ще до нинішньої мобільної епохи. Автори пішли далі, змінили професію, дехто вийшов на пенсію. У нього немає роадмапи, немає продакт-менеджера й немає доповідей на конференціях. Щомісяця він правильно виставляє рахунки десяткам тисяч людей, і якби він зупинився, вони помітили б це протягом години.
Я підтримую саме такі системи. Здебільшого на Perl, здебільшого для інтернет-провайдерів, і частина з них старша за смартфон у руках абонента.
Такого не обирають спеціально
Розробники схильні сприймати легасі як етап, що колись завершиться: ти його успадкував, ти з нього мігруєш, а потім розповідаєш історію. Таке бачення припускає, що є пункт призначення. Для провайдера з робочим білінгом і абонентською базою, яка навколо нього виросла, цього пункту часто немає — і не тому, що міграція неможлива, а тому, що бізнес-обґрунтування перепису значно слабше, ніж інженерам хотілося б вірити.
Система вже містить двадцять років рішень. Якого числа набуває чинності зміна тарифу. Що стається з обіцяним платежем, коли абонент вносить половину. Як саме призупиняється послуга, щоб підтримка, обладнання й рахунок казали одне й те саме. Ніде, крім коду, це не записано, і більшість із цього вивчено дорогою ціною — від клієнтів, які скаржилися.
Перепис не успадковує це знання. Він вивчає його заново, у продакшені, від тих самих клієнтів.
Яке мислення насправді потрібне
Технічна частина — не найскладніша. Найскладніше — позиція, яку треба зайняти й утримувати: вважати наявну поведінку навмисною, доки не доведено протилежне.
Кожна дивна гілка коду має два прочитання. Або хтось написав погано, або колись щось трапилось — і це шрам. Спочатку ти припускаєш перше. Згодом розумієш, що друге трапляється частіше, ніж мало б, — і що ціна помилкового здогаду не провалений тест, а чийсь відключений інтернет у п'ятницю ввечері.
Звідси звички, які збоку виглядають надмірно обережними. Змінювати менше, ніж міг би. Обирати нудне виправлення. З підозрою ставитися до власної винахідливості — особливо тоді, коли вона здається найбільш виправданою. Сприймати «я не розумію, навіщо це тут» як привід зупинитися, а не як дозвіл видалити.
Чому це важливіше, ніж здається
Білінг провайдера — це те місце, де насправді живе бізнес. Не сайт і не додаток, а система, яка знає, хто є клієнтом, скільки він винен і чи має його з'єднання працювати просто зараз. Це інфраструктура в буквальному сенсі: поки вона працює, про неї ніхто не думає.
Через це робота й невидима. Тут немає релізу. Найкращий можливий підсумок місяця уважної праці — що нічого не сталося й ніхто нічого не помітив. За аварію, якої не було, подяки не отримують.
Я дійшов висновку, що це нормально, і навіть частина принади. Є задоволення в тому, щоб бути людиною, якій провайдер телефонує, коли щось, що працювало два десятиліття, починає поводитись дивно, — і в тому, що після дзвінка воно працює далі ще два десятиліття. Не все варте того, щоб бути новим.
Друга половина мого тижня
Контраст із рештою роботи достатньо різкий, щоб бути смішним. В одному тижні можуть бути реліз React Native, що проходить рев'ю в App Store, і Perl-скрипт, коментарі в якому старші за цей фреймворк. Одна робота винагороджує швидкість. Друга — карає за неї.
Робити обидві зробило мене кращим у кожній. Легасі вчить, як зсередини відчувається десятиліття непідтриманих рішень, і це переноситься в код, який пишеш сьогодні, — з розумінням, що хтось його успадкує і йому доведеться здогадуватись, що ти мав на увазі.
- Білінг для ISP
- Легасі-системи
- Телеком