Долговечность временных решений Клаус Маркардт

Почему мы создаем временные решения?

Обычно виной тому срочная задача. Бывает, что это внутренняя задача разработчиков — создать недостающий инструмент для цепи разработки. Бывает, что задача внешняя, ориентированная на пользователей, например обходной путь для восполнения отсутствующей функциональности.

В большинстве систем и команд можно найти модуль, который каким-то образом выделяется в системе. Считается, что это черновой вариант, и его нужно будет впоследствии переделать, потому что он не соответствует стандартам и правилам, по которым живет остальной код. Вам обязательно придется услышать жалобы разработчиков по этому поводу. Причины появления такого кода бывают разными, но основная причина появления на свет промежуточных решений — это их полезность.

Однако промежуточные решения обладают инертностью (или моментом инерции, если вам так больше нравится). Временное решение уже есть — крайне полезное и всеми принятое, — так что нет острой необходимости создавать что-то взамен. Решая, какие действия более других повысят ценность продукта, заинтересованный участник проекта найдет множество задач, приоритет которых будет выше, чем доведение до ума временного решения. Почему? Потому что временное решение уже есть, оно работает, и оно принято. Единственный его видимый недостаток — оно не соответствует выбранным стандартам и правилам, но, за исключением некоторых нишевых продуктов, это слабый аргумент в пользу изменений.

Вот так и остается временное решение. Навсегда.

А если временное решение станет источником проблем, маловероятно, что при починке будет также поставлена задача привести его в соответствие с принятыми стандартами качества. Что же делать? Быстрое промежуточное изменение временного решения часто устраняет проблему и всех устраивает. У него те же достоинства, что и у первоначального временного решения, просто оно… новее.

Представляет ли это проблему?

Все зависит от проекта и вашего личного интереса в поддержании стандарта качества готового кода. Если в системе слишком много временных решений, ее энтропия или внутренняя сложность возрастает, а удобство сопровождения снижается. Однако в первую очередь, возможно, следует задавать иной вопрос. Не забывайте, что мы обсуждаем решение. Возможно, вы и сами не рады такому решению — как вряд ли рад ему кто-то другой, — но стимул перерабатывать решение слаб.

Так что же можно сделать, если это для нас проблема?

1. Прежде всего, избегать временных решений.

2. Изменить факторы, влияющие на решение руководителя проекта.

3. Оставить все, как есть.

Рассмотрим эти варианты более подробно:

1. Во многих случаях отказ от временного решения неприемлем. Есть реальная задача, которую необходимо решить, и оказывается, что стандарты слишком жесткие для этого. Можно попробовать изменить стандарты — достойное, хотя и трудоемкое свершение, — но на это уйдет время, а проблему нужно решать прямо сейчас.

2. Эти факторы коренятся в культуре проекта, а она противится насильственным изменениям. Успеха можно достичь лишь в очень маленьких проектах — особенно когда работаешь один — и если удастся навести порядок, не спрашивая разрешения. Успех возможен и тогда, когда в коде проекта такой беспорядок, что это заметно тормозит работу, и все согласны, что нужно потратить некоторое время на наведение порядка.

3. Если предыдущий вариант не действует, положение дел сохраняется автоматически.

Среди множества созданных вами решений некоторые будут временными и в большинстве своем полезными. Лучший способ избавиться от временных решений — это сделать их избыточными, предложив более элегантные и полезные решения. И да пребудет с вами душевный покой, чтобы принять то, что вы не можете изменить, и силы изменить то, что можете, и мудрость, чтобы отличить одно от другого.

Загрузка...