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

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

Оказывается, что в этом случае нужно — это вещь, знакомая любому, кто когда-нибудь занимался физкультурой — разминка. Я заметил, что проще начать работать над большим проектом, если сделать в его коде какие-нибудь мелочи: переименовать переменные, написать или поправить docstring'и, исправить зависимости в пакете. Это помогает заново окунуться в проект, сблизится с его предметной областью, заново вспомнить какие-то мысли, которые у меня были в прошлый раз.

Надеюсь, кому-нибудь это поможет тоже :-)

Комментарии: 16

  1. sorgoz.ya.ru

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

  2. bialix

    Nice. Actually looking through my experience, I can say that I often do the same: starting with something small and then get ready to important tasks.

    This is even more true for working on open source projects from time to time when you have free time in the evening: while I'm triaging couple of new bugs, I'm trying to find the easy one, then start looking through codebase, and trying to fix it. Unfortunately (for me) my free time has its own limits, and when I'm warm enough to work on shiny new features... I have to stop because it's already too late. Heh.

  3. Тормоз

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

  4. glader.livejournal.com

    Я тоже начинаю с простых задач и постепенно вхожу в поток :)

  5. Герасимов Константин

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

  6. Alexander Chemeris

    Да, так оно и бывает. Главное, чтобы за фиксеньем мелочей не прошёл весь день. :)

  7. izhurnal

    Аналогично. Кажется, это свойство общепрограммерское. :)

  8. www.google.com/profiles/scrptn

    Это не только разминка, но и подготовка рабочего места, так сказать.

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

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

  9. Google user

    Это довольно таки известный когнитивынй феномен - люди испытывают растерянность когда сталкиваются с большой задачей. Решение - сузить "горизонт", разделив большую задачу на много маленьких.

    http://www.google.com/search?q=break%20down%20big%20task%20into%20small%20ones

  10. g.a.vinogradov@gmail.com

    Спасибо за подсказку, ушел пробовать.

  11. Nergal

    Как-то не замечал раньше, но так и есть - постоянно мелкие правки, после - основная работа.

  12. kpy3,wordpress.com

    Да так оно и происходит обычно у меня. Причем это применимо не только к программированию, к подготовке документов, ремонту тоже применимо - проверено на себе. :)

  13. ayanami

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

  14. Antoin

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

  15. Wott

    Я могу лишь добавить что надо

    1. Разбивать задачи на независимые мелкие. Часто большая задача просто ставит в тупик, а продумав ее можно разбить на уже мелкие и не страшные :) Тут главное за мелочью все таки главное не потерять.

    2. Планировать работы. Я стараюсь уместить в день пару побольше и некоторую мелочь. Крупняк задает тон - я это сделаю и в конце - я это сделал. А мелочь помогает эффективно время использовать.

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

  16. vsg

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

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

Добавить комментарий