«А что делать, если все дела в списке имеют приоритет А?» Прочитать эту главу.
Выполнение дел в порядке их следования в списке
Я часто слышу от системных администраторов, что у них уйма времени уходит на размышления о том, что делать дальше. Я и сам замечал, что могу потратить пять и больше минут только на то, чтобы читать список дел и думать, какой пункт выполнить следующим. Если суммировать все это время, получится не так уж мало.
Если вы теряете время на раздумья о том, что делать дальше, остановитесь. Упростите процедуру принятия решений до предела: просто начните с первого пункта списка и двигайтесь сверху вниз. За то время, что вы сидите и размышляете, вы смогли бы выполнить пару простых дел. Кроме того, в результате переноса невыполненных пунктов на следующий день более старые пункты всплывают к началу списка. Если вы выполните их в первую очередь, это будет хорошим началом дня.
♥ В детстве моей домашней обязанностью было выносить мусор вечером в понедельник и четверг. Я это ненавидел. Я жаловался на судьбу, откладывал до последнего и всячески пытался избежать этой обязанности. (Думаю, все дети так же относятся к домашним обязанностям.) Хоть это и был большой, трехэтажный викторианский дом, мне хватило бы десяти минут на то, чтобы опорожнить все мусорные корзины. Но вот что занятно! Прежде чем взяться за дело, я изобретал тысячу способов задержаться, теряя при этом полчаса. Есть много ситуаций, когда собственно на дело уходит гораздо меньше времени и усилий, чем на попытки его избежать.
Выполнять дела в том порядке, в каком они идут в вашем списке, гораздо лучше, чем откладывать их на потом. Приведу лозунг фирмы Nike: «Просто сделай это».
Если ваш список настолько короткий, что вы можете переделать все дела за один день, такой подход тем более оправдан. Если неважно, в какое время дня вы выполнили ту или иную задачу, не все ли равно, в каком порядке вы их выполняли?
Здесь уместна аналогия с загруженностью компьютерной сети. Когда нагрузка невелика, службы, связанные с телефонией, не испытывают проблем. Но когда нагрузка в сети возрастает, эти службы работают лучше, если принята одна из более сложных схем расстановки приоритетов или система оценки качества обслуживания (quality of service, QoS). При малой нагрузке годится любая схема. При большой требуется что-то более структурированное. Если список дел невелик, можно расставлять приоритеты как угодно. Если мы завалены делами, нам потребуется схема посложнее.
Развивая аналогию, хочу спросить вас: знаете ли вы, что система оценки качества обслуживания часто сводится не к тому, что какие-то пакеты обслуживаются лучше? Фактически она сводится к тому, что некоторые пакеты обслуживаются хуже! Если разобраться, внутри системы оценки качества обслуживания происходят довольно любопытные вещи. При небольшой загрузке сеть работает так, словно никакой системы оценки качества нет. Пакеты приходят и уходят. Но когда нагрузка возрастает, отсутствие системы оценки качества приводит к отбрасыванию любого пакета, поступившего последним. Иными словами, в буфере нет места для новых пакетов, и они игнорируются. Совсем другое дело, если работает система оценки качества обслуживания. Когда буфер переполнен, последний пакет не отбрасывается; вместо этого из буфера выкидывается пакет с более низким приоритетом. То есть, платя интернет-провайдеру за лучшее обслуживание при определенном трафике, вы платите за то, чтобы вас не выкинули при повышенной нагрузке. Вы буквально даете провайдеру взятку, чтобы, когда нагрузка в сети возрастает, он выкидывал пакет другого клиента!
То же самое происходит при расстановке приоритетов ваших заданий. В вашем распоряжении ограниченные ресурсы и ограниченный запас времени. Если мы завалены работой, то начинаем недовольно ворчать по поводу любого нового запроса. В действительности же нам следует просмотреть список текущих дел и определить, нет ли там пунктов, выполнение которых можно отсрочить. (К сожалению, взятки нам не светят!)
Расстановка приоритетов с учетом ожиданий клиентов
Вот маленький секрет, который я узнал от Ральфа Лоуры (Ralph Loura), когда он был моим начальником в Bell Labs. Если у вас имеется список дел, то при любом порядке их выполнения будет затрачено (примерно) одно и то же время. Однако если вы будете выполнять их в том порядке, какого ждут от вас клиенты, они будут считать, что вы работаете быстро. При том же объеме работы для вас больше понимания у клиентов. Круто, а?!
Чего же ждут от вас клиенты? Разумеется, каждый из них хочет, чтобы его запрос был выполнен немедленно, тем не менее, отдавая себе отчет в том, что на все требуется время. Представление может быть далеким от реальности часто по причине непонимания компьютерных технологий, но все же мы можем разбить ожидания пользователей на несколько категорий:
• Некоторые запросы должны выполняться быстро. В качестве примеров можно привести восстановление пароля, выделение IP-адреса и удаление защищенного файла. У таких запросов есть одна общая особенность. Как правило, это малозначительные дела, которые задерживают выполнение чего-то серьезного (со стороны пользователя). Представьте себе раздражение пользователя, который не может приступить к работе, пока не восстановлен пароль, а вы выполняете его просьбу лишь через несколько часов.
• Срочные задачи, включающие период ожидания («Поспеши и подожди»), должны начинаться как можно раньше. Задачи, выполнение которых предшествует другим задачам, должны, по мнению пользователей, начинаться безотлагательно. Например, заказ какой-нибудь детали включает в себя собственно размещение заказа и долгий период ожидания поставки. Только после этого вышедшую из строя деталь можно заменить на новую. Если ожидание длится две недели, то пользователь рассчитывает, что вы быстро сделаете заказ, и две недели не растянутся на три.
• Некоторые запросы выполняются долго. Сюда относятся установка нового компьютера, создание службы «с нуля» и вообще все, что связано с поставкой товаров. Даже если продавец обещает доставку в течение суток, люди понимают, что их запрос нельзя выполнить немедленно.
• При аварийной ситуации вся остальная работа прекращается. Последняя категория — аварийные ситуации. Пользователи не только считают, что в таких случаях приостанавливается любая другая работа, но и верят в то, что все системные администраторы заняты ликвидацией аварии. Как правило, пользователи не знают, что в группе системных администраторов есть разделение труда.
Теперь, лучше представляя ожидания клиентов, вы можете воспользоваться этим знанием. Как? Предположим, ваш список дел выглядит так, как показано на рис. 8.1.
Выполнив эти дела в том порядке, в каком они перечислены, вы, скорее всего, будете весьма довольны своей производительностью. Вы сделали все в тот день, когда требовалось, и у вас ушло шесть с половиной часов (плюс час на обед). Очень неплохо для вас.
Рис. 8.1. Задачи, не упорядоченные в соответствии с ожиданиями пользователей
Однако ваша деятельность разошлась с представлениями клиентов о том, сколько времени должно уйти на решение их проблем. Сотрудник, сделавший запрос Т7, был вынужден целый день ждать того, на что, по его мнению, требуется пара минут. Если бы этим клиентом был я, то вспылил бы. Из-за отсутствия IP-адреса на целый день задержалась установка нового лабораторного оборудования.
(На самом деле, скорее всего, раздраженный нетерпеливый клиент не стал бы ждать целый день. Он «пинговал» бы IP-адреса до тех пор, пока не нашел свободный на тот момент и не воспользовался бы им. Мог случиться какой-нибудь конфликт, и вся система перестала бы работать, и вы потеряли бы на этом целый день. Впрочем, я отвлекся…).