[Из песочницы] Прокрастинация с точки зрения программиста на удалёнке

image


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

От чего возникает прокрастинация? Почему в других профессиях эта проблема обычно стоит менее остро? Чем программисты такие особенные?
Всё дело в специфике программирования (системного решения сложных задач). Программировать нельзя «вполсилы» — такая работа в итоге приравнивается к нулю. Код с одной маленькой ошибкой не отработает как надо, даже если остальные 99.99% там верные. Более того, даже если код работает, но при этом жутко кривой, чаще всего, в итоге его придётся переписывать с нуля — это будет проще, чем пытаться выправлять его костылями. Т.е. по сути, написание недостаточно качественного кода это абсолютно пустая трата времени и сил — переделка «на чистовую» от этого не ускорится.

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

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

О творческих профессиях

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


Это часть прокрастинации, которая присутствует у всех программистов — в офисе и на удалёнке. Но есть также две части, которые свойственны только удалённой работе — свободный график и отсутствие прямого общения.

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

А вот недостаток общения влияет намного больше, чем кажется. Главным тут является эффект присутствия. Почему ученики и студенты лучше усваивают материал и усерднее делают лабораторные в присутствии живого преподавателя? Почему преподаватели раз за разом зачитывают одни и те же лекции голосом, когда уже десятки лет существуют технологии аудиозаписи и трансляции? Ответ — человеческая психология. Намного проще сфокусироваться на информации, когда все вокруг тоже направили на неё внимание, и когда она исходит от человека (настоящего, физического), наделённого авторитетом.

О заочниках

Да, конечно, есть заочные факультеты, видеолекции и дистанционные курсы, и вы уже хотите написать про них в комментах. Дело не в том, что они не работают совсем, а в том, что они намного менее эффективны, по крайней мере для большинства людей. Тех же заочников в ВУЗах, по моему опыту, вообще приравнивают к «отсталым», выставляя тройки/зачёты за умение ответить на вопрос после поиска информации в методичке.


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

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

Собственно вот, «кто виноват» разобрались, теперь к вопросу «что делать».

1.

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

У меня этот внутренний диалог обычно проходит так:

«Нужно запилить фичу X. Когда сможешь?»

«Когда высплюсь/когда буду себя нормально чувствовать» — так займись тем, что приближает это состояние. Поешь. Поспи. Болеешь? Полечись. Прямо сейчас. Не «когда досмотрю серию», не «когда доиграю партию», не «когда допью кофе» — все эти действия не приближают тебя к рабочему состоянию.

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

«Когда разберусь, что именно нужно делать» — значит, твоя следующая задача не «сделать», а «разобраться». Разбирайся. Спроси заказчика/менеджера (переспроси, если уже спрашивал и не получил ответа), либо попробуй сам покопаться в проблеме. Если ты не пытаешься разобраться в этом прямо сейчас, ты просто тратишь время зря.

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

«Ну, я и сейчас смог бы, наверное» — делай.

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

2.

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

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

3.

Мало кто может поднять груз, весом в тонну и перенести его в другую комнату, даже если на это даётся месяц. А перенести сотню 10-киллограмовых грузов — уже выполнимо. Также следует поступать и с работой — разделяйте её на мелкие части и выполняйте по мере возможностей.

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

Собственно, вот. Дополнения в комментариях приветствуются.

© Geektimes