Последствия приоритетного прерывания: контекстное переключение
Чем больше я тороплюсь, тем больше не поспеваю.
Вышивка, увиденная в городе Бунвиль, штат Калифорния
Программисты не разговаривают потому, что их нельзя перебивать… Синхронизация с другими людьми (или их присутствием в телефонах, сигналах пейджера или звонках в дверь) означает только, что ход мысли прерван. За прерываниями следуют ошибки. Вы не должны останавливаться.
Эллен Ульман
И все же опыт теории планирования может вдохновлять. В ее составе есть простые оптимальные алгоритмы для решения многих задач по планированию, максимально похожих на те, с которыми мы ежедневно сталкиваемся в быту. Но как только дело доходит до планирования работы одного устройства в реальном мире, все становится гораздо сложнее.
Прежде всего и людей, и операционные системы компьютеров ждет одно крайне любопытное испытание. Устройство, которое осуществляет планирование, и устройство, работа которого распланирована, – равнозначны. Таким образом, наведение порядка в списке ваших дел становится одним из пунктов этого списка, который сам нуждается в установлении очередности и координировании.
Во-вторых, прерывание не проходит бесследно. Каждый раз, переключаясь с задачи на задачу, вы платите за это определенную цену, известную в мире программирования как контекстное переключение. Когда внимание компьютерного процессора переключается с заданной программы, затраты вычислительных ресурсов возрастают. Процессор должен отметить место, в котором он остановился, и отложить всю информацию, относящуюся к этой программе. Затем он определяет, какую программу надо запустить в следующую очередь. Наконец, процессору необходимо извлечь всю соответствующую информацию для новой программы, найти ее место в коде и включиться в работу.
Эти переключения с задачи на задачу не относятся к «настоящей» работе, поскольку не меняют статус выполнения какой-либо из задач, между которыми компьютер переключается. Это метаработа. Каждое контекстное переключение – трата времени. У людей контекстное переключение тоже приводит к определенным дополнительным затратам. Мы ощущаем это, когда перекладываем бумаги на столе; когда открываем и закрываем файлы на компьютере; когда заходим в комнату и не можем вспомнить, зачем мы туда пришли, или когда спрашиваем «так о чем я говорил?». Психологи доказали, что у людей переключения между задачами приводят к ошибкам и задержкам памяти, которые измеряются минутами, а не микросекундами. Объективно оценивая эти цифры, можно сказать, что, перебивая человека несколько раз в час, вы напрочь лишаете его возможности работать.
На собственном примере мы поняли, что и программирование, и писательская деятельность требуют поддержания в голове целостной картины всей системы, что влечет за собой огромные издержки на контекстные переключения. Наш друг-разработчик утверждает, что стандартная рабочая неделя не очень подходит его привычному рабочему процессу, поскольку для него 16-часовой рабочий день в несколько раз продуктивнее, чем 8-часовой.
Брайан, например, сравнивает написание текстов с кузнечным делом, когда вначале надо немного раскалить металл, пока он не станет податливым.
Он считает, что абсолютно бесполезно уделять подготовке материалов для книги меньше 90 минут, потому что первые полчаса уходят только на то, чтобы вспомнить, «на чем же я остановился». Эксперт в области планирования Кирк Прус из Питтсбургского университета поделился аналогичным личным опытом. «Если у меня есть только полчаса свободного времени, я лучше займусь простыми делами, поскольку первые 35 минут мне требуются, только чтобы осознать, что именно я хочу сделать, а потом у меня уже может и не остаться времени на это».
Знаменитое стихотворение Редьярда Киплинга «Если» заканчивается энергичным призывом к тайм-менеджменту: «Наполни смыслом каждое мгновенье, // Часов и дней неумолимый бег…»
Если бы можно было это сделать. Правда такова: издержки есть всегда – время, потраченное на выполнение метаработы, на обеспечение вспомогательных действий и управление процессами. Это один из самых значительных компромиссов планирования: чем больше вы на себя берете, тем больше издержки. И в своей кошмарной крайности он превращается в феномен пробуксовки.