Thursday, July 17, 2008

О пользе организации

Пару дней назад я поделился мыслями о том, как можно обойти баны на определенные сайты. Но на самом деле, для меня эта тема интересна только с технической точки зрения. В целом, я считаю, что все социальные сети и развлекательные сайты просто-напросто воруют время. Поэтому сегодня я хочу рассказать о том, . Часто бывает так, что пока программист работает над свим кусочком задания (таском), его попеременно отвлекают коллеги и начальство. Коллеги интересуются, когда будет готова та или иная часть работы, просят сделать еще каки-нибудь дополнительные «фишки», а начальство раздает таски и меняет приоритеты. Как правило, смена приоритета — это «бросай всё, потом доделаешь, делай вот то и то». Когда тасков два-три, то можно еще как-то это удерживать в голове. Когда же появляются отложенные задания а-ля «сделай, как освободишься» или «как M. доделает, так вместе и беритесь», или же «послезавтра, не забудь, нужно то и то сделать», то скорость работы программиста снижается, потому что мозг включает тормоза и пытается проконтролировать, не забыто ли чего. Вместе с этим растет тревожность, мысли путаются и тут кто-нибудь подкидывает еще одну задачку. Настпает переломный момент, когда программист выпадает из цикла работы и идет пить кофе, чтобы хоть как-то справится со стрессом. А ведь на самом деле управлять всей этой ситуацией нужно еще до того, как она превратилась в головную боль. Любое, даже самое крохотное заданий на одну минуту нужно записывать. Записывать можно два-три слова, главное, чтобы программисту было понятно, что эти слова значат в контексте проекта. Обязательно — приоритет. Ничего страшного, если в очереди будут три задания «очень срочно» и 10 «срочно». Это говорит лишь о том, что значимость некоторых задач была оценена программистом неверно. Удобно также записать рассчетное время, за которое, по ощущениям прогарммиста, он сможет сделать работу целиком. Это важный момент. Я считаю это время как время на работу + время на синхронизацию кода с репозиторием (на больших проектах это может занимать от 5 до 30 минут), но можно считать и по-другому. Может показаться, что в условиях ограниченности времени на задачу («как можно скорее, нам уже через 5 минут отдавать надо») вести очередь заданий, а уж тем более рассчитывть приблизительное время на каждое задание — излишний труд. Это не так. Во-первых, рассчеты дают самому программисту реальные данные о том, сколько займет подобная его работа в будущем. А во-вторых, засекая время на выполнения задачи и сравнивая его с рассчетным можно добиться очень большой точности предсказания объема работы (по времени) в будущем, что будет только плюсом любом профессионалу. Подобные списки текущих заданий по проекту разгружают память и помогают выдерживать любые стрессовые ситуации без дозаправки кофеином. Ведь теперь все под контролем, всегда можно с большой точностью ответить коллегам и начальству сколько вам осталось времени работать над текущей задачей и сколько еще задач в очереди. По моему личному наблюдению, списки дают преимущество программистам, которые их используют, в виде повышения скорости работы. Взаимосвязанные задачи всегда видны, поэтому легко планируется последовательность действий буквально за один взгляд. Большие задачи лучше всего описать несколькими маленькими, которые представляю собой определенные фиксированные наборы действий. Например, «обновить базу данных», «описать изменения в readme» и т.д. Эта уловка чисто психологическая, потому как висящие в списке задачи с неясной формулировкой или же включающие в себя множество шагов отбивают всякую охоту за них браться. Если не лениться и описывать любые задания, пришедшие извне, или же шаги, которые программист планируют совершить, то элемент стресса в работе устраняется полностью. Помимо этого, списки помогают стать более дисциплинированным и снижают реакцию на раздражители типа «аська» и «телефон», пропадает желание заняться чем-то другим, вместо работы. Ведь задания маленькие, сделать их ничего не стоит. И такими вот маленькими порциями можно скушать любого слона. Абсолютно любого. Я в своей практике пользуюсь плагином Mylyn для среды Eclipse, в котором завел разделы «выполненное», «выполненное сегодня» и несколько разделов по проектам, в которых участвую. Дополнительно я завел разделы с именами тех коллег, от чьих задач будет зависеть или зависит моя работа. В эти разделы я пишу задания, о состоянии которых переодически нужно узнавать, что помогает не потерять из виду людей, отвечающие за разные части программы. Текущие задания и шаги складываются в папки для проектов. Выполненные попадают в раздел «выполненное сегодня», откуда каждый вечер переносятся в раздел «выполненное». Папка «выполненное сегодня» нужна, чтобы оценить, как много заданий получается сделать за один день и сколько чистого рабочего времени уходит на каждую задачу. После активации задачи Mylyn автоматически начинает отсчитывать время, которое ушло на её выполнение. Если вы не пользуетесь Mylyn, то обычный листок бумаги и часы легко заменят его. Изменения в работе, да и в самочувствии, будут заметны в первый же день. Главное правило — задачи должны быть простыми и выполнятся не больше, чем за 2-3 часа. Если по вашим примеркам задание занимает больше, значит его нужно разбить на несколько частей помельче. Надеюсь, этот несложный трюк с организацией поможет и вам.

No comments: