Роберт Мартин - Идеальный программист. Как стать профессионалом разработки ПО
Я не знаю, что такое «мана концентрации», но мне кажется, что это некая физическая субстанция (а может быть, ее отсутствие), влияющая на внимательность и восприимчивость. Чем бы она ни была, вы чувствуете, когда она есть, и чувствуете, когда ее нет. Профессиональные разработчики учатся управлять своим временем так, чтобы в полной мере использовать свою ману концентрации. Мы пишем код, когда резерв маны высок, а когда ее остается мало – занимаемся другими, менее творческими делами.
Кроме того, мана концентрации – недолговечный ресурс. Если не использовать ее, пока она есть, то, скорее всего, вы ее потеряете. Это одна из причин, по которым встречи часто приводят к таким значительным затратам. Если вы потратите всю ману концентрации на встрече, то у вас останется меньше ресурсов для программирования.
Беспокойство и раздражение также приводят к потере маны концентрации. Вчерашняя ссора с супругой, царапина на крыле машины, счет, который вы забыли оплатить на прошлой неделе, – все это приводит к быстрому поглощению маны.
Сон
Важность сна невозможно переоценить. Хороший ночной сон восстанавливает большую часть маны концентрации. Семичасовой сон часто возвращает мне полную восьмичасовую дозу маны. Профессиональные разработчики управляют своим графиком сна так, чтобы резерв маны концентрации достигал максимума к тому моменту, когда они утром приходят на работу.
Кофеин
Несомненно, поглощение умеренных доз кофеина повышает эффективность использования маны концентрации. Но будьте осторожны! Кофеин также вводит в вашу концентрацию странную неустойчивость. При избытке кофеина ваше внимание способно смещаться в непредсказуемых направлениях. Слишком сильная кофеиновая стимуляция нередко приводит к тому, что вы тратите весь день, концентрируясь на малозначительных вещах.
Использование и переносимость кофеина – личное дело. Лично я обхожусь чашкой крепкого кофе утром и диетической колой в обед. Иногда эта доза удваивается, но превышается крайне редко.
Перезарядка
Мана концентрации частично перезаряжается отвлекающими занятиями. Хорошая долгая прогулка, беседа с друзьями, просто взгляд из окна – все это поможет восстановить резерв маны.
Одни люди медитируют. Другие выбирают восстановительный сон. Третьи слушают подкасты или листают журналы.
Мой опыт показывает, что после того, как мана уйдет, сохранять концентрацию силой воли невозможно. Вы можете писать код, но вам почти наверняка придется переписывать его на следующий день или жить с этой разлагающейся массой неделями или месяцами. Уж лучше потратить полчаса или даже час на расслабление.
Физические упражнения
В физических упражнениях – таких как боевые искусства, тай-чи или йога – есть нечто особенное. Хотя все они требуют значительной концентрации, это концентрация сильно отличается от необходимой для программирования. Она имеет не интеллектуальную, а физическую природу. И иногда физическая концентрация помогает восстановить умственную, причем это нечто большее, чем простая перезарядка. Я обнаружил, что регулярные физические упражнения повышают мой потенциал умственной концентрации.
Моей любимой формой физической концентрации является велоспорт. Я езжу на велосипеде час или два, иногда на 20–30 километров. Мой маршрут пролегает по тропе, параллельной реке Дес-Плейнс, так что мне не приходится иметь дело с машинами.
Во время поездок я слушаю подкасты об астрономии и политике. Иногда я просто ставлю свою любимую музыку, а иногда снимаю наушники и слушаю природу.
Некоторые люди предпочитают поработать руками. Одни увлекаются столярным делом, другие – сборкой моделей или садоводством. Впрочем, в любой физической работе независимо от ее вида есть что-то такое, что помогает нам работать головой.
Ввод и вывод
Также мне кажется очень важным, чтобы мои результаты подпитывались соответствующим «вводом». Написание программного кода – творческая работа. Обычно мои творческие способности в наибольшей степени проявляются тогда, когда я сталкиваюсь с творческим трудом других людей. Поэтому я читаю много научной фантастики – творческое воображение авторов каким-то образом стимулирует мои собственные творческие способности в области программирования.
Помидоры и распределение времени
Для управления своим временем и концентрацией я также использую чрезвычайно эффективный помидорный метод планирования.[41] Основная идея очень проста: вы ставите стандартный кухонный таймер (традиционно такие таймеры оформляются в виде помидора) на 25 минут. Во время работы таймера ничто не должно мешать вашей работе. Если звонит телефон, вы отвечаете и вежливо просите перезвонить через 25 минут. Если кто-то заходит к вам, чтобы задать вопрос, вы вежливо предлагаете зайти через 25 минут. Независимо от вида прерывания оно откладывается до момента срабатывания таймера. Вряд ли найдется так уж много неотложных дел, которые не могут подождать 25 минут!
По сигналу таймера-«помидора» вы немедленно прекращаете свою текущую работу. Пришло время разобраться со всеми проблемами, возникавшими во время работы таймера. Затем вы делаете перерыв примерно на пять минут, снова ставите таймер на 25 минут и начинаете следующий «помидорный» период. Каждый четвертый период отдыха делается более продолжительным, 30 минут или около того.
Этот метод управления временем описан достаточно подробно; я рекомендую познакомиться с ним подробнее. Тем не менее даже это краткое описание дает начальное представление об этой методике.
При использовании этого метода ваше время делится на продуктивное и непродуктивное. «Помидорное» время продуктивно. Именно в эти периоды выполняется настоящая работа. Остальное время тратится на отвлекающие факторы, встречи, перерывы или другую деятельность, не связанную напрямую с выполнением ваших задач.
Сколько «помидоров» можно сделать за день? В хорошие дни – 12 и даже 14. В плохие может выйти 2 или 3. Если подсчитать «помидоры» и построить график, вы быстро получите представление о том, какая часть рабочего времени расходуется продуктивно, а какая тратится на «всякую всячину».
Некоторые профессионалы настолько привыкают к этой методике, что оценивают затраты времени на свои задачи в «помидорах» и вычисляют свою еженедельную «помидорную скорость». Однако это всего лишь дополнительные «плюсы» метода. Главное преимущество помидорного метода заключается в том, что 25-минутное окно продуктивного времени агрессивно защищается от любых вмешательств.
Уклонение от работы
Иногда у вас попросту «сердце не лежит» к работе. Например, порученная задача вас пугает, кажется неудобной или скучной. А может, вы думаете, что она приведет к конфликтам или неминуемо загонит в сложную ситуацию? Или вам просто не хочется ее выполнять?
Инверсия приоритетов
Независимо от причины мы всегда находим способы избежать выполнения работы. Мы убеждаем себя, что у вас есть более срочная задача, и занимаемся ей. Это называется инверсией приоритетов: вы искусственно повышаете приоритет задачи, чтобы отложить другую задачу, обладающую настоящим приоритетом. Инверсия приоритетов – это ложь, которую мы рассказываем самим себе. Нам не хватает смелости обратиться к тому, что нужно сделать, и мы убеждаем себя, что другая задача более важна. Мы знаем, что это не так, и все же обманываем себя.
Хотя правильнее сказать, что мы обманываем не себя. В действительности мы готовим ложь для тех, кто спросит нас, чем мы занимаемся и почему занимаемся именно этим. Мы заранее готовим защиту от мнения других.
Конечно, такое поведение непрофессионально. Профессионал оценивает приоритет каждой задачи независимо от своих личных страхов и предпочтений и решает эти задачи в порядке приоритетов.
Тупики
Тупик – явление, хорошо знакомое всем разработчикам программных продуктов. Вы принимаете решение и идете по техническому пути, который приводит вас в никуда. Чем больше упорства вы проявляете в своем решении, чем дальше зайдете на этом пути. А если на кон поставлена ваша профессиональная репутация, то вы будете блуждать вечно.
Опыт и благоразумие помогут избежать некоторых тупиков, но обойти их все не удастся. Так что в действительности вы должны быстро понять, что ваш путь завел в тупик, и иметь смелость для отступления. Иногда это называется «правилом ямы»: если вы оказались в яме, прежде всего перестаньте копать.
Профессионал не увлекается идеей настолько, чтобы у него не хватило сил отказаться от нее и вернуться к исходной точке. Он непредвзято относится к другим идеям, чтобы у него оставались другие варианты на случай, если он все же окажется в тупике.
Грязь, болота и трясины