Просмотров: 27038

Почему программисты любят программировать по ночам?


Вообще, полный заголовок этой статьи должен был бы звучать более длинно: «Почему программисты любят работать ночью, и почему делать этого не стоит?».

Первая часть сегодняшней статьи рассматривает начальную часть этого утверждения — почему программисты всё-таки так любят работать ночью? Почему именно ночью наша эффективность порой зашкаливает, а творческая натура открывает в себе второе дыхание? Для понимания этого эффекта мы исследуем популярный около-айтишный феномен «пик Балмера» (Ballmer’s peak) на примере алкоголя.

Забегая немного вперед: во второй части, также опираясь на научные исследования, я покажу, почему работа в таком «ночном режиме» не только вредна и опасна, но и разрушает наш творческий потенциал в долгосрочном плане, когда тактические кратковременные преимущества мы размениваем на весьма серьёзные стратегические потери в будущем.

пик Балмера программирование эффективность график диаграмма прикол GDT программиcты алкоголь ночь усталость работоспособность

Почему программисты любят работать ночью?

Вообще, для этого есть несколько версий-объяснений, я подробно остановлюсь, как мне кажется, на самой главной.

Эту особенность выдающегося вечернего/ночного программирования часто ассоциируют с феноменом, называемым как пик Балмера («Ballmer’s peak», этот же термин известен как «The Ballmer Curve» или «The Ballmer Effect»). Пик Балмера стал особенно популярен в связи с известной карикатурой от проекта XKCD, которая почему-то считается большинством программистов скорее анекдотом, чем чем-то серьёзным.

Здесь герой этого популярного комикса Ceuball саркастично поясняет, что глючная Windows ME — это яркий пример применения Microsoft принципа Ballmer’s peak.

пик Балмера программирование эффективность график диаграмма прикол GDT программиcты алкоголь ночь усталость работоспособность

На самом деле, кроме известных туманных предположений Стива Балмера о собственном организме, который, по его мнению, ведет себя под определенной дозой алкоголя невероятно эффективно, есть несколько научных экспериментов, которые полностью подтверждают этот важный для всех тружеников умственного труда эффект. Сам Стив отсылает народ к закону Yerkes-Dodson, который устанавливает жесткую корреляцию между возбуждением ЦНС и производительностью.

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

пик Балмера программирование эффективность график диаграмма прикол GDT программиcты алкоголь ночь усталость работоспособность

В данном эксперименте исследователи набрали команду из добровольцев-программистов, которые программировали на любимых ими языках (это ещё не сам эксперимент). Все языки были классифицированы по шкале от наиболее простых и стандартных (Java), до наиболее странных и глубокомысленных, где апофеозом сложности был признан язык Malbolge.

Затем всем участникам этого коллективного сеанса программирования стали предлагать дозу алкоголя, которая плавно повышалась, при этом все параметры кодирования программ тщательно фиксировались (трезвыми) экспертами. Цель всего действа — определить особенности производительности по мере написания программы контролируемого повышения состояния опьянения (результаты на графике выше).

А пока ученые обрабатывали свои цифры, курили и думали, думали и курили, самим программистам этот процесс так понравился, что впоследствии их отдельные группы стали собираться вместе, чтобы повторить этот опыт. А потом они снова собрались и повторили, и ещё раз собрались и хорошо повторили... это называется — белочка The Ballmer peak-a-thon. Для проведения этого специфического хакатона программеры собираются во многих городах Америки ежемесячно на выходные.

Ниже прикрепляю видео для лучшего прочувствования атмосферы такого рода пьянок серьёзных научных мероприятий по определению своих особенностей эффективности:


Для большего удобства подобных вечеринок выпускают специальные программистско-алкогольные наборы «Ballmer peak brew for programmers» (на этом видео можно увидеть процесс «Ballmer Peak Brew Unboxing»).

Ребята, я знаю, о чём вы сейчас грустно думаете: дело в том, что они «занимаются наукой» (их лозунг: «Drink (and hack) for Science!)», а мы — «просто пишем программы», именно поэтому одним «можно», другим — нет. Категорически.

пик Балмера программирование эффективность график диаграмма прикол GDT программиcты алкоголь ночь усталость работоспособность

Если же попытаться говорить серьёзно и взглянуть на итоговый график выше, то видно, что есть определенные диапазоны доз алкоголя, когда наблюдается резкий скачек личной эффективности, при этом дозы для разных языков программирования незначительно колеблются. Эти таинственные взлёты производительности вверх и есть именно то, что называется в стенах Microsoft’a как пики Балмера.

Почему это явление называется именно так? Пока ученые готовили аппаратуру и обкатывали свои смелые теории, руководители столь высокого уровня как Стив Балмер, опережая своё время, самостоятельно выявили подобные закономерности с помощью своего организма. Именно Стив первый и заявил об этой странной зависимости между производительностью программиста и степенью его опьянения. Вообще, судя по видео с его вступлениями (привожу типичный образчик ниже), сдаётся мне, что весь его кабинет заставлен ящиками с виски.

Остаётся только позавидовать его подчинённым, шеф которых исповедует такие правильные и научно выверенные теории, равно как и всей Microsoft в целом, выпускающей такие офигенные инновационные продукты (нет, я не имею в виду Windows 8).

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

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

пик Балмера программирование эффективность график диаграмма прикол GDT программиcты алкоголь ночь усталость работоспособность

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

Ограничение потенциала как позитивный фактор

Парадокс — что же делает алкоголь?

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

Да, в некоторых случаях подобное сужение спектра восприятия и торможение ЦНС является негативным и даже опасным фактором, например, при вождении машины, но зато это отлично подходит для творческих задач! С одной стороны, это увеличивает концентрацию, а с другой — снимает некоторые внутренние зажимы, понижая порог тормозящей творческий процесс самокритичности.

Вот как просто пишет один из врачей об этом сложном поведении мозга:

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

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

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

Этот замечательный эффект «здорового пофигизма» хорошо известен у трейдеров, многие из которых перед торговой сессией любят втихаря пропустить пару стаканчиков виски «для более тонкой настройки»:

пик Балмера программирование эффективность график диаграмма прикол GDT программиcты алкоголь ночь усталость работоспособность

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

(Говоря более простым языком — за это вас уволят и выставят из компании вон).

пик Балмера программирование эффективность график диаграмма прикол GDT программиcты алкоголь ночь усталость работоспособность

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

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

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

пик Балмера программирование эффективность график диаграмма прикол GDT программиcты алкоголь ночь усталость работоспособность

При этом важная техническая деталь — строго говоря, двигаясь от «утреннего живчика» до состояния «полного кирпича», мы всегда минуем два пика, которые расположены очень близко друг к другу (из-за чего их часто объединяют): это пик производительности (пик Балмера) и следующий за ним вплотную — пик креативности.

Дальше — резкий обвал и «бесконечный хвост Балмера».

пик Балмера программирование эффективность график диаграмма прикол GDT программиcты алкоголь ночь усталость работоспособность

Креативность в некоторой степени стопорит последовательное логическое (рациональное) мышление, зато взамен предоставляет способность нахождения нестандартных и ярких решений.

Night Time is the Right Time

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

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

Новомодное понятие потока (ИМХО, та ещё муть), утверждает, что формула входа в это трансовое состояние для обывателя имеет примерно такой вид:

if (cur_state = MaxPotential)
StartTheFlow();
else
StartProcrastinate::ReadBlogeratorRu();


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

do {
bottle_of_beer++;
while (cur_state != MinPotential) {
StartProcrastinate::ReadBlogeratorRu();
}
StartTheFlow();


Трансы раньше называли «творческой дрёмой», поэтому, говоря серьёзно о пиках Балмера, многие имеют в виду прежде всего именно ночное программирование. Да, конечно, это не решение вышеописанной проблемы отсутствия самоконтроля, программисты сказали бы, что это всего лишь work-around, но то, что это эта уловка при определенных условиях выводит нашу эффективность на ранее неведомые высоты, это факт.

пик Балмера программирование эффективность график диаграмма прикол GDT программиcты алкоголь ночь усталость работоспособность

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

В противном случае (смотри Ресурсное проклятие) любая форма тупого внешнего принуждения чаще всего оказывается более эффективным фактором управления.

пик Балмера программирование эффективность график диаграмма прикол GDT программиcты алкоголь ночь усталость работоспособность

Это и есть очищенная от излишнего научного пафоса суть явления «управляемой деградации внимания и психоактивности» — пика Балмера.

Достигаем ли мы этого оптимального состояния благодаря алкоголю, с помощью спорта или вдохновения, либо с помощью практики затяжного дневного программирования, переходящего в пикирующую «вечерне-ночную взрывную фазу» — не суть важно.

Мелатониновая магия

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

Пока же позвольте кратко резюмировать всё написанное, для чего я приведу выборочную цитату из известной статьи Свизека Теллера как раз на эту тему: «Why programmers work at night»:

Если спросить первого попавшегося программиста, когда он наиболее продуктивен, — скорее всего, он назовёт ночь. Можно подумать, что цель всего этого — избавиться от отвлекающих факторов. Но в таком случае можно было бы просто закрыть дверь... Что же такого особенного в ночи? Я думаю, что всё сводится к трём вещам: расписанию творца, сонному мозгу, и яркому экрану компьютера.

Например, моя продуктивность минимальна после чрезмерного количества чая или не вовремя выпитого энергетического напитка: они делают меня гиперактивным, и я то проверяю твиттер, то читаю Hacker News, — в общем, просто прыгаю туда-сюда.

Казалось бы, я должен работать лучше — столько энергии, такой разогнанный мозг. Однако, вместо этого я сам путаюсь у себя в ногах, потому что не могу сконцентрироваться больше чем на две секунды. С другой стороны, когда я немного уставший, я просто плюхаюсь за стол и пишу код. Со слегка утомлённой головой я могу писать код часами, даже не думая заглянуть в Твиттер или Фейсбук. Интернет как будто перестаёт существовать.

Когда мозг не работает на полную мощность, он ищет какое-нибудь дополнительное занятие. Усталость притупляет разум настолько, что ему становится достаточно и одной текущей задачи.

Свизек так разкочегарил эту тему, что за пару ночей написал в результате целую книгу «Why programmers work at night», которую, конечно же, будучи тру-программистом, сразу же залил в Github.

Заключение: «горе от ума»

Сегодня мы рассмотрели пик Балмера и некоторые парадоксальные вещи, связанные с нашей личной производительностью, которые утверждают, что быть хорошо отдохнувшим и выспавшимся, не всегда автоматически значит «хорошо и отлично поработать».

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

пик Балмера программирование эффективность график диаграмма прикол GDT программиcты алкоголь ночь усталость работоспособность

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

Далее в окончании к этой части, я постараюсь осветить моменты, которых так и не коснулся Свизек в своей книге, а именно — «почему программистам всё-таки не стоит программировать ночью, несмотря на то, что это работает?».

~

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

dev.by, 2013

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru pikabu.ru blogger.com liveinternet.ru livejournal.ru google.com bobrdobr.ru yandex.ru del.icio.us

Подписка на обновления блога → через RSS, на e-mail, через Twitter
Теги: , , , , , , , , ,
Эта запись опубликована: Суббота, 23 февраля 2013 в рубрике МненияОбзоры.

4 комментария

Следите за комментариями по RSS
  1. автор, я задалбался искать в какой из сотни вкладок у меня был звук. будь ты проклят :)

    за материал, как всегда, большое спасибо Ж)

  2. ПРОГРАММИСТ

    автор не программист 100%

    я всегда работаю ночью по 2 причинам: 1.ничто не отвлекает и не мешает 2.днем люблю поспать

  3. >> Здесь герой этого популярного комикса Ceuball саркастично поясняет, что глючная Windows ME — это яркий пример применения Microsoft принципа Ballmer’s peak.

    Автор не знает английского? Так надо было почитать русский перевод http://xkcd.ru/323/

    Суть: на картинке указано, что глючная Windows ME — это яркий пример НЕПРАВИЛЬНОГО применения Microsoft принципа Ballmer’s peak, т.к. программистам не поддерживали соответствующее количество алкоголя в крови, а просто неконтролируемо выдали годовой запас виски.

    Собственно, перевод.

    — Так называемый пик Балмера был открыт компанией Microsoft в конце 80-х. Неизвестно почему, но при концентрациях алкоголя в крови между 0,129% и 0,138% человек обретает сверхчеловеческие программистские способности. Однако, это довольно тонкий эффект, требующий тщательной калибровки. Вы не можете просто обеспечить кодеров годовым запасом виски и сказать им: "Программируйте!"

    — А такое уже происходило?

    — Помните Windows ME?

    — Я так и знал!

  4. Тот творческий подъем не стоит потраченных клеток мозга. Безопасная доза чистого алкоголя который может быть переработан организмом весом 75 кг это 18-22мл (то есть бутылка пива или стопка водки). Превышение дозы ведет за собой сужение сосудов тромбоз капилляров в мозге и смерть нейронов. Как всем известно нейроны не восстанавливаются, а ими мы думаем, поэтому с каждой попойкой мы становимся глупее.

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Зарегистрировать/комментатор

Для регистрации укажите свой действующий email и пароль. Связка email-пароль позволяет вам комментировать и редактировать данные в вашем персональном аккаунте, такие как адрес сайта, ник и т.п. (Письмо с активацией придет в ящик, указанный при регистрации)

(обязательно)


⇑ Наверх
⇓ Вниз