Летом 1997 года космический аппарат NASA Pathfinder приземлился на поверхность Марса и начал передавать на Землю невероятные снимки. Но спустя несколько дней что-то пошло не так - передачи прекратились.
Pathfinder по сути прокрастинировал: был полностью занят, но не делал самого главного.
Что происходило? Выяснилось что в его планировщике была ошибка. В каждой операционной системе есть компонент под названием планировщик - он сообщает процессору сколько времени тратить на каждую задачу перед переключением и на что переключаться. Когда всё работает правильно компьютеры так плавно переходят между задачами что создают иллюзию одновременного выполнения всего. Но мы все знаем что происходит когда что-то идёт не так.
Это должно нас немного утешить: компьютеры тоже иногда не справляются. И возможно изучение компьютерной науки о планировании поможет нам разобраться с нашими собственными трудностями со временем.
Квадратичный алгоритм
Первый вывод: всё время которое вы тратите на расстановку приоритетов - это время которое вы не тратите на работу.
Допустим при проверке почты вы просматриваете все письма и выбираете самое важное. Разобравшись с ним повторяете. Звучит разумно - но в этом есть проблема.
Это так называемый алгоритм квадратичного времени. Если входящих вдвое больше обычного каждый такой проход займёт вдвое дольше и проходов нужно будет вдвое больше. Итого: в четыре раза больше работы.
С похожей проблемой столкнулись разработчики Linux в 2003 году. Linux выстраивал все свои задачи в порядке важности и порой тратил на ранжирование больше времени чем на их выполнение. Решение программистов: заменить полное ранжирование ограниченным числом приоритетных корзин. Система стала менее точной в выборе следующего шага но с лихвой компенсировала это проводя больше времени в реальной работе.
Так что с почтой: настаивать на том чтобы всегда делать самое важное первым может привести к коллапсу. Если входящих втрое больше обычного на разбор уйдёт в девять раз больше времени. Лучше отвечать в хронологическом порядке или даже в случайном.
Иногда отказ от идеальной последовательности и есть ключ к тому чтобы всё сделать.
Прерывания
Ещё один вывод из компьютерного планирования связан с одной из самых распространённых черт современной жизни - прерываниями.
Когда компьютер переходит от одной задачи к другой он выполняет так называемое переключение контекста: сохраняет место в текущей задаче, выгружает старые данные из памяти и загружает новые. Каждое из этих действий имеет свою цену.
Ключевая мысль: между продуктивностью и отзывчивостью существует фундаментальный компромисс. Серьёзная работа требует минимума переключений контекста но готовность реагировать означает отклик на всё что возникает. Эти два принципа находятся в непримиримом противоречии.
Понимание этого противоречия позволяет решить где именно найти баланс. Очевидное решение - минимизировать прерывания. Менее очевидное - группировать их. Если ни одно уведомление или письмо не требует ответа чаще чем раз в час - именно с такой частотой и стоит их проверять. Не чаще.
В информатике эта идея называется коалесценцией прерываний. Вместо того чтобы реагировать на каждое событие по мере поступления - мышь сдвинулась, клавиша нажата, файл загрузился - система группирует эти прерывания по тому сколько они могут ждать.
В 2013 году коалесценция прерываний дала значительный прирост времени работы ноутбуков от батареи: откладывая обработку прерываний система успевала проверить всё сразу а затем быстро вернуться в режим низкого энергопотребления.
Как с компьютерами - так и с нами. Возможно похожий подход позволит нам вернуть себе внимание и то что стало таким редким в современной жизни - покой.
Материал основан на лекции TED “How to manage your time more effectively (according to machines)” — Brian Christian. Перевод и адаптация на русский язык.
