Принцип «не чини то, что работает¶
«Не чини то, что работает» — принцип (также известный как «если не сломано — не чини», англ. if it ain't broke, don't fix it) — эмпирическое правило проектирования, инженерии и управления, согласно которому вмешательство в исправно функционирующую систему несёт риск ухудшения её состояния и потому должно быть оправдано явной необходимостью. Принцип широко применяется в программировании, техническом обслуживании, организационном управлении и повседневном принятии решений.
¶Происхождение
Фраза в современном виде вошла в английский язык в 1970-х годах и связана с именем американского инженера и предпринимателя Берти Нэйгла (Bertie Naegele), а также с южноамериканским сленгом. В 1977 году фраза «if it ain't broke, don't fix it» была включена в словарь Oxford English Dictionary как цитата из The New York Times. В русскоязычной среде устойчивый эквивалент — «работает — не трогай».
В российской инженерной традиции аналогичное правило существовало задолго до появления англоязычной формулировки: в советской технической культуре широко применялось правило «не ломать то, что работает», а в военном деле — принцип «не трогать исправный механизм без необходимости».
¶Содержание принципа
Принцип основан на нескольких допущениях:
- Стоимость вмешательства. Любая модификация требует ресурсов — времени, денег, квалификации исполнителя.
- Риск регрессии. Изменение в работающей системе может нарушить ранее не обнаруженные зависимости и привести к отказу.
- Неопределённость будущего. Текущее поведение системы может быть не полностью понято, поэтому вмешательство строится на неполных данных.
Принцип не запрещает изменения как таковые, а требует, чтобы они были обоснованы: устранение известного дефекта, адаптация к новым условиям, повышение эффективности. Разница между «чинить» и «модернизировать» — в наличии диагностированной проблемы.
¶Применение в программировании
В разработке программного обеспечения принцип формулируется как «if it ain't broke, don't fix it» и является частью культуры консервативного рефакторинга. Он противостоит практике «переписывания с нуля» (rewrite from scratch), когда разработчики заменяют работающий код без явной технической необходимости. Исторические примеры — неудачные переписывания, приводящие к потере функциональности и регрессиям.
Принцип дополняется правилом «не трогай работающий код» (don't touch working code) и практикой «если тесты проходят — не меняй». В контексте legacy-систем он оправдан тем, что стоимость рефакторинга старого кода часто превышает выгоду.
¶Применение в инженерии и техническом обслуживании
В промышленности принцип проявляется в политике технического обслуживания: плановое вмешательство в исправное оборудование проводится только по регламенту, а не по желанию оператора. Контролируемая замена компонентов (preventive maintenance) отличается от произвольной модернизации.
В авиации и космической отрасли принцип действует в строгой форме: любое изменение конструкции требует сертификации и испытаний, что делает вмешательство в исправный аппарат экономически и технически обоснованным только при наличии конкретной задачи.
¶Критика
Принцип подвергается критике в нескольких аспектах:
- Консервация устаревших решений. Слепое следование принципу может закрепить технический долг и несовместимые системы.
- Пропущенные возможности. Отказ от модернизации лишает возможности повысить производительность, безопасность или удобство.
- Контекстная зависимость. В быстро меняющихся условиях (IT, финтех) стоимость «работающего» решения может расти быстрее, чем стоимость его замены.
Практическая компромиссная формулировка: «если не сломано — не чини, но если чинишь — чини правильно».
¶См. также
- Принцип минимального вмешательства
- Технический долг
- Рефакторинг
¶Источники
- Oxford English Dictionary, 1977
- Hunt A., Thomas D. The Pragmatic Programmer, 1999
- Brooks F. The Mythical Man-Month, 1975
