← Назад к вопросам

Как относишься к использованию костылей в работе?

1.0 Junior🔥 81 комментариев
#Софт-скиллы и мотивация

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI28 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Отношение к использованию костылей в работе

Этот вопрос касается практического подхода к решению проблем. Мой взгляд на использование костылей (workarounds, временные решения) основан на балансе между прагматизмом и долгосрочной устойчивостью системы.

Определение костыля

Костыль (Workaround) — это временное решение, которое решает проблему без адреса корневой причины. Примеры:

  • Захардкодить значение вместо получения из конфига
  • Добавить обход ошибки вместо её исправления
  • Дублировать код вместо рефакторинга
  • Использовать старое API вместо миграции на новое

Мой подход: контекстный прагматизм

Я не категорически против костылей, но использую их осознанно.

Когда костыли ОПРАВДАНЫ

1. Критическая ситуация (срочный фикс)

Если система упала на продакшене:

  • Нужно быстро восстановить работоспособность
  • Нельзя ждать правильного решения
  • Костыль с пометкой TODO и план на исправление — нормально

Пример:

# TODO: URGENT FIX - убрать когда придёт ответ от API
if api_response is None:
    return mock_data  # Временно используем мок

2. Внешние зависимости

Если проблема в третьей стороне, которую мы не контролируем:

  • Баг в библиотеке
  • API соседней системы упал
  • Проблема с сетью

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

3. Прототипирование и MVP

Когда мы проверяем идею или создаём MVP:

  • Костыли приемлемы для быстрой валидации
  • Потом переделываем красиво перед продакшеном
  • Это называется "быстрое решение, затем перефакторинг"

4. Временные метрики и логирование

Нужно быстро отладить проблему:

print(f"DEBUG: {variable}")  # Временно для отладки

Потом удаляем перед коммитом.

Когда костыли НЕДОПУСТИМЫ

1. На постоянной основе

Костыль, существующий больше спринта — это уже не костыль, это технический долг:

Неправильно:

# Костыль с 6 месяцев назад
if user.type == "special_user_that_broke_in_2024":
    return special_handling()

2. Скрывающий реальную проблему

Если костыль скрывает баг, который потом взорвётся:

Плохо:

try:
    process_order()
except Exception:
    pass  # Проблемы скрыты, потом потеря денег

3. В критичном коде безопасности

В авторизации, валидации, шифровании — NO SHORTCUTS!

4. Когда нет плана на исправление

Если нет JIRA задачи, плана и сроков — костыль превращается в постоянное решение.

Правильный процесс использования костыля

Шаг 1: Документируй

# WORKAROUND (JIRA-1234): Временный обход критичного бага
# Убрать когда поправим зависимость X версии Y
# Дедлайн: Q2 2026
if should_bypass_validation():
    return handle_special_case()

Шаг 2: Создай задачу

  • В JIRA, Azure DevOps или системе управления
  • Опиши, что нужно исправить
  • Поставь сроки (1-2 спринта максимум)

Шаг 3: Приоритизируй

  • Костыль должен быть в бэклоге
  • На каком-то этапе его нужно исправить

Шаг 4: Исправь

  • Когда есть время, переделай правильно
  • Запусти все тесты
  • Удали костыль

Признаки плохого отношения к костылям

Признак 1: Нет документации Костыль на месте, но никто не знает, почему он здесь.

Признак 2: Нет JIRA задачи Нет плана исправления = костыль станет постоянным.

Признак 3: Множественные вложенные костыли Один костыль потребовал другой костыль, потом третий. Это spiral down.

Признак 4: Костыль на производстве больше года Это уже не костыль, это проблема архитектуры.

Примеры хорошего использования

Пример 1: Срочный фикс на продакшене

# HOT FIX (PROD-2024-03-28): Срочно отключили новый алгоритм
# Используем старый временно
# JIRA-5678: Переделать алгоритм к концу спринта
use_old_algorithm = True

Пример 2: Баг в библиотеке

# WORKAROUND (requests#5234): Баг в requests 2.28.0
# Monkey patch пока не выйдет 2.29.0
# Дедлайн обновления: 2 недели
if requests.__version__ == "2.28.0":
    patch_requests_timeout()

Пример 3: Временное логирование

# DEBUG: Убрать перед финальным коммитом
import sys
print(f"DEBUG: response={response}", file=sys.stderr)

Мой совет команде

Балансируй между скоростью и качеством:

  • Если критично — используй костыль и план исправить
  • Если не критично — сделай правильно с первый раз

Правило 3 недель:

  • Если костыль существует больше 3 недель без плана исправления — это проблема
  • Нужна refactor задача в спринт

Документируй и трекируй:

  • Каждый костыль должен иметь JIRA задачу
  • Комментарий в коде с ссылкой
  • Дедлайн на исправление

Не копируй костыли:

  • Если видишь костыль в коде, не добавляй ещё один рядом
  • Спроси, почему он там, может это уже исправлено

Заключение

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

  • Когда нужно: срочность, критичность, внешние факторы
  • Как нужно: документированно, с планом на исправление
  • Потом исправляет: не оставляет на продакшене на года

Технический долг от костылей может стоить дороже, чем время на правильное решение.

Как относишься к использованию костылей в работе? | PrepBro