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

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

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

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

image
Иллюстрация Стивена Резига

Я установил для себя несколько правил:

  1. Я обязан кодить каждый день. Я могу заниматься другими вещами — писать документацию или статьи в блог, но только в дополнение к работе над кодом.
  2. Это должен быть функциональный код. Возня с отступами, переформатирование, и, насколько это возможно, рефакторинг — не считаются. Я могу заниматься всем этим, но это не может быть основной частью дневной нормы.
  3. Считается только код, написанный до полуночи.
  4. Весь код должен быть открытым и публиковаться на Гитхабе.


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

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

image

Эти изменения в рабочих привычках принесли множество интересных результатов:

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

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

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

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

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

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

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

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

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

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

 

Источник: http://ejohn.org/blog/write-code-every-day/

Перевод: http://habrahabr.ru/post/219209/