суббота, 24 марта 2012 г.

Как поймать «поток», и как сделать так, чтобы он не сорвался

Вступление

Я, как руководитель проектов, всё больше и больше замечаю, что эффективность работы команды (и каждого программиста в частности) – это ключевой фактор, определяющий успех проекта. При эффективной работе даже самые тяжёлые проекты со сжатыми сроками удаётся завершить успешно, а неэффективная способна «завалить» простейшие проекты с минимумом рисков. Поэтому, я хотел бы поделиться своими мыслями об одном из ключевых понятий – понятии «работы потоком».

Первый раз я увидел этот термин на страницах великолепной книги Тома Демарко и Тимоти Листера «Человеческий фактор. Успешные проекты и команды», известной также как Peopleware. Через некоторое время в России вышла книга  «Поток - психология оптимального переживания» автора и основателя этой теории - Михая Чиксентмихайи, которую тоже настоятельно рекомендую.

Итак, сначала теория.

Теория

Наверное, многим знакомо ощущение, что время вокруг остановилось, а вы целиком отдаётесь работе и готовы свернуть горы для достижения результата. При этом время летит совершенно незаметно («А что, уже пора на обед? Я же только что пришёл!»), а вы испытываете чувство предельной концентрации и лёгкой эйфории.

Такое состояние сознания при работе психологи называют «работой потоком», а само состояние – «поток».

Очевидно, что любая задача выполняется во много раз быстрее и аккуратнее, если человек находится в «потоке». Более того, есть несколько видов работы, которая просто невозможна без вхождения в поток. Например, описание технической спецификации проекта или написание статьи (да, я сейчас тоже нахожусь в потоке). Да и обычное создание программного кода невозможно без полного погружения и «работы потоком».

Так в чём же проблема? Приходим на работу, входим в «поток», делаем перерыв на обед, опять возвращаемся в «поток», радостно идём домой с осознанием свёрнутых гор и дня, прожитого не зря. Но проблема есть. И, на мой взгляд, она является наиболее серьёзной проблемой производительности как для исполнителей, так и для их руководителей.

Дело в том, что вхождение в поток требует значительного времени. У каждого оно своё и зависит от многих факторов (усталость, личные проблемы, интерес к работе и т.д.) В среднем, для того, чтобы войти в поток человеку надо около 15 минут. Но самое неприятное, что состояние потока очень легко нарушить.

Предположим, Ася – программист. В данный момент она реализует сложную функциональность по сбору статистики с сервера или, скажем, реализует сложный поисковый интерфейс для iPhone. Теперь представьте, что Вася – её ПМ срочно нуждается в уточнении оценке по задаче, которую ему прислал заказчик. Очевидно, что Вася идёт к Асе и говорит: «слушай, мне тут надо узнать, сколько у тебя займёт реализация отображения формы логина перед покупкой товаров». Очевидно, для того, чтобы ответить на этот вопрос, Асе приходится останавливаться и сосредотачиваться на том, как происходит логин, осознать примерную архитектуру и понять, чего, вообще, от неё хотят. Поток прерван, практически мгновенно. Вася получает ответ, и уходит удовлетворённый. А Ася тратит ещё 15 минут на то, чтобы вернуться к полноценной и продуктивной работе.

Если отвлечение (я бы охарактеризовал это фразой «вырвать из потока») происходит один-два раза в день, с этим можно мириться, хотя даже это – полчаса потерянной работы. Но представьте себе, что Васе нужна какая-то информация каждые полчаса. И он, не стесняясь (ведь эта информация крайне важна для проекта!), постоянно что-то спрашивает у несчастной Аси, которая только что сосредоточилась на своём не менее несчастном сборе статистики. Получается, что ровно 4 часа в день Ася тратит на малопродуктивную «концентрацию» и вхождение в поток, а из остальных четырёх часов как минимум час отвечает на глупые вопросы, никак не связанные с её текущей задачей.

В результате все недовольны. Вася негодует: функция сбора статистики, которая была самой Асей оценена в три дня работы, сделана за полторы недели, да ещё и работает как попало: теряет данные и, временами, вылетает с ошибками. Очевидно, что виноватой в этой ситуации будет опять-таки несчастная Ася: она не вписалась в свою же оценку, она допустила много ошибок и т.д.

Да, как честный ПМ Вася понимает, что он отвлекал Асю. Но ведь в сумме это заняло не больше половины дня, а отставание Аси – аж целая неделя. Вывод очевиден: Ася плохо работает.

Теперь посмотрим на Асю: ей не давали спокойно работать, непрерывно отвлекали вопросами, не имеющими никакого отношения к делу, а потом ещё и лишают премии за то, что из-за неё задержался выпуск важного продукта, обещанного аж самому Джорджу Вашингтону.

Прибавим к этому: телефон, не в меру болтливых коллег (особенно в офисах open space), общие собрания и т.п. Получается, для того, чтобы находиться в состоянии потока (читай, эффективно работать), человеку необходимо затрачивать большое количество усилий и предпринимать, порой, весьма асоциальные действия (вплоть до вежливой просьбы «всем заткнуться»).

Кстати, характерным признаком того, что у вас проблемы с потоком – это повышенная эффективность работы в нерабочие часы – до и после рабочего дня. Фразы «после семи вечера я за час делаю столько же, сколько делаю за день, видимо я – сова» и «с восьми до девяти, пока мозг свободен я успеваю очень много» говорят не о том, какая вы «птица» и не о том, что вы устаёте за день (хотя это, конечно, тоже вероятно). Скорее всего, они говорят о том, что вы не можете войти в состояние потока из-за того, что вас постоянно отвлекают.

Практика

Что же делать? Демарко и Листер, например, предлагают выставлять опознавательные знаки «не беспокоить». Это могут быть таблички, красные платки – всё, что даст понять окружающим, что вы находитесь «в потоке» и очень не хотите из него выходить. От «болтливых» коллег помогают также наушники – это уже моё личное наблюдение. Они, как показывает практика, сильно увеличивают шансы избежать участия в ненужных беседах.

Очевидно, что одна из важнейших задач грамотного руководителя – не выводить людей из состояния потока. Руководителю необходимо трезво оценивать, что каждое отвлечение сотрудника будет стоить его проекту как минимум пятнадцать минут и, соответственно, планировать действия.

Но вот беда – значительная часть работы руководителя как раз и заключается в том, чтобы уточнять детали, получать оценки трудозатрат, обсуждать нюансы и т.д. В общем, заниматься именно тем, что отвлекает сотрудников. И наиболее страшно то, что, зачастую, Вася полностью уверен: Ася обязательно должна прямо сейчас ответить на его вопрос, иначе проект будет провален.

Наиболее эффективным для руководителя представляется следующая стратегия: копить задачи сотрудника и отслеживать, когда он выходит из состояния потока. Это может быть переключение на другую задачу после завершения предыдущей, перерыв на обед или что-то ещё. Именно в это время будет наиболее эффективным решить вопросы, которые требуют участия сотрудника. Я использую формулу — «подойдёшь, как немного освободишься / допишешь до точки». Находясь в потоке, человек редко думает о чём-то кроме своей текущей задачи. Поэтому, если сотрудник считает себя «немного освободившимся», значит он временно вышел из потока, и его смело можно мучить оценками и обсуждением аспектов реализации будущей функциональности.

Был случай, когда один мой сотрудник, назовём его Семён, постоянно не успевал с задачами, которые были достаточно срочными. Я не стал делать для себя вывод о непрофессионализме данного программиста (я стараюсь никогда не делать таких выводов, даже если они очевидны, а сделав, сразу прощаться с человеком). Под каким-то предлогом, я зашёл к нему в кабинет и некоторое время там находился. Признаюсь честно, я отвлёк другого сотрудника и долго с ним разговаривал, но это была осознанная и вынужденная жертва. Оказалось, что за те двадцать минут, которые я провёл в их кабинете, к нему три раза обратились за помощью в настройке сервера (Семён – отличный специалист по Linux) и два раза спросили про реализацию чего-то на PHP. Очевидно, что каждый раз Семён давал исчерпывающие ответы благодарным коллегам и возвращался к своей работе, как только они уходили. Да, каждый ответ отнял примерно две минуты. Но в состояние потока Семён так и не вошёл.

После этого я собственноручно распечатал табличку «Семёна не отвлекать!» с подписью и картинкой грозящего кулака, повесив её перед компьютером Семёна так, чтобы остальные её видели (а он – нет, чтобы не отвлекался). Стоит ли говорить, что задача, над которой он безуспешно бился два дня, была выполнена в ближайшие три часа.

Кстати, всё вышесказанное верно и для руководителей. Я непрерывно нахожусь в состоянии, при котором каждые 10 минут кто-то что-то у меня спрашивает. Поэтому, чтобы работать эффективно, приходится иногда «выключаться из мира» – наушники, статус «не беспокоить», выключенный почтовый клиент и ICQ. Одно время у меня на столе лежала табличка «Меня здесь нет. С клоном не разговаривать – он всё равно не умеет». Как ни странно – помогает очень долго не выходить из потока.

Конечно, есть ещё методы «кнута» – не одобрять перемещение по офису в рабочее время, запрещать разговоры на рабочем месте на отвлечённые темы и т.д. Но мне это кажется смешным. Программист (а именно с ними я работаю) – это творческая профессия и для эффективной работы ему нужна свобода (разумеется, «эффективная свобода», а не анархия и беспорядок). Поэтому я предпочитаю, увеличивать эффективность работы программистов без ограничения их свободы. Просто делайте так, чтобы большинство времени они находились в потоке. Да, это сложно, но это стоит того!

P.S. В этой статье я ничего не упомянул про статистику: измерение «потоко-часов» и «фактор C» – отношение числа потоко-часов к потраченному времени, которые собственно, помогают понять, сколько вы работаете на самом деле. Впрочем, это весьма хорошо описано в Peopleware. Если вы, вдруг, не читали этой книги, вы просто обязаны её прочесть.

5 комментариев:

  1. ага, а есть другая ситуация - вот не беспокоишь ты этого бедного программера, не беспокоишь, на 3 день приходишь, а он тебе и говорит, а что то я тут замотался на задачи других проектов отвлекали, поэтому по твоему сделал совсем немного. а вот когда сидишь у него над душой, так разз 2 часа и готово

    ОтветитьУдалить
    Ответы
    1. Ну тут тоже вопрос разумности :). Никто не мешает утром проверять актуальность задач, а вечером - результаты работы. Главное - не делать это часто.

      А вообще, с ситуацией, при которой программиста, работающего на вашем проекте, могут отвлечь без вашего ведома надо бороться быстро и безжалостно. Это крайне порочная практика.

      Понятно, что он иногда может понадобиться на других проектах, но такие запросы обязательно должны проходить через руководителя.

      Удалить
  2. Я бы расширил тему так:
    В свое время академик Вернадский ввел такое понятие как краткосрочное планирование, т.е с утра ставится/определяется проблема которую должен решить каждый Вася Пупкин за день, а вечером Вася отчитывается как решил задачку, особое внимание на провалы, не забывать и про похвалу и наметки плана на завтра. В конце недели (уже используя наработки IBM) устраивается публичная разборка работы той или иной группы за неделю. При этом обязательно задействуется "треугольник": разработчик, соразработчик, оппонент (Такие треугольники определяются руководителем, сотрудники м.б. из разных групп). Причем особое внимание уделяется на то, как написан модуль/алгоритм и все +- из уст каждого из троицы. Эта модель позволяет подключать такие рычаги, как самолюбие и стремление быть лучшим а руководителю получать на-гора хороший программный продукт за короткие сроки. И конечно при этом мозговом штурме особенно помогает «возмутитель спокойствия» - провокатор, подкидывающий как проблему , так и возможные варианты решения, да и просто сомневающийся в правильности принятого решения. Причем провокатором м.б. не только руководитель проекта. Это позволяет держать в потоке не только конкретного человека, но и группа в целом настраивается на одну волну.
    Как то так.

    ОтветитьУдалить
    Ответы
    1. Можно, я немного переформулирую? Мне кажется, то, что Вы предлагаете - это daily stand-up и ретроспективы. Поправьте, если я ошибаюсь. Хорошие вещи, полезные.

      Единственное, что мне немного не понятно - как это соотносится с "потоком".

      Удалить
  3. Мне кажется, что необходима настройка индивида на состояние "поток".
    Для вхождения в состояние "потока" требуется предварительная и последующая мотивация индивида, да и группы в целом, вот об этом я и завел речь, как мотивацию поставить на поток. И какова роль руководителя в этом процессе, что не всегда важно оберегать разработчика от решения не насущной (в данный момент) для него проблемы, иногда процесс переключения на кажущуюся совсем чуждую проблему (отвлечение) позволяет разработчику по-новому взглянуть на его собственную проблему и найти более элегантное решение. Поэтому в моей команде каждый разработчик состоит ежедневно в трех ипостасях перечисленных выше. Поэтому очень важно производить ежедневное подведение итогов в конце дня. Ибо это позволяет загрузить мозги разработчика на осмысление "домашнего задания".
    Это позволяет каждому члену группы выработать в себе ассертивное умение жить в коллективе. Но это уже другая тема - Микроклимат коллектива.

    ОтветитьУдалить