Алексей Павлов – Код смыслов: Философия созидания в современном IT (страница 2)
На первый взгляд Feature Delivery выглядит логично и безопасно. Есть запрос от бизнеса, есть спецификация, есть дедлайн. Разработчик не спорит, не задает лишних вопросов и не берет на себя ответственность за последствия. Он просто «делает свою работу».
Но именно здесь и кроется ловушка.
Feature Delivery — это конвейерная модель:
бизнес формулирует хотелку,
аналитик переводит её в требования,
разработчик пишет код,
задача считается выполненной после деплоя.
В этой модели разработчик отвечает за корректность реализации, но не за ценность результата. Фича может:
не использоваться пользователями,
усложнять интерфейс,
увеличивать технический долг,
замедлять развитие продукта в будущем.
И формально никто не виноват. Все «сделали свою часть».
Product Engineering — принципиально другой подход. Здесь инженер:
понимает цели бизнеса,
видит продукт как целостную систему,
осознает влияние каждого решения на пользователей, команду и инфраструктуру.
Product Engineering начинается там, где инженер задает неудобные вопросы:
Какую проблему пользователя мы решаем?
Что изменится, если мы этого не сделаем?
Как мы поймем, что фича успешна?
Почему это критически важно? Потому что код — это пассив, а не актив. Каждая строка кода:
требует поддержки,
увеличивает поверхность ошибок,
потребляет ресурсы,
усложняет онбординг новых сотрудников.
Лучший код — не самый элегантный. Лучший код — тот, который не пришлось писать, потому что проблема была решена иначе.
Когда к вам приходит бизнес-запрос на новую фичу, самый опасный момент — это момент, когда вы открываете IDE слишком рано. Код создает иллюзию прогресса, но может увести команду в сторону от реальной проблемы.
Методология «Пяти почему», пришедшая из производственной системы Toyota, — мощный и недооцененный инструмент в инженерной практике. Её суть проста: вместо того чтобы принимать запрос как данность, вы последовательно выясняете первопричину.
Рассмотрим пример глубже и медленнее.
— Нам нужна кнопка выгрузки данных в Excel.
— Зачем?
— Менеджеры хотят анализировать продажи.
— Зачем им анализировать продажи?
— Чтобы видеть отклонения от нормы.
— Почему они не видят их сейчас?
— В админке нет нужных фильтров и визуализаций.
— Зачем им именно сейчас это нужно?
— Участились подозрительные всплески заказов.
— Зачем отслеживать всплески вручную?
— Чтобы вовремя выявлять фрод и минимизировать потери.
На уровне первой итерации решение кажется очевидным: Excel. На уровне пятого «почему» становится ясно: проблема не в отчетах, а в безопасности и мониторинге.
Итоговое решение может выглядеть совершенно иначе:
автоматический алерт при аномалиях,
дешборд с ключевыми метриками,
интеграция с системой антифрода.
Вы:
решили реальную проблему бизнеса,
уменьшили когнитивную нагрузку на пользователей,
не создали дополнительный ручной процесс,
сократили объем поддерживаемого кода.
Методология «Пяти почему» — это не формальный ритуал. Это способ переключить мышление инженера из режима «исполнитель» в режим соавтор решения.
Одной из самых сложных и редких компетенций зрелого разработчика является умение сказать «нет». Не из упрямства, не из высокомерия, а из ответственности.
В культуре Feature Delivery отказ воспринимается как саботаж. В культуре Product Engineering отказ — это форма заботы о продукте.
Каждая новая фича имеет цену. Иногда она очевидна (время разработки), но чаще скрыта:
рост сложности архитектуры,
увеличение времени тестирования,
дополнительные сценарии отказа,
снижение скорости будущих изменений.
Зрелый инженер мыслит категориями соотношения ценности и сложности. Если фича: добавляет 1% ценности, но увеличивает сложность системы на 40%, — это не фича, а инвестиция с отрицательной доходностью.
Важно различать безответственность и осознанный компромисс.
Фраза «Сделаем костыль, а там разберемся» — признак незрелости.
Фраза
«Мы осознанно упрощаем решение сейчас, фиксируем долг и планируем рефакторинг через два спринта» — позиция профессионала.
Философия «зачем?» не запрещает компромиссы. Она требует, чтобы они были прозрачными и управляемыми.