Пули и шипы: учимся использовать костыли по уму

02.11.2025 

Пули и шипы: учимся использовать костыли по уму

Продолжаем рассказ о костылях в коде: в первом посте мы поговорили о том, как делать не надо, а сегодня разберём, как использовать костыль по уму (и можно ли это вообще делать!).

Вопреки популярному убеждению о «костылях» как о ругательстве, мы должны признать: костыли спасают проекты от вечного этапа разработки. Если они сделаны обдуманно, это не слабость, а признак зрелости проекта.

Более того, многим гигантам IT именно костыли помогли выжить и вырасти. Чтобы не быть голословными, приведём несколько примеров.

Микросервисы у Amazon не появились как «гениальная архитектура». Сначала это были просто «заплатки», чтобы отделить узкие места от монолита. Со временем эти «костыли» превратились в архитектурное решение, которое стало индустриальным стандартом.

Еще один хороший пример: Facebook в начале 2000-х строился на обычном PHP. Когда стало понятно, что это не тянет, они сделали «костыльное» решение — JIT-компилятор HHVM, а потом язык Hack. Это подарило компании годы стабильной работы, прежде чем им удалось перейти на более фундаментальные оптимизации.

Когда костыль становится проблемой

Хороший костыль должен быть управляемым. Иначе он превращается в «технический цемент»:

Нет документации → через полгода все забывают, что это временное решение
Нет срока → «потом перепишем» растягивается на годы
Нет изоляции → костыль прилипает к бизнес-логике и его уже не вытащить

Может ли «костыль» быть правильным?

Конечно, если следовать общепринятым подходам формирования костылей. Расскажем подробнее про два из них.

Tracer Bullet Development: пули, которые показывают путь

Представьте трассирующую пулю: она не убивает, но показывает траекторию. Так и здесь — вместо идеального решения делаем рабочий сквозной путь.

Такой подход позволяет реализовать необходимую функциональность для запуска проекта и даёт время на тщательную проработку без ущерба бизнесу.

Простой пример: чтобы собрать форму регистрации на сайте, необходимо собрать и разработать несколько модулей, подключить базу данных, валидацию и так далее. А можно поступить проще:
Простая форма → отправка в API → сохранение в БД → мгновенный вход.
Да, нет подтверждения почты и сложной валидации, но пользователь уже может работать! А в этот момент остальная команда строит функционал вокруг этого ядра, не блокируя при этом работу всего сервиса.

Spike Solution: исследовательские шипы

Spike — одноразовый код для проверки гипотезы. Как тест-драйв автомобиля: не для поездки в отпуск, а чтобы понять, подходит ли он.

Такие шипы не сохраняют в проекте — они помогают быстро протестировать нужную фичу и идти дальше, к более детальной проработке. Главное — изолировать такой код от продакшена!

Отличие от tracer bullet:
Tracer bullet → остаётся и развивается
Spike → выбрасывается после получения ответа

Подведем итоги: костыли – не всегда зло, а обдуманные костыли помогают командам быстрее двигаться вперёд, проверять гипотезы на практике и запускать функционал без долгого проектирования.

Кстати, удивительно, но факт: в продакшне у Google, Amazon или Netflix костылей прямо сейчас живёт немало, но они — управляемые и документированные.

А вы сталкивались с костылями, которые спасли проект?

 

Разработка проектов на Python

Начните в удобное время!
Курс школы Юайти

Пробное занятие
с репетитором по математике и программированию

Запишитесь сейчас бесплатно 
Записаться

Понравилась статья?

Подпишись на Телеграм школы, чтобы не пропустить новые статьи и новости
Telegram канал