— И играли, и играли… — смеется Рут.
— Симулирование на компьютере — это отличный способ тянуть время, — соглашается Марк. — Мы устраняли самую незначительную конкуренцию, то, на что мы бы даже не обратили внимания, если бы нам пришлось это делать вручную. Но мы устранили всю конкуренцию. Естественно, после этого, как и предсказал Тед, нам пришлось сражаться со всеми управляющими проектами.
— В двух словах, нам удалось выжать из них согласие, — сводит Фред многие дни отчаянных споров в одно короткое предложение.
— А потом реальность показала, какими дураками мы были. Кто-нибудь догадывается, что случилось? — обращается Марк к классу.
Все сосредоточенно думают, но идей ни у кого нет. Даже Тед молчит.
Марк не заставляет нас долго ждать.
— Вы когда-нибудь сталкивались с тем, что элемент заканчивается несколько позже? — подсказывает он им. — Одно незначительное отклонение в одном элементе и БАБАХ! — вы получаете эффект домино, конкуренцию повсюду. Мы все свое время тратили на сражения. Тед, ты назвал это кошмаром? Ты абсолютно прав.
— Я представляю себе. Такое легко может случиться и у нас. И что вы тогда сделали?
— Прежде, чем вы расскажете нам о своем решении, — вмешиваюсь я — вы можете объяснить, какую концептуальную ошибку вы допустили?
— Мы брали оценки по времени так, как если бы это были реальные значения, — отвечает Рут.
— Что вы имеете в виду? — подталкиваю я ее к более детальному объяснению.
— Предположим, что элемент должен длиться десять дней. На самом деле, на него может уйти семь дней или пятнадцать дней, но мы вводили в компьютер десять и потом смотрели на это число, как на священное.
— Я все еще не понимаю, — говорю я.
— Мы рассматривали конкуренцию в три дня как значительную, даже если время оценки для пути было тридцать дней.
— По сути дела, — подключается Фред, — мы попали в ловушку того, что считали, что восемью восемь — шестьдесят четыре. Мы старались быть точнее, чем шум. Все сражались из-за конкуренции, которая, если бы мы ее не трогали, была бы легко поглощена буферами.
— В результате мы постоянно впустую меняли графики, вызывая этим реальные проблемы, — подводит итог Марк.
— Понятно, — говорит Брайен. — Спасибо, что поделились этим с нами. Теперь я знаю, чего не надо делать. Но я не знаю, что надо делать. Мы же не можем просто проигнорировать конкуренцию за ресурсы.
— Не можем, — соглашается с ним Марк. — Ни тогда, когда у нас один проект, и определенно ни тогда, когда мы смотрим на все проекты.
— Теперь вы видите, перед какой мы оказались дилеммой? — спрашивает Фред. — С одной стороны мы должны были учитывать конкуренцию, с другой — когда мы это делали, мы создавали кошмар.
— Ну так что вы сделали? — Брайену хочется скорее услышать ответ.
— Мы пригласил профессора Силвера, чтобы он нам помог.
— В чем не было никакой необходимости, — подчеркиваю я. — Вы знали ответ. Вы просто поленились его понять.
— Это несправедливо! — восклицает Рут. — Даже после того, как вы нам его показали, у меня еще ушло какое-то время, чтобы его понять.
— Ответ был показан вам профессором Фишером на лекциях по управлению производством и затем в деталях разобран профессором Уилсоном на лекциях по системам.
Я знаю, что мое заявление несправедливо. У меня самого ушли недели прежде, чем я смог найти ответ. Но я хочу, чтобы мои студенты поняли, что можно перенести хорошую концепцию из одной области в другую.
— Мы сейчас говорим о конкуренции за ресурс, — начинаю я объяснение. — Вы затрагивали эту проблему на лекциях по управлению производством?
— Конечно, — отвечает Брайен. — Каждый раз, когда перед станком есть очередь и приоритеты неясны, у нас возникает конкуренция за ресурс. Несколько заданий сражаются за то, чтобы быть обработанным тем же самым ресурсом в то же самое время.
— Именно, — подтверждаю я. — И как вы справляетесь с таким случаем? Вы учили, что глупо пытаться составлять график для каждого станка. Что вы должны делать?
— Определить бутылочное горлышко, — говорит Чарли.
— А потом?
— Потом максимально его использовать — сделать график работы для бутылочного горлышка.
— И этим, — говорю я, — вы устраняете любую конкуренцию в ограничении. Вы не просите ограничение сделать две вещи в одно и то же время. А потом? Чарли?
— А потом мы подчиняем. Подчиняем этому все остальные ресурсы.
— И какой результат? — спрашиваю я. А у меня начинают получаться риторические вопросы. Риторические только для тех студентов, кто учился у Джонни.
— Благодаря этому, — отвечает Чарли, — мы устраняем большинство перегрузки на другие ресурсы. А спорадические пики нагрузки, которые могут иметь место, будут поглощены буферами.
— Именно, — торжествующе говорю я. — А почему мы не делаем то же самое в проектах?
— Но в проектах у нас нет бутылочного горлышка, — слишком быстро отвечает Тед.
— Неужели? — иронически спрашивает Марк. — У тебя в фирме нет бутылочного горлышка? Не забывай, мы говорим не об одном проекте, а обо всех.
— Ясно.
— И каков эффект непризнания такого бутылочного горлышка? — спрашиваю я. — Это не только создает хаос из-за попытки синхронизировать несколько проектов. Вы получите тот же губительный эффект, что и на производстве. Если мы не будем уделять бутылочному горлышку специального внимания, не будем защищать его от Мерфи буферами, это неизбежно приведет к тому, что мы будем терять в нем время.
— А это вызывает уменьшение общего прохода фирмы, — подключается Фред. — Таким образом, мы делаем меньше проектов, чем могли бы.
— Итак, — продолжает Марк, — мы нашли бутылочное горлышко. Это было легко. Мы это знали все время. Это наш отдел цифровой обработки. И потом мы составили график их работы.
— Как? — перебивает Брайен.
— Так же как это делается на производстве. Там приоритеты в основном определяются датой отгрузки заказа. В нашем случае — планируемой датой завершения проекта.
— А оттуда уже было легко, — продолжает Рут. — Мы рассмотрели каждый проект как стоящий отдельно. Воздействие других проектов было учтено за счет дополнительной информации, которую мы получили в результате составления графика для отдела цифровой обработки.
Для большинства это объяснение слишком сжато. И Фред объясняет детали:
— Каждый проект имеет элементы, которые исполняются отделом цифровой обработки. График работы этого отдела определил конкретные даты старта и финиша этих элементов. Для каждого проекта мы сначала делали расчеты таким образом, как будто других проектов не существовало. Я имею в виду расчеты по устранению любой значительной конкуренции за ресурсы. И потом мы поставили каждый проект так, чтобы он соответствовал графику отдела цифровой обработки.