Как решить проблему «осталось 30 минут»?

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

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

Но чтобы сосредоточиться на профессиональной задаче, я не хочу так долго бездельничать на работе, а сидеть там без дела 30 минут просто абсурдно.

Как решить проблему «осталось 30 минут»?

РЕДАКТИРОВАТЬ: Чтобы объяснить, почему это не дубликат, проблема не в том, «что делать, когда системы не работают? » или « что делать, когда мне нечего делать? », а в том, «что делать, когда вы приближаетесь до конца дня, и у вас нет времени, чтобы начать новую задачу?»

Комментарии не для расширенного обсуждения; этот разговор был перемещен в чат . Помните, для чего нужны комментарии: если вы пытаетесь ответить на вопрос, сделайте это в фактическом ответе, предварительно убедившись, что существующие ответы еще не охватили ваши вопросы.
Уходите пораньше и оставайтесь на 30 минут дольше на следующий день.
Я иногда просматриваю все вкладки браузера и решаю, добавить ли их в закладки или просто закрыть без закладок. Что-то вроде «уборки рабочего стола в конце дня». Это может занять некоторое время, особенно после дня поиска ошибок.
«оставаться там, ничего не делая в течение 30 минут, просто кажется абсурдным» — мысль о том, что 30 минут простоя — это проблема, кажется мне абсурдной, если только ваша работа не связана с спасением жизней людей каждой минутой затраченных вами усилий.
что приведет к тому, что я потеряю время Да, но мне очень трудно поверить, что вы потеряете столько же (30 минут) на следующий день. Принимайтесь за работу ;-)
Если перечитывать ваш код так сложно, то, возможно, вам следует читать его чаще. Мы пишем код (надеюсь, один раз), но мы и другие читаем его много раз. Если код настолько сложен для понимания, у вас есть некоторые проблемы, над которыми нужно поработать, а именно читабельность. Не говорю, что вы плохой кодер, но если чтение кода, над которым вы работали вчера, занимает так много времени, значит, что-то не так.
Ты счастливчик. Моя проблема как молодого программиста заключалась в том, что мой мозг включался на полную мощность около 17:00, когда телефон и прерывания прекращались, поэтому я начинал, работал, в конце концов поднимал глаза, и было 8 вечера. Я не утверждаю, что за это время вообще произошло что-то продуктивное, чаще наоборот, но это могло, просто могло означать, что я научился своему ремеслу немного быстрее. Вместо этого всегда есть какая-то занятая работа: ваше расписание, уборка рабочего места, ответы на некоторые нерешенные вопросы, планирование работы на следующие дни, ...
Предотвратите потерю контекста, сначала написав неудачные (!) модульные тесты следующей проблемы. На следующее утро эти тесты покажут вам, над чем вы работали. Эти тесты будут более читабельны, чем любой наполовину готовый код.
Ты не можешь просто пойти домой?
@usr Должно быть так, но во многих компаниях это невозможно.
«Как разработчик [...], если я начну кодировать в самом начале задачи, я знаю, что мне будет трудно продолжить ее на следующий день» . Прежде чем приступить к части программирования, вы собираетесь заняться частью разработки/структурирования программы. , Правильно? Разработчик — это человек, который решает проблему, а затем (необязательно) кодирует, в отличие от программиста , который просто получает инструкции о том, какое решение должно быть реализовано, и выполняет его (что также является нетривиальной задачей). Так что возьмите карандаш, блокнот и нарисуйте всю структуру вашей программы/класса/всего, что вам нужно реализовать.
Вы либо уходите на 30 минут раньше, либо остаетесь, пока не закончите задание.

Ответы (17)

Есть много вариантов:

  • Проверьте (соответствующие) блоги/новости/журналы и прочитайте, что происходит в вашей области
  • Документируйте, что вы сделали в течение дня
  • Планируйте, что вам нужно сделать на следующий день/неделю/месяц
  • Вернитесь к своей почте и, наконец, действительно получите информацию, которую вы пропустили, пропуская ее ранее.
  • Проверьте, выполнили ли вы все «организационные задачи», и если нет, выполните их (сдайте свои часы, отправьте этот отчет на вашем столе тому, кто должен его прочитать, запустите резервное копирование,...)
  • Очистите доску/парту/рабочий стол от всего, что там скопилось, но потеряло актуальность три недели назад
  • Вы сделали все это? Еще 30 минут? Вернитесь к шагу 1! (А ты волшебник.)
Комментарии не для расширенного обсуждения; этот разговор был перемещен в чат .

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

Старайтесь не останавливаться в «естественной точке остановки».

Вы беспокоитесь, что если вы потратите полчаса на задачу кодирования, вам будет трудно загрузить контекст, когда вы вернетесь к ней на следующий день. Но мой опыт прямо противоположный. Допустим, вы собираетесь написать простую функцию. Вы знаете, что будет некоторая инициализация, цикл для обработки всех X в Y и некоторая очистка. Я буквально добавлю файл в свой проект, объявлю функцию, добавлю три комментария (может быть, напишу конструкцию for или while вокруг одного из них), а затем -- пойду домой.

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

Начать. Тогда уходи. Вы можете быть ОЧЕНЬ приятно удивлены - гораздо легче начать, если вы не останавливаетесь в естественной точке остановки. Стартовать с этих точек очень легко.

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

Попытайся.

Комментарии не для расширенного обсуждения; этот разговор был перемещен в чат .

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

Но в любом случае я никогда не сторонник работы с 9 до 5. Ваш работодатель может быть более регрессивным и строгим в этом отношении.

Да, это больше похоже на «7 часов в день, ни больше, ни меньше».
Понизьте голос, потому что всегда есть продуктивный и интересный способ заполнить это время (см. ответ неба). Пропуск досрочно здесь не применим. Разработчик не просто все время пишет код; хороший разработчик поддерживает мысленный контекст окружающего мира, состояние релиза/продукта, любые новые вопросы, поднятые на трекере... читайте их ! Хорошая мягкая вещь, которую можно сделать в течение последних 30 минут дня... в течение которых вам все еще платят и ожидается, что вы будете доступны для вопросов!
@BoundaryImposition: это полностью зависит от вашей рабочей среды. Если рабочее время динамично (и почти везде, где я был, это было правдой), то каждый разработчик придерживается своего рабочего времени. Некоторые приходят в 7 и уходят до 4, в то время как другие приходят в 11 и уходят около 9. Пока все работают на полную ставку и выполняют свою работу, большинству заведений будет все равно, когда вы оставлять. Некоторые из других вещей, которые вы упомянули, разработчики, скорее всего, будут делать в свободное время. Так что... я не могу сказать, что согласен с критикой здесь.
@BoundaryImposition Дело не в том, что вы можете найти что-то продуктивное, а в том, чтобы делать то, что приносит наибольшую пользу компании. Плакат — это стажер, он, вероятно, не принесет большой пользы, беспокоясь о состоянии продукта или отвечая на вопросы других людей.
@PhilipKendall: я не могу не согласиться. Это стандартная практика «Я здесь работаю», и стажер должен учиться таким ремеслам.
Я согласен на 100% с @Philip, но первое, что я хотел бы сделать, это поговорить с боссом. Работая как подрядчиком, так и на постоянной основе в течение многих лет, я обнаружил, что наиболее компетентные начальники/руководители проектов понимают эту ситуацию и будут рады, если вы уйдете пораньше и наверстаете время, когда это необходимо. Если нет, то просто задержитесь на одном из «стековых» сайтов на 30 минут и запишите это в свой табель учета рабочего времени как R&D...

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

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

Проблема в том, что в ООП даже планирование может занять много времени.
Да, это должен был быть мой ответ. Потратьте последние 30 минут, делая заметки о том, что вы собираетесь сделать на следующий день, чтобы закончить это. Вы поможете сформулировать проблему в своем уме, и, вероятно, подсознание подумает о вещах позже, которые вы пропустили на «кодовом лице», плюс это дает вам инструктаж, который вам нужно начать на следующий день (плюс, если вы гибки, это может дать вам вещи, чтобы упомянуть на стендапе).
Это я трачу свободное время на составление контрольного списка того, что осталось сделать и что предстоит сделать, а также документировать, где именно я остановился, так как утром (или на выходных) очень легко забыть, где вы остановились.
Что такое «комментарии кода каркаса»?
в основном то же самое, что подробно сформулировала Кейт Грегори. Не полный код, а фрагменты с комментариями в коде, заглушенные для понимания в будущем. Разные люди называют это по-разному...

Как решить проблему «осталось 30 минут»?

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

Я использую эти неожиданные подарки времени для исследования новых технологий или анализа моей следующей задачи, или я отвечаю/просматриваю вопросы на Stack Overflow. Я многому учусь, просто просматривая новые вопросы и ответы.

Не просто сидите и притворяйтесь, что заняты. Используйте время с пользой!

Я полагаю, что выполнение обзоров / ответов на задачи на Stack Exchange в рабочее время может быть очень специфичным для компании.
Конечно, это должно относиться в первую очередь к очень актуальным проектам Stack Overflow. Вы должны обращаться к music.stackexchange только в том случае, если вы пишете такой инструмент, как Sibelius.

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

Когда у меня остается немного времени, я иду к списку и просто начинаю выбирать случайные вещи. Каждый элемент является автономным и очень предсказуемым с точки зрения количества времени, которое требуется, что делает их идеальными для того, чтобы втиснуться, когда у меня есть 15 минут до встречи, 5 минут после подготовки к конференц-связи и т. д. Кроме того, когда кто-то опаздывает на встречу, ничто не делает их счастливее, чем «Эй, я думал о тебе, поэтому я втиснул ту функцию, о которой ты просил меня шесть месяцев назад, разве это не мило?» (И ничто не делает меня счастливее, чем не сидеть там, думая: «Встречи *&@$, никогда не начинать вовремя…»)

Как разработчик вы никогда не закончите.

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

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

и тому подобное.

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

И в маловероятном случае вы что-то сломали: проверьте последнее рабочее состояние из вашего SCM...

+1 Потратить несколько минут на то, чтобы подумать о качестве своей работы (не говоря уже о том, чтобы улучшить ее) — это очень профессиональный поступок! На самом деле, это необходимо для профессионального роста.
@jpaugh "+1 Потратьте несколько минут на то, чтобы подумать о качестве своей работы" Спасибо, но почему бы и не сделать это? Как написано, это безопасно и быстро.
Это последнее, что я хотел бы делать в конце дня. Если ваши модульные тесты идеальны, и вы никогда не вносите изменения, которые занимают больше минуты или двух, и вы не создаете проблем со слиянием... может быть. Простое рассмотрение возможных улучшений (и планирование их, если они кажутся целесообразными) кажется мне менее затратным и столь же эффективным в долгосрочной перспективе. Самое сложное — преодолеть присущую мозгу инерцию даже при рассмотрении затрат и выгод любых изменений.

Как решить проблему «осталось 30 минут»?

Я всегда посвящал последние 30 минут каждого дня:

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

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

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

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

Если вы работаете почасово, используйте это время, чтобы сделать какую-нибудь занятную работу, такую ​​как добавление комментариев и генеральная уборка. Обычно я также использую эти последние 30 минут или около того, чтобы отправлять электронные письма, писать отчеты и заполнять рабочие журналы.

Если ничего другого, круиз Stack Overflow и выглядеть занятым.

Я обычно не тороплюсь и отвечаю на вопросы в stackOverflow.

Выполняйте некоторые задачи, на которые «нет времени»

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

Убедить руководство в том, что им нужно тратить деньги на задачи, которые экономят деньги в каком-то неопределенном будущем, часто бывает сложно. На этот раз, если они жалуются, вы можете указать, что у вас были свободные 30 минут в конце дня, и указать, что вы нашли X ошибок.

Слишком часто на разработчиков оказывается давление, чтобы они заканчивали работу быстрее, а контроль качества недостаточен.

Убедитесь, что то, что вы недавно написали, сделано по спецификации. Это случилось со мной вчера. Я перечитал часть спецификации для чего-то и понял, что это не совсем правильно - потратил около 20 минут на исправление этого.

Лично у меня это происходит примерно в последние 15-20 минут дня.

Что мне помогает, так это планировать следующий день (или неделю), придумывая несколько действий и т. д.

Вы должны просто упомянуть действия, а затем предоставить читателю возможность предположить. Пожалуйста, перечислите их, чтобы другие могли их взять.
На следующий день переехать не проблема, нет большой разницы, если вы остановитесь в 23:50 или 0:20. Обычно это больше похоже на то, что мне нужно заставить себя остановиться, когда мне нужно встать (здесь только частично шучу). Я несколько шокирован тем, насколько широко распространены жесткие рабочие часы.

Вам следует подумать о том, чтобы разделить свое рабочее время на блоки, достаточно большие, чтобы вы могли свободно работать в каждом блоке, но не слишком большие. Вы можете подумать, что сколь угодно большие блоки, которых хватает на то, чтобы выполнить какую-то задачу, работают на вас хорошо, но концентрация действительно страдает после нескольких часов непрерывной работы. Если вы сделаете перерыв, скажем, через 2,5 часа, то вы сможете разделить 9-часовой рабочий день (8 часов работы плюс 1 час перерыва) на 3 таких блока с 20-минутными перерывами на кофе/обед между блоками и дополнительными 50-минутными перерывами на физические упражнения.

Затем вы устраните эту «проблему последних получасов», всегда будет только последний 2,5-часовой блок, который будет ощущаться совершенно иначе, чем ваши текущие последние часы на работе. Если задача завершается в последнем блоке, у вас будет гораздо больше энергии, чтобы продолжить другие задачи или составить план на следующий день. Вы начнете этот блок с большей энергией, и в начале блока вы, вероятно, будете знать, что собираетесь закончить раньше времени, что заставляет вас более позитивно думать о выполнении другой работы после завершения проекта. .

Тот факт, что вы сейчас не склонны к этому, является артефактом «работы до конца задачи», которая истощает умственную энергию; если вы организуете свою работу в виде длинных марафонов, то неудивительно, что в конце задачи вы чувствуете себя марафонцем на финише.

Любое ПО более (не очень) сложности всегда можно сделать немного лучше.

Сделайте свой код немного лучше.

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

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

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

На самом деле, я не очень понимаю, почему "30 минут - это недостаточно времени для того, чтобы что-то закодировать" - если вы не разбиваете свою работу на более мелкие части (или не можете), это звучит не очень эффективный способ добиться прогресса. На самом деле, если бы вы использовали технику тайм-менеджмента, такую ​​как Pomodoro , вы бы разбили всю свою работу на 30-минутные части.

Страница Википедии, на которую вы ссылаетесь, на самом деле не описывает разбиение работы на 30-минутные части, а просто описывает произвольное вставление перерывов, когда звенит таймер. Ошибается ли здесь Википедия, и нужно ли методике разбивать задачи на мелкие кусочки, прежде чем начинать над ними работать?

Насколько я понимаю, эти 30 минут остаются после всех канцелярских/административных обязанностей.

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

  1. Документация В мире нет проекта, который не нуждался бы в лучшей или обновленной документации.
  2. Естественные остановки. Я предпочитаю останавливаться здесь, так как все чисто. Для меня это моральный дух, энергия и организация.
  3. Чтение. Всегда есть какой-то полезный совет/трюк, который нужно прочитать и понять, или какая-то техника, которую вам нужно опробовать, чтобы вы могли эффективно использовать ее в своей дальнейшей работе. Проблема в том, что в первый раз, когда вы используете новую технику, вы будете медленнее. Это время гореть, чтобы пройти через это.