Сегодня меня посетило внезапное озарение о том, как я обычно приступаю к программированию. Эта штука была знакома мне и раньше, но на этот раз мне удалось облечь её в словесную форму.
Часто я сталкиваюсь с тем, что трудно начать программировать что-то большое: большую новую подсистему, глубокий рефакторинг, затрагивающий файлы во всём проекте. Даже когда этот процесс уже идёт и длится несколько дней, то трудно вернуться к этой обескураживающей задаче на следующий день.
Оказывается, что в этом случае нужно — это вещь, знакомая любому, кто когда-нибудь занимался физкультурой — разминка. Я заметил, что проще начать работать над большим проектом, если сделать в его коде какие-нибудь мелочи: переименовать переменные, написать или поправить docstring'и, исправить зависимости в пакете. Это помогает заново окунуться в проект, сблизится с его предметной областью, заново вспомнить какие-то мысли, которые у меня были в прошлый раз.
Надеюсь, кому-нибудь это поможет тоже :-)
Комментарии: 15
Всё правильно. Менеджеры проектов иногда замечают, что разработчики, прежде чем делать конкретный тикет АА-1234, начинают фиксить всякие мелочи, и потом уже беруться за АА-1234. У кого-то это автоматически происходит.
Я тоже так делаю, начинать нужно с малого. У меня обычно по проекту уже записаны в ToDo пунктики разной степени важности, и вот начинаешь мелочи делать, смотришь, список уменьшается, красота.
Я тоже начинаю с простых задач и постепенно вхожу в поток :)
Немного не по теме, но я заметил если заниматься хатха-йогой, то производительность программинга повышается больше чем в два раза. По теме, я обычно посижу чуть на форумах, а потом просто "запускаюсь" с запуском IDE
Да, так оно и бывает. Главное, чтобы за фиксеньем мелочей не прошёл весь день. :)
Аналогично. Кажется, это свойство общепрограммерское. :)
Это не только разминка, но и подготовка рабочего места, так сказать.
Интересно подумать, почему так происходит. Вот сидишь, бывает, всю ночь, работаешь над новой функцией, часа в 4 утра она наконец начинает работать - на этом процесс прерывается. Естественно, на следующее утро нужно "переименовать переменные, написать или поправить docstring'и, исправить зависимости в пакете" - иначе в коде так и останется весь тот бардак, который родил мозг в 4 утра.
Иногда такие анекдоты находишь в коде на следующее утро, что сам себе удивляешься...
Это довольно таки известный когнитивынй феномен - люди испытывают растерянность когда сталкиваются с большой задачей. Решение - сузить "горизонт", разделив большую задачу на много маленьких.
http://www.google.com/search?q=break%20down%20big%20task%20into%20small%20ones
Спасибо за подсказку, ушел пробовать.
Как-то не замечал раньше, но так и есть - постоянно мелкие правки, после - основная работа.
Да так оно и происходит обычно у меня. Причем это применимо не только к программированию, к подготовке документов, ремонту тоже применимо - проверено на себе. :)
Да, так и есть. Специально оставляю всякие мелочи открытыми для того, чтобы было чем заняться, когда основные вещи не хотят делаться.
а я думал, что это от того, что я ленивый и берусь за штуки попроще вначале. а оказывается всё проще и лучше, чем кажется.
Я могу лишь добавить что надо
Разбивать задачи на независимые мелкие. Часто большая задача просто ставит в тупик, а продумав ее можно разбить на уже мелкие и не страшные :) Тут главное за мелочью все таки главное не потерять.
Планировать работы. Я стараюсь уместить в день пару побольше и некоторую мелочь. Крупняк задает тон - я это сделаю и в конце - я это сделал. А мелочь помогает эффективно время использовать.
Ну и напоследок, перед тем как начать я часто обдумываю вчерашние планы - в душе, моя посуду - не напряжная рутина вообще хорошо стимулирует ассоциативное мышление - и бывает что открывается новая сторона обсосанной проблемы. Потом садишься уже готовым и в контексте. И вообще для многозадачности главное в нужное время сохранять контекст :)
Есть еще похожий трюк, чтобы закончить программировать и не уносить задачу домой. Можно написать себе "письмо" на завтра о том, на чем ты закончил, какие важные мысли у тебя были и которые могут пригодиться завтра. Таким образом ты перестаешь думать про задачу и можешь нормально отдыхать.
Дополнительный плюс такого "письма" - то, что, прийдя на следующий день на работу, можно прочитать это письмо, и это будет аналогом разминки. Ты быстро "загружаешь" себе тот контекст который был у тебя в голове вчера, те мысли и идеи которые ты считаешь важными, а так же все те другие мысли которые крутились вокруг них.