Выстрел в ногу сквозь года

Me at Starbucks

Если вы никогда не костылили, то вы не программист.

У меня есть проект Radio Hustle и SPA app.radio-hustle.com для него. Веб-приложение на реакте существует с тех времён, когда он ещё был с нулём в мажорной версии.

Проект пережил несколько итераций сложных миграций, тотальную смену архитектуры, сейчас переживает переход на микрофронтенд.

Когда я только начинал его писать, у меня было большое желание как можно быстрее выпустить его в прод, поэтому на качество кода я особо не смотрел.

Это был лихой 2016ый. Я написал на скорую руку виджет для поиска по людям и с тех пор почти не трогал его. Я знал, пишу адский костыль, что когда-то мне это аукнется. Знал и забыл.

Аукнулось сегодня. Точнее неизвестно когда, но сегодня один небезразличный пользователь написал мне в вк, приложив скринкаст и описание воспроизведение бага (Новзур, если ты читаешь это, спасибо тебе большое!).

Данные в виджет попадали из стора, в который, в свою очередь, они падали из отдельного запроса. Компонент в тупую брал данные оттуда, как только маунтился. Без проверок на их существование. Без инициализации значения по умолчанию в сторе. Без кучи ещё всего.

Запрос на протяжении многих лет работал за миллисекунды. За последние пару месяцев в тело запроса было добавлено кучу всего, что и привело к тому, что компонент рендерился быстрее, чем приходили данные.

Какая мораль?

Пишите нормально сразу, если есть возможность.

Если без костыля никак:

— отметьте себе костыль задачей в jira/trello/что-там-у-вас — опишите причину костыля, возможное решение — в коде оставьте TODO с ссылкой на таску — расскажите коллегам, что вы насрали в код, пусть будут в курсе — постарайтесь пофиксить костыль как только появится возможность.

… а то будете как я, который вместо прогулки по вечернему городу сидел и фиксил багу в ближайшей кафешке.