Як ви підтримуєте фокус, коли певний аспект програмування займає 10+ секунд? [зачинено]


141

У мене дуже важкий час зосередитися на тому, що я роблю (з урахуванням програмування), коли щось (компіляція, час запуску тощо) займає більше ніж кілька секунд. Анекдотично здається, що поріг становить близько 10 секунд (і я пам'ятаю, читаючи про дослідження, яке говорило те саме, хоча я зараз не можу його знайти). Тож зазвичай відбувається те, що я вношу зміни та запускаю програму для тестування. Це займає близько 30 секунд, тож я починаю читати щось інше, і перш ніж дізнатися про це минуло 20 хвилин, а потім потрібно (якщо мені пощастить!) Ще 10+ хвилин, щоб вирішити контекстний перемикач, щоб повернутися до програмування .

Не можна перебільшувати, що на те, що на деякі речі, які потребують хвилин, буквально потрібно кілька годин.

Мені дуже цікаво, що роблять інші програмісти для боротьби з цією тенденцією (або якщо я унікальний, і вони не мають цієї тенденції?). Пропозиції будь-якого типу взагалі вітаються - від "сісти на руки після натискання кнопки компіляції", до розумових хитрощів, до "якщо потрібно 30 секунд, щоб щось запустити, щоб перевірити зміну, то щось не так у вашому процесі розвитку ! "


24
У мене є аналогічна проблема (звідси і цей коментар :)). Я знайшов, що насправді допомагає - це менше кави вранці, або взагалі немає. Я також намагаюся працювати вранці і розкладати зустрічі в другій половині дня. Сподіваюся, що це допомагає .... ой виглядайте кошеня.
DevSolo

7
Ви маєте справу з формою зволікання - ворогом знавців з усього світу.
Адітя МП

130
Arrrg !! Я роблю це зараз - дякую за нагадування - повертаюся до роботи.
mjhm

8
Зазвичай я провожу цей час на веб-сайтах SE, читаючи запитання, відповідаючи, що я можу допомогти іншим розробникам, і дізнаюся щось нове в цьому процесі.
Бернард

6
Ви повинні почати розробку для SharePoint b / c, там ви насправді повинні зачекати 20 хвилин :)
kev

Відповіді:


117

Я написав невелику утиліту командного рядка під назвою «тривога» , яка призведе до комп'ютера звукового сигналу / відтворення звуку / і т.д. Потім, коли у мене є широка команда для запуску , таких як make, я біг make; alert. Де я можу, я також змушу його взяти аргумент, тому він видає різний звук залежно від аргументу. Таким чином я можу зробити, make; alert $?і я буду знати, що: a) збірка зроблена, і b) вона пройшла або не вдалася. Вам не потрібно бути таким фантазійним; просто echo -e "\a"може бути достатньо.

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

Основна ідея тут - перервати відволікання, як тільки завдання, пов’язане з роботою, завершиться.


6
Короткий приклад:MSG="back to work" && xmessage -buttons ok -default ok -nearmouse "${MSG}" 2> /dev/null
sakisk

6
@faif У такому випадку ви хочете використовувати ;замість &&. Ваш другий приклад запуститься лише за show_messageумови makeуспіху, що не зовсім те, що ви хочете. Щоб було зрозуміло: мені подобається приклад, який ви подали, я просто вибагливий щодо деталей реалізації. ;)
втягнення

2
Я написав швидку програму командного рядка, яка надсилає мені повідомлення електронною поштою, коли певне завдання закінчиться - тому, якщо я покину кімнату, щоб зробити якісь ІТ-речі в очікуванні, мій телефон подасть звуковий сигнал, щоб сказати мені повернутися до свого офісу та закінчити що я робив.
Філ

7
+1 за відволікання від відволікання - боріться з вогнем! Таким чином, вас не звільнять!
corsiKa

1
Ubuntu має гарне налаштування псевдонімів попередження у .bashrc. Це залежить від libnotify, але якщо він встановлений, ви можете це зробити, command; alertі він видасть вам сповіщення на робочому столі, коли буде закінчено, вказавши, яка команда була виконана. Дійсно корисний для тривалих збірок або тестів.
Лев

104

У мене така ж проблема, і рішенням для мене було витратити час на те, щоб зробити щось, що не змусить вас засмоктатися. Для мене це зазвичай або (1) наповнення пляшки водою, або (2) стояння і роблячи 30-секундну прогулянку по кабінету, щоб розтягнути ноги, які так чи інакше потребують руху. Ви можете заблукати, переглядаючи Інтернет; ви рідко губитесь, гуляючи навколо власної кабіни.


37
+1 за швидку прогулянку / розтяжку. Це ми повинні робити все частіше.
Джон Перді

2
Це добре працює в поєднанні з моєю відповіддю ... встановіть ваші динаміки досить голосно, щоб чути їх по кімнаті під час прогулянки, щоб ви могли скоротити його. (На
кшталт

1
+1, роби щось, що займає не більше 10 секунд. Випити. Візьміть жувальну гумку. Подивіться у вікно, якщо вам пощастить, щось може статися зовні. Якщо ви слухаєте музику, перевірте, що відбувається у вашому списку відтворення, або додайте кілька композицій.
Лоран Кувіду

2
Я також додам, використовую туалет :) Часто, коли я вперше встаю після довгого сеансу кодування, я вважаю, що мені справді потрібно використовувати сантехніку, як то кажуть, як кажуть. Використовуйте ці перерви, щоб подбати про себе.
ейканал

4
Поки ви не поговорите з дияволом у наступному сидінні / кубіку над ... зараз це 20-хвилинний чат замість 20 хвилин перегляду.
Стівен Еверс

29

Зробіть щось для свого здоров’я:

Встаньте, відійдіть від комп'ютера і виконайте кілька вправ на розтяжку рук і рук. Це займе 2-5 хвилин макс. Ваш майбутній я, який не страждає від RSI, вдячний вам за це.

Також щодо перерви на 2-5 хвилин прочитайте техніку Помодоро . Це ґрунтується на ідеї частого перерви, щоб зняти свій розум від поточного завдання і дозволити речам трохи зануритися. Це досить коротка перерва, щоб не втратити свій порядок думки повністю, але досить довго, щоб дати вашому мозку подихати.


10
І вам навіть не доведеться вставати - просто заплющивши очі, щоб відпочити їх на 30 секунд, допоможе зберегти їх вологими та менш втомленими.
JBRWilkinson

1
Це чудова відповідь (допомагає спалити нервову енергію) і техніка помодоро може працювати, якщо ви досить дисципліновані.
DevSolo

1
+1. Маючи стіл з регулюванням висоти, також допомагає. Я виявив, що коли я стою, я набагато продуктивніший, тому що під час цих коротких пауз (компіляції тощо) я побігаю трохи роздумуючи над тим, над чим працюю, і як тільки завдання виконане, я йду повернутися до роботи. Можливо, це лише я, але мені подобається багато рухатись, коли я думаю, і крокувати допомагає.
Paperjam

1
Ніколи не чув про Помородо, але я давно прихильник ідеї про те, що вам потрібно робити періодичні перерви, щоб дати вашому більш свідомому розуму відпочити і дозволити вашим спинним пальникам на деякий час розібратися. Є причина, що в душі та ванній кімнаті трапляється багато моментів.
Ерік Реппен

25

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

Джоел Спольський також пояснює, що означає "не бути в зоні" . Щоразу, коли щось заважає тобі виконувати свою роботу, вам доведеться витратити десять хвилин, часто більше, щоб повернутися в зону і знову стати продуктивними.

Існує безліч відволікань:

  • Телефонний дзвінок від вашої дружини,
  • Телефонний дзвінок діловій особі в офісному приміщенні, близькому до вашого,
  • Колега, який просить вас про допомогу,
  • Будучи голодним,
  • Маючи особисті проблеми,
  • Доводиться працювати над застарілим кодом, написаним недосвідченим розробником десять років тому і ніколи не відновлювався,
  • Маючи повільний ПК або повільне підключення до Інтернету,
  • Маючи довгий процес компіляції,
  • тощо.

Тут немає нічого спільного. Єдине, що ви можете зробити - це видалити самі відволікання:

  • У вашому офісі немає телефонів,
  • Тихі умови праці,
  • Швидкий доступ до комп’ютера та Інтернету,
  • Швидкий процес компіляції,
  • тощо.

У вашому випадку, якщо компілятор вас відволікає, спробуйте скоротити час компіляції на:

  • Зменшення розміру вашої програми (деякі IDE, наприклад, дозволяють вивантажувати деякі проекти з рішення, сильно скорочуючи час компіляції),
  • Використовуючи нічні побудови та менше збираючи під час роботи,
  • Купуючи більш швидку машину (якщо більше нічого не робити),
  • тощо.

9

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

Вам потрібно перекваліфікуватись, щоб не відчувати необхідності постійно бути в курсі та активно робити справи. Це дуже згубна проблема, яка торкається не лише розробників, а всіх людей. Суспільство одержиме потребою в постійному стимулюванні (зоровому, аудіо, розумовому). Здається, ніхто не може стояти без роботи довше 30 секунд, не виймаючи телефон і текстові повідомлення, веб-серфінг, перевіряючи facebook тощо.

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

З часом це стане простіше, і ви побачите, що у вас буде набагато кращий досвід роботи, коли ви перестанете намагатися підтримувати мозок на 100% протягом усього дня.


Мені потрібно задуматися, чи справді виправдання багатозадачності чи багатозадачність чи це, мабуть, лише покоління нерозуміння. Звичайно, дослідження виявили втрату продуктивності під час багатозадачності, але, можливо, деякі навички розвивались. Щодо будь-якої нової технології чи процесу, я впевнений, що були дослідження, які визнали їх жахливими для продуктивності, перш ніж люди справді навчились ефективно ними користуватися

@JonofAllTrades Йдеться не про технологію чи навчання, це відомий факт, що людський мозок не є біологічно розробленим, щоб дозволяти нам безперервно виконувати багатозадачні потоки думок сумління. Ми можемо жонглювати парою роз'єднаних думок за короткий проміжок часу, але поза цим весь балансуючий акт розпадається. Це не здорово, оскільки ви будете душевно і фізично зношуватися. Ніколи не замислювалися, чому так багато хворих і втомилися? Ми всі докладаємо зусиль.
Алан Барбер

Ах, але зосередитися на одному - це теж виснажує, і наша увага швидко блукає. Як завжди, є щасливий засіб. Я підозрюю, що колись можна навчитися робити багатозадачність краще, і що ідеальний робочий процес для, скажімо, 40-річного віку, народженого в 1950 році, відрізняється від 40-річного, народженого в 1990 році. Я не вважаю, що ми будь-які більше хворих і втомлених зараз, ніж 100 років тому; якщо що, ми можемо дозволити собі розкіш усвідомлення цього!

8

Я погоджуюся з тим, що пропонує @retracile, але зауважте, що згідно з правилами програмування Zen, ви повинні зосередитися лише на одному завданні. Відповідь на телефонні дзвінки, перегляд Інтернету, соціальних мереж або навіть багатозадачність, швидше за все, знизить вашу продуктивність. Використовуйте коротку затримку очікування, щоб подумати про існуючу задачу / рішення та що ви можете зробити для її вдосконалення.


8

У мене на бруску прикріплений брусок

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

Я можу зробити лише 5 підтяжок, тому це займе менше хвилини. Або я роблю чашку чаю.


скільки програмістів на землі може підтягнути, я дивуюсь реально зараз
kommradHomer

2
Більше можна зробити, якби вони хоча б спробували зробити підтягування для кожної компіляції.
Еско Луонтола

3
Тож якщо ваш IDE менш розумний, ви перебуваєте в кращій формі. Цікаві висновки можуть призвести до цього.

Я отримав гарненьке використання за допомогою стародавнього Mac з материнською платою, яка постійно перегрівалася. Я працював, чекаючи, поки він охолоне.

Я люблю це! Чим більше баф розробника, тим більше! @ # $ Рівень його інструменти.
Ерік Реппен

6

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

Коли я кодую, це означає, що закриваю програми, які я не використовував останнім часом, регулярно обрізаючи вкладки браузера, а також захищати робочий стіл від предметів, які не мають безпосереднього відношення до моїх поточних проектів. Я використовую десять секунд затримок, щоб "зробити раунди", так би мовити - закрити вкладки, закрити програми, видалити тимчасові файли та архівувати те, що потрібно архівувати тощо.

Звичка "робити круги" також допомагає запобігти кролівничі сліди, оскільки це змушує мене постійно оцінювати - і нагадувати про - будь-які поточні завдання.

Ви повинні заплатити невелику ціну, коли вам доведеться повторно відкрити вкладку, яку ви вже відкрили сьогодні 5 разів, або вдруге запустити командний рядок із підвищеними привілеями, але використання прискорювачів, таких як комбінації клавіш, може вирішити це дійсно дуже невелика ціна


1
Проблема із закриттям вкладок браузера (або програм тощо) полягає в тому, що занадто легко відволікатися на них, коли ви збираєтесь їх закрити. Наприклад, повернення до питання Stackoverflow після впровадження відповіді, потім побачення цікавого посилання на бічній панелі та натискання на нього ....
Бобсон

6

Я вважаю, що це допомагає відстежувати фактичний час, який я проводжу не працюючи

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

Також працює шаховий годинник

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


5

Для моєї уваги я використовую логотипи. Я завжди маю ручку та блокнот, що лежить позаду моєї клавіатури та каракулі. Це не більше ніж скрабування на аркуші паперу без будь-якого сенсу, але він тримає мою увагу досить просто і не відволікає мене, щоб я міг одразу повернутися до того, над чим працював.

Я робив це все життя несвідомо, але нещодавно знайшов вікі про це: http://en.wikipedia.org/wiki/Doodle


4

Що б ви не робили, не відвідуйте жоден із сайтів StackExchange. Вони будуть вас смоктати :)

Більш серйозно, переглядаючи Інтернет, очікуючи, що щось закінчиться, це не добре для продуктивності (якщо тільки ви не досліджуєте щось, що стосується поточного завдання).

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


1

У вашому випадку встаньте і трохи пройдіться. Якщо важко повернутися в "зону", це, мабуть, тому, що ви занадто далеко. Робити речі в Інтернеті - це просто інша зона, і це легко втратити час у часі. Дайте своєму мозку перерву, якого він чітко хоче і піти на прогулянку, взяти майстра, в ідеалі в туалет, або поговорити з випадковим колегою. Ми багато чого робимо за лаштунками на автопілоті. Перерви не погані для кодування, вони хороші, але ідея полягає в тому, щоб перестати стріляти по всіх циліндрах на деякий час і подивитися, що придумують ваші задні пальники, тоді як більш свідома частина вашого розуму дає йому відпочинок. Хороші дияволи - це не калькулятори. Дозвольте частинам вашого мозку, які роблять усі інтуїтивно зрозумілі та зразкові речі на автопілоті, на деякий час робити свою справу.

Якщо це не лише проблема кодування, ви можете розглянути можливість додавання.


1

Пропозиції встати, прогулятися і т. Д. Хороші, якщо ваші цикли довгі (годину або близько того). Але коли час циклу скорочується, і я виявляю, що вискакує туди-сюди між vim і роблю кожні кілька хвилин, тоді я залишаюсь у зоні, залишаючись в конвеєрі: Поки збірка або тест працює, я схильний повертатися назад і перегляньте код, а потім починайте працювати над наступним фрагментом, який я все одно буду робити, якщо збірка чи тести все-таки вдаються.


1

На початку кожного дня складіть план щодо використання цього «вільного часу». Це може включати

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

або майже нічого, що насправді.

Нехай це вторинне завдання завжди відкриється у вікні десь на робочому столі. Як тільки ви натиснете кнопку "компілювати" (або що завгодно, це займе у вас більше 30 секунд), перейдіть на вторинну задачу і поставте достатньо часу, щоб насправді рухатись вперед, а це може бути пару хвилин, або може бути менше.

Поки ви робите другорядне завдання, майте на увазі, що це не те, на чому слід зосередитись на вашому мозку. Продовжуйте думати про програмування. Це непросто; ви все одно будете страждати від переключення контексту частіше, ніж ні.

Якщо ви це зробите, навіть якщо багато разів втрачаєте контекст, ваш втрачений час насправді не витрачається даремно, і ви маєте щось показати для цього в кінці дня. Але найголовніше - спланувати на початку дня, яким буде другорядне завдання дня.


1

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


1

Зазвичай я просто намагаюся тим часом шукати помилки, помилки друку чи способи покращити стиль коду. Це змушує мене дивитися на код, але я (завжди) не відволікаюся на щось цікаве. Також це !


1

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


1

Протягом цих 10-30 секунд йдіть і робіть щось:

  • що не вимагає великої розумової діяльності
  • відкрийте код, який ви компілюєте, і перевірте його ще раз (можливо, ви знайшли щось не так

За цей час не робіть речі, які знаєте, що це займе у вас довго (якщо ви не можете дозволити собі витратити якийсь час), наприклад:

  • починаючи читати книгу
  • читайте електронні листи, якщо знаєте, що це може зайняти багато часу
  • тощо

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


12
Особисто перевірити електронну пошту - це жахлива ідея. Розумієте, це може стати таким присоском часу, що ваші 30 секунд можуть легко стати 30 хвилин.
Адріан

Перевірка електронної пошти на початку та в кінці дня - це один із тих порад, які багато хто бажає дати. Залежить від того, наскільки великою є ваша компанія.
Ерік Реппен

Якщо вам потрібно 30 хвилин, щоб перевірити свою електронну пошту - не робіть цього. Я не заходжу на пошту, щоб отримати свої електронні листи, тому для мене це 30 секунд - 3 хвилини роботи.
BЈович

1
@ErikReppen, якби я це зробив, у мене не було б роботи.
HLGEM

0

Для відволікання на Інтернет під час роботи взагалі я пропоную плагін Pomodoro, якщо ви використовуєте Google Chrome

Я особисто думаю, що ви не можете бути продуктивними протягом усього робочого часу! оскільки ви складаєте, це означає, що ви доклали достатньо зусиль, щоб зробити подих ... щоб не зловживати чи виходити з контексту, продовжуйте думати про наступний крок, якщо компіляція не створює помилок ... Або очистіть свою роботу область: Настільний ПК, вкладки, Провідник ...


0

Те, що ви описуєте, абсолютно нормально.

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

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

Винятків існує безліч, таких як складні операції, такі як введення тексту.

Коли ми виконували роботу з виконанням, ми часто задавали собі питання "наскільки швидкою повинна бути операція X?" Відповідь - доки користувач може сприймати затримку, швидше було б краще.

У вашому випадку ви досягаєте межі 10s, і ваша увага відходить. Найкраще, що ви можете зробити, це зменшити затримку. Чим коротша затримка, тим більша ваша продуктивність. Уявіть, що у вас був код у лівій частині екрана та запущений додаток праворуч. Під час редагування коду додаток змінюється в режимі реального часу. Поки ви там не встигнете покращитись.

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

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


0

Виконуючи спеціальні роботи в SAS, я вважаю такий рядок дуже корисним:

dm log 'postmessage "Code finished"' continue;

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.