При создании любой более-менее серьезной программы рано или поздно наступает некий критический момент, когда проект выходит из под полного контроля и начинает жить своей жизнью. Это событие подготавливается незаметно, с постепенным нарастанием сложности функционала, введением в код различных трюков для обхода ограничений операционной системы, введением контрольных условий для предотвращения ошибок выполнения, установкой систем защиты от взлома и тысячей других вещей.
Код растет, количество модулей исчисляется десятками, количество строк — десятками тысяч. Вы уже не помните всех свойств программы, которые реализовали.
И вот, в один прекрасный день, вы смотрите на свою программу, которая отняла столько умственных усилий, бессонных ночей, нервов, денег, и понимаете, что она стала взрослой, и вы не можете просто взять и заставить ее сделать то, что хотите. Отныне можно только просить, уговаривать и с надеждой ждать положительного ответа. Теперь не только вы ведете разработку, но и разработка ведет вас.
Конечно, еще ее можно просто убить, стереть с диска или задвинуть в архив надолго, чтобы она умерла от голода, ведь ей нужна постоянная подпитка вашими идеями, мыслями и чувствами. Но кто же станет намеренно убивать то, чему передана частица себя?