Как вы сохраняете фокус, когда определенный аспект программирования занимает более 10 секунд? [закрыто]

141

Мне очень трудно сосредоточиться на том, что я делаю (в программировании), когда что-то (компиляция, время запуска и т. Д.) Занимает больше, чем несколько секунд. Неожиданно кажется, что порог составляет около 10 секунд (и я вспоминаю чтение об исследовании, в котором говорилось то же самое, хотя я не могу его сейчас найти). Так что, как правило, я делаю изменения, а затем запускаю программу для их проверки. Это занимает около 30 секунд, поэтому я начинаю читать что-то еще, и, прежде чем я знаю, что прошло 20 минут, а затем (если мне повезет!) Еще 10 минут, чтобы разобраться с переключением контекста и вернуться к программированию. ,

Не будет преувеличением сказать, что некоторые вещи, которые занимают у меня минуты, буквально занимают часы.

Мне очень любопытно, что делают другие программисты для борьбы с этой тенденцией (или, если я уникален, и у них нет этой тенденции?). Приветствуются любые предложения любого типа - от «сидеть на руках после нажатия кнопки компиляции» до умственных трюков и «если требуется 30 секунд, чтобы запустить что-то для проверки изменений, то что-то не так с вашим процессом разработки» !»

Jer
источник
24
У меня похожая проблема (отсюда и этот комментарий :)). Я обнаружил, что на самом деле помогает меньше кофе по утрам или совсем нет. Я также стараюсь работать по утрам и планировать встречи во второй половине дня. Надеюсь, что это помогает .... о, посмотрите котенка.
DevSolo
7
Вы имеете дело с формой проволочек - врагом работников умственного труда со всей вселенной.
Адитья депутат
130
Arrrg !! Я делаю это сейчас - спасибо за напоминание - вернемся к работе.
2012 года
8
Я обычно провожу это время на сайтах SE, читая вопросы, отвечая на все, что я могу, чтобы помочь другим разработчикам, и узнавая что-то новое в процессе.
Бернард
6
Вы должны начать разработку для SharePoint, потому что вам действительно нужно подождать 20 минут :)
kev

Ответы:

117

Я написал небольшую утилиту командной строки под названием «alert», которая заставит компьютер подавать звуковой сигнал / воспроизводить звук / и т. Д. Затем, когда у меня появляется длинная команда для запуска, такая как make, я запускаю make; alert. Там, где я могу, у меня также будет аргумент, чтобы он звучал по-разному в зависимости от аргумента. Таким образом, я могу сделать, make; alert $?и я буду знать, а) сборка завершена, и б) она прошла или не удалось. Вы не должны быть настолько увлечены этим; просто echo -e "\a"может быть достаточно.

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

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

retracile
источник
6
Быстрый пример:MSG="back to work" && xmessage -buttons ok -default ok -nearmouse "${MSG}" 2> /dev/null
Сакиск
6
@faif В этом случае вы хотите использовать ;вместо &&. Ваш второй пример будет работать только в show_messageслучае makeуспеха, что не совсем то, что вы хотите. Чтобы быть ясным: мне нравится пример, который вы дали, я просто привередлив в деталях реализации. ;)
откат
2
Я написал быструю программу командной строки, которая отправляет мне электронное письмо, когда определенное задание выполнено - поэтому, если я уйду из комнаты, чтобы заняться ИТ-делами в свое время ожидания, мой телефон подаст мне звуковой сигнал, чтобы я сказал, чтобы я вернулся в свой офис и закончил что я делал
Фил
7
+1 за то, что отвлекает тебя от отвлечения - бей огонь огнем! Так тебя не уволят!
corsiKa
1
Ubuntu имеет хорошую настройку псевдонимов предупреждений в .bashrc. Это зависит от libnotify, но если он установлен, вы можете это сделать, command; alertи он выдаст вам уведомление на рабочем столе, когда будет указано, какая команда была завершена. Действительно полезно для длительных компиляций или тестов.
Лев
104

У меня та же проблема, и решение для меня состояло в том, чтобы тратить время на выполнение чего-то, что вас не затянет. Для меня это обычно либо (1) заполнение бутылки с водой, либо (2) вставание и совершая 30-секундную прогулку по офису, чтобы размять ноги, которые в любом случае нуждаются в движении. Вы можете потеряться в Интернете; вы редко заблудились, прогуливаясь по собственной кабине

eykanal
источник
37
+1 за быструю прогулку / растяжку. Это то, что мы все должны делать чаще.
Джон Перди
2
Это хорошо работает в сочетании с моим ответом ... установите громкоговорители достаточно громко, чтобы слышать их по комнате во время прогулки, чтобы вы могли оборвать их. (Например, эта 10-минутная сборка, которая завершается через 30 секунд из-за синтаксической ошибки.)
пересмотр
1
+1, сделать то, что занимает не более 10 секунд. Напиток. Хватай жевательную резинку. Посмотрите у окна, если вам повезет, что-то может происходить на улице. Если вы слушаете музыку, проверьте, что идет в вашем плейлисте, или добавьте несколько треков.
Лоран Кувиду
2
Я также добавлю, используйте уборную :) Часто, когда я впервые встаю после долгого сеанса кодирования, я обнаруживаю, что мне действительно нужно использовать сантехнику, как говорится, как говорится. Используйте эти перерывы, чтобы позаботиться о себе.
эйканал
4
Пока вы не поговорите с разработчиком в следующем месте / кубе ... теперь это 20-минутный чат вместо 20-минутного просмотра.
Стивен Эверс
29

Сделайте что-нибудь для своего здоровья:

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

Кроме того, что касается 2-5 минутного перерыва, ознакомьтесь с техникой Pomodoro . Это основано на идее частых коротких перерывов, чтобы отвлечься от текущей задачи и позволить чему-то немного затянуться. Это достаточно короткий перерыв, чтобы полностью не потерять ход мыслей, но достаточно долго, чтобы дать мозгу передышку.

ZweiBlumen
источник
10
И вам даже не нужно вставать - просто закрыв глаза на 30 секунд, вы сможете сохранить их влажными и менее уставшими.
JBRWilkinson
1
Это отличный ответ (помогает сжечь нервную энергию), и техника pomodoro может сработать, если вы достаточно дисциплинированы.
DevSolo
1
+1. Помогает и стол с регулируемой высотой. Я обнаружил, что когда я стою, я гораздо более продуктивен, потому что во время этих коротких пауз (компиляции и т. Д.) Я немного брожу, размышляя о том, над чем работаю, и как только задача завершается, я иду вернемся к работе. Возможно, это только я, но мне нравится много передвигаться, когда я думаю, и стимуляция помогает.
Paperjam
1
Никогда не слышал о Помородо, но я давно поддерживаю идею о том, что вам нужно время от времени делать перерывы, чтобы дать вашему более сознательному разуму отдохнуть, и пусть ваши задом наперед разбираются на некоторое время. Есть причина, по которой в душе и ванной комнате случается много неприятных моментов.
Эрик Реппен
25

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

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

Есть много отвлекающих факторов:

  • Телефонный звонок от вашей жены,
  • Телефонный звонок деловому человеку в офисе рядом с вашим,
  • Коллега просит вас о помощи,
  • Быть голодным,
  • Имея личные проблемы,
  • Необходимость работать над устаревшим кодом, написанным неопытным разработчиком десять лет назад и никогда не подвергавшимся рефакторингу,
  • Наличие медленного ПК или медленного интернет-соединения,
  • Долгий процесс компиляции,
  • и т.п.

Здесь нет ничего общего. Единственное, что вы можете сделать, это удалить сами отвлекающие факторы:

  • В вашем офисе нет телефонов,
  • Тихие условия труда,
  • Быстрый компьютер и доступ в интернет,
  • Быстрый процесс компиляции,
  • и т.п.

В вашем случае, если вас отвлекает компилятор, попробуйте уменьшить время компиляции:

  • Уменьшение размера вашей программы (например, некоторые IDE позволяют вам выгружать некоторые проекты из решения, что значительно сокращает время компиляции),
  • Используя ночные сборки и меньше компилируя во время работы,
  • Покупка более быстрой машины (если больше нечего делать),
  • и т.п.
MainMa
источник
9

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

Вы должны переподготовить себя, чтобы не чувствовать необходимости быть постоянно и активно делать вещи. Это очень вредная проблема, которая затрагивает не только разработчиков, но и всех людей. Общество стало одержимым необходимостью постоянной стимуляции (визуальной, звуковой, психической). Кажется, никто не может бездействовать более 30 секунд, не вытаскивая свой телефон и не переписываясь, не просматривая веб-страницы, не проверяя Facebook и т. Д.

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

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

Алан Барбер
источник
Я должен задаться вопросом, действительно ли оправдано ненависть к многозадачности или, может быть, это лишь недоразумение поколений. Конечно, исследования обнаружили потерю производительности при многозадачности, но, возможно, это просто навык, который развили некоторые люди. Я уверен, что для любой новой технологии или процесса были исследования, которые показали, что они являются ужасными для производительности, прежде чем люди действительно научились эффективно их использовать
@JonofAllTrades Речь идет не о технологиях или обучении, а о том, что человеческий мозг биологически не спроектирован так, чтобы мы могли постоянно многозадачными множественными потоками мысли. Мы можем жонглировать парой разрозненных мыслей в течение коротких периодов времени, но после этого весь балансирующий акт разваливается. Это не здорово, так как вы будете умственно и физически изматываться. Вы никогда не задумывались, почему так много людей устали? Мы все усердно работаем.
Алан Барбер
Ах, но концентрация на одной вещи также утомительна, и наше внимание быстро отвлекается. Как всегда, есть счастливая среда. Я подозреваю, что однажды можно лучше научиться работать в многозадачном режиме, и что идеальный рабочий процесс, скажем, для 40-летнего ребенка 1950 года рождения отличается от 40-летнего ребенка 1990 года рождения. более больной и уставший сейчас, чем 100 лет назад; во всяком случае, мы можем позволить себе роскошь осознавать это!
8

Я согласен с тем, что предлагает @retracile, но учтите, что в соответствии с правилами программирования Zen вы должны сосредоточиться только на одной задаче за раз. Ответ на телефонные звонки, просмотр веб-страниц, социальные сети или даже многозадачность, скорее всего, снизит вашу производительность. Используйте небольшую задержку ожидания, чтобы подумать о существующей задаче / решении и о том, что вы можете сделать, чтобы улучшить ее.

sakisk
источник
8

У меня есть бар, прикрепленный к косяку

введите описание изображения здесь

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

Лукаш Мадон
источник
сколько программистов в мире могут сделать это, я удивляюсь по-настоящему сейчас
kommradHomer
2
Больше можно было бы сделать, если бы они хотя бы попытались подтянуть каждую компиляцию.
Эско Луонтола
3
Так что, если ваша IDE менее умна, вы в лучшей форме. Интересные выводы могут привести к этому.
Я получил хороший любитель, используя древний Mac с материнской платой, которая постоянно перегревалась. Я тренировался, ожидая, пока он остынет.
Мне это нравится! Чем больше положительных эмоций у разработчика, тем больше у него инструментов! @ # $.
Эрик Реппен
6

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

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

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

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

Калеб
источник
1
Проблема с закрытием вкладок браузера (или программ и т. Д.) Заключается в том, что ими слишком легко отвлекаться, когда вы закрываете их. Например, вернувшись к вопросу Stackoverflow после реализации ответа, затем увидев интересную ссылку на боковой панели и щелкнув ее ....
Бобсон,
6

Я считаю, что это помогает отслеживать фактическое время, которое я провожу, не работая

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

Шахматные часы также работают

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

Рейчел
источник
5

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

Я делал это всю свою жизнь неосознанно, но недавно нашел вики об этом: http://en.wikipedia.org/wiki/Doodle

Питер Б
источник
4

Что бы вы ни делали , не заходите ни на один из сайтов StackExchange. Они вас засосут :)

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

Я обычно делаю несколько небольших заданий, которые не займут больше 1-2 минут. (что-то чистить, писать комментарии, заметки).

Кристиан П
источник
1

В твоем случае встань и погуляй немного. Если вам трудно вернуться в «зону», возможно, это из-за того, что вы слишком далеко зашли. Работа в Интернете - это просто еще одна зона, в которой легко потерять счет времени. Дайте вашему мозгу перерыв, которого он явно хочет, и пойти на прогулку, взять волшебника, в идеале в туалете, или поговорить со случайным сотрудником. Мы делаем много вещей за кулисами на автопилоте. Перерывы не плохи для кодирования, они хороши, но идея в том, чтобы на время прекратить стрельбу по всем цилиндрам и посмотреть, что придут на задний план, пока более сознательная часть вашего ума дает ей отдых. Хорошие разработчики не люди калькуляторы. Позвольте частям вашего мозга, которые делают все интуитивное и сопоставимое с шаблоном на автопилоте, какое-то время делают свое дело.

Если это не просто проблема кодирования, вы можете рассмотреть возможность добавления.

Эрик Реппен
источник
1

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

stevegt
источник
1

Составьте план в начале каждого дня относительно того, как использовать это «свободное время». Это может включать в себя

  • справиться с некоторыми задачами документации,
  • разработка тестовых случаев для класса, который вы собираетесь написать следующим,
  • изучение какой-то новой технологии, которую вы хотели изучить,
  • написать письмо своей любимой тете,

или просто о чем угодно.

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

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

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

Дауд ибн Карим
источник
1

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

saiy2k
источник
1

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

Самсон
источник
1

Вполне возможно, у вас есть немного СДВГ. Многие люди делают. Механизмы преодоления, как указано в других ответах (или, возможно, лекарства).

Майк Данлавей
источник
1

В течение этих 10-30 секунд иди и сделай что-нибудь:

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

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

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

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

оборота BЈовић
источник
12
Лично проверка электронной почты - ужасная идея. Видите ли, это может привести к тому, что ваши 30 секунд легко превратятся в 30 минут.
Адриан
Проверка электронной почты в начале и в конце дня - один из тех советов, которые любят давать многие exec-типы. Зависит от того, насколько велика ваша компания.
Эрик Реппен
Если вам нужно 30 минут, чтобы проверить свою электронную почту - не делайте этого. Я не иду на почту, чтобы забрать мои электронные письма, поэтому для меня это 30 секунд - 3 минуты работы.
BЈовић
1
@ErikReppen, если бы я это сделал, у меня не было бы работы.
HLGEM
0

Для отвлечения внимания во время работы в Интернете, я предлагаю плагин Pomodoro, если вы используете Google Chrome

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

M3HD1
источник
0

То, что вы описываете, совершенно нормально.

Когда мы проводили исследования юзабилити, мы смотрели на задержки по порядку величины. Когда пользователь нажимает кнопку, как долго он должен ждать?

  • 0,1 с: без видимой задержки
  • 1 сек: без изменения фокуса
  • 10 сек: внимание потеряно
  • 1 мин: пользователь переключается на другую задачу
  • 10 минут: пользователь встанет и уйдет

Существует множество исключений, таких как составные операции, такие как набор текста.

Когда мы выполняли работу над производительностью, мы часто задавали вопрос: «Насколько быстрой должна быть операция X?». Ответ таков: до тех пор, пока пользователь может воспринимать задержку, быстрее будет лучше.

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

Смотрите также недавнее сообщение Джеффа в блоге (тонны хорошего контента, к которому он ведет): http://www.codinghorror.com/blog/2012/03/visualizing-code-to-fail-faster.html

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

Джей Базузи
источник
0

При выполнении специальной работы в SAS я считаю следующую строку очень полезной:

dm log 'postmessage "Code finished"' continue;

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

user46745
источник