Ясность
Прежде всего, я хочу рассказать историю про стрижку быка (в английском варианте Yak Shaving).
Вам надо подстричь быка, но машинка для стрижки есть только у вашего дяди, который живет в соседней деревне. Пешком туда идти далеко, но можно доехать на велосипеде. К несчастью, у вашего велосипеда не накачены колесе, но у вашего соседа есть насос. Вы идете к соседу, он соглашается помочь вам, если вы поможете ему притащить колонку в гараж, где репетирует рок-группа его друзей. Вы соглашаетесь и тащите колонку в гараж. Там ребята уже играют отличные песни, и сосед просит вас немного подождать. Единственное место, где можно посидеть — это диван, где сидит сестра барабанщика Маша. Он соглашается пустить вас посидеть, если вы раскурите с ней косяк. Вы садитесь, делаете пару затяжек. Ребята играют очень здорово, что вы откидываетесь на спинку дивана и говорите: «А давайте закажем пиццу».
Обычная работа программиста часто похожа на стрижку быка. Особенности человеческого внимания таковы, что после определенного уровня вложенности контекста, первоначальная цель зачастую теряется. Вам надо добавить какую-то небольшую штуку на сайте, вы решаете добавить еще один параметр в какой-то метод, потом правите все вызовы этого метода, замечаете, что там что-то не так, начинаете разбираться, понимаете, что надо переписать и этот кусок, а потом еще и еще, и вот вы уже разглядываете в gdb nginx. Рабочий день убит, ничего не сделано, начальник недоволен и, вообще, не ясно, какую пользу вы принесли человечеству.
Не стоит попадаться в такие ловушки сознания. Я, например, постоянно спрашиваю себя: «Что я сейчас делаю? Зачем я это делаю? Стоит ли необходимое изменение таких усилий или проще поискать другой способ?». Если задача не решаются в лоб, стоит объяснить ситуацию начальнику, чтобы он оценил уровень и цену проблемы. Умный начальник может ответить: «Потрать на это два часа, если ничего не выйдет — сделай хак», например, если это не критичное место в проекте.
Стоит вносить ясность в свое понимание происходящего, стоит постоянно обладать четкой картинкой ситуации в проекте. В каждый момент времени надо быть готовым ответить себе, чем вы сейчас занимаетесь, почему вы это делаете и стоит ли это потраченных усилий, причем делать это честно.
Если в любой момент времени каждый участник команды не может ответить на такие вопросы — это верный признак нездоровой ситуации, верный признак того, что вместо развития продукта, команда стрижет быка.