1. Войдите в состояние потока

Во всемирно известной книге “Поток: Психология оптимального переживания” психолог Михай Чиксентмихайи раскрывает секрет того, как добиться максимальной производительности. Суть заключается в том, чтобы выполнять работу в оптимальном состоянии, называемым “поток”. 

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

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

Изучите навыки заранее 

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

Сначала выполните задачу, а уже потом отполируйте ее до блеска ✅

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

Разделяй и властвуй ✅

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

Таким образом, для вхождения в состояние потока нужно либо повысить уровень своих навыков, либо понизить сложность задачи. Геймдизайнеры используют эту технику, чтобы держать игроков “на крючке”. Чтобы геймеры не чувствовали разочарования в своих навыках и не умирали от скуки, разработчики создают игровые уровни, соответствующие их навыкам. В состоянии потока, программирование похоже на видеоигру.  

2. Сосредоточьтесь 

В первые минуты пребывания в состоянии потока вы можете не почувствовать того, что я так красочно описывал вам мгновение назад. Очень важно сосредоточиться и погрузиться в работу. В своей книге “В работу с головой: Паттерны успеха от IT-специалиста” Кэл Ньюпорт рассказывает о важности сфокусированной работы.

Deep Work (В работу с головой): Профессиональная деятельность, выполняемая в состоянии полного погружения в процесс, развивает ваши когнитивные возможности до предела.

Выделите время для сосредоточенной работы✅

Вы можете выделить немного времени для сосредоточенной работы. Чтобы не отвлекаться, отключите все уведомления на компьютере и телефоне. Если вы не умеете держать себя в руках, попробуйте технику Pomodoro.

Техника Pomodoro ✅

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

По сути, вы работаете над заданием в течение 25 минут, ни на что не отвлекаясь. Затем вы делаете короткий 5-минутный перерыв и переходите к следующему “помидору”. После 4-х “помидоров” можно сделать длинный перерыв. В Интернете вы легко можете найти соответствующие этой технике приложения.

? Не будьте слишком пунктуальны с графиком Pomodoro. Если вы находитесь в состоянии потока, вам не нужно заставлять себя делать перерыв в тот момент, когда истекли 25 минут. У вас есть и другое время для отдыха, и позже я об этом расскажу.

Данный метод отлично подходит для внешних отвлекающих факторов, но что насчет внутренних отвлекающих факторов?

Записывайте свои мысли ✅ 

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

Но благодаря исследованиям Блюмы Зейгарник мы знаем, что:

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

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

3. Минимизируйте выбор

Жизнь программиста включает в себя принятие множества решений, и это мешает вхождению в состояние потока.

В своей книге “Парадокс выбора” Барри Шварц описывает, как более широкий круг выбора приводит к тревожному состоянию и беспокойству. Он приводит множество примеров: от “Что купить?” и “Что ей/ему подарить?”, до “Куда поступить?”, чтобы показать, что менее широкий круг выбора может не только увеличить нашу производительность, но и поможет почувствовать себя счастливее.

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

Выбирая язык или фреймворк, подумайте вот о чем ✅

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

Поэтому при выборе языка или фреймворка отдавайте предпочтение тем, у кого есть единственный способ что-то сделать, так как вам не придется беспокоиться о выборе нужного метода (у вас он будет один, ну вы поняли). 

Соберите необходимые материалы заранее ✅

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

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

Продумайте план проекта перед тем как писать код ✅

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

4. Не боритесь с силой воли

Исследования, которые проводились над очень успешными людьми, показали, что успех — это вовсе не результат огромной силы воли или способности преодолевать препятствия, а скорее результат хороших рабочих условий, благодаря которым нет необходимости преодолевать препятствия! 

Есть некоторые методы, которые помогут избежать борьбы с вашей силой воли.

Как победить прокрастинацию? 

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

Ставьте перед собой четкие цели и задачи ✅

Одной из основных причин прокрастинации являются слишком сложные цели и задачи. Если вы поделите ваши “глобальные” задачи на подзадачи и уточните: что, как и когда вы будете делать, тогда вы с гораздо большим успехом избежите прокрастинации. Кроме того, наш мозг устроен таким образом, что, если вы ставите неточные или неоднозначные цели — он склонен воспринимать их как нечто трудное или тяжелое. Таким образом, наличие четко поставленных целей и задач позволит вам не вступать в борьбу со своей силой воли.  

Начните выполнять следующее задание прямо сейчас ✅

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

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

Как решать сложные задачи?

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

Перерыв на прогулку ✅

Позвольте своему мозгу отдохнуть после долгой и упорной работы над определенной проблемой. Например: пока мы гуляем, принимаем душ или просто убираемся в квартире, наш мозг попутно продолжает думать над проблемой, которую вы так и не смогли решить, на подсознательном уровне. Вы будете очень удивлены, когда решение возникнет “само собой”!
 
Достаточно просто ненадолго отойти от своего рабочего места или компьютера и вы сами все поймете.

Сон ✅

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

Начните работу над другой проблемой или проектом ✅

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

5. Проявляйте эмпатию

Эмпатия — важный навык, который приведет вас к успеху и счастью в личной жизни и выбранной профессии. Я призываю вас проявлять эмпатию в программировании. Программирование —  это не просто логика, это еще и искусство!

Пишите легкий в поддержке код ✅

Помните, что код, который вы пишете, в будущем будут читать и поддерживать другие люди!

Программы должны быть написаны для того, чтобы люди могли их читать, а машины могли исполнять.

Следуйте определенным нормам хорошего кода, таким как понятные и логичные имена переменных, небольшие методы и т.д.

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

// 
// Dear maintainer:
//
// Once you are done trying to 'optimize' this routine,
// and have realized what a terrible mistake that was,
// please increment the following counter as a warning
// to the next guy:
//
// total_hours_wasted_here = 42
//

Упростите дизайн ✅

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

Простые вещи должны быть проще. Сложные вещи должны быть возможными.

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

В заключение

Если вы ненавидите программирование или собираетесь бросить его, эти идеи могут изменить ваше отношение и сделать вас счастливее.

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

Перевод статьи Rajasekar ElangoWant to become a Happy and Productive Programmer? Use these 5 techniques from Psychology

Предыдущая статьяСоветы по разработке больших приложений JavaScript
Следующая статьяХитрости объектно-ориентированного программирования. Часть 6 SLAP для функций