Критическая цепь.

24.

Сегодня последнее занятие в этом академическом году, и я собираюсь нарушить традицию. Обычно к концу года у меня заканчивается пар, или, что еще хуже, интересный материал. Но не на этот раз. На этом занятии мы будем разбирать решение проблемы, которая не давала мне покоя несколько недель. Это будет особенное занятие. Я даже пригласил на него Джонни.

— Марк, вы не могли бы описать среду, в которой вы теперь работаете?

Марк встает и наполняет аудиторию своим густым голосом.

— Как вы знаете, А266 мы уже не занимаемся. Для нас этот модем теперь уже история.

— Но для нашей фирмы это сегодняшняя действительность, — поправляет его Рут, чтобы не было неправильных истолкований. — Это наш самый большой успех за всё время.

— Это так, — смотрит на нее Марк с гордой улыбкой. — Как бы то ни было, мы втроем отвечаем теперь за сокращение времени разработки… всех новых продуктов Генмодема.

— Ничего себе! — громким шепотом восклицает Тед.

— Мы с самого начала знали, что самой сложной задачей будет решить проблему конкуренции за ресурсы.

Марк делает паузу, пытаясь найти правильные слова, чтобы объяснить суть сложности.

— Мы разве с этим не разобрались? — спрашивает Роджер. — Я думал, что проблема конкуренции за ресурсы была решена за счет критической цепи. Что я пропустил?

Если кто и прошел через изменение парадигмы, так это Роджер. Он сбросил фасад «я все знаю» и стал проявлять действительный интерес к предмету. Время от времени он даже обращается ко мне за помощью по вопросам внедрения. Только не надо думать, что характер у него тоже изменился. Ничего подобного. Он так же циничен и самовлюблен, как и был.

— Критическая цепь устраняет конкуренцию за ресурсы внутри одного проекта. Но она никак не затрагивает вопрос конкуренции за ресурсы между несколькими проектами.

— А почему мы не можем использовать эту же логику для нескольких проектов одновременно? В чем разница? — Тед не видит концептуальной разницы между одним проектом и несколькими.

Прежде чем Марк успевает ответить, я вмешиваюсь с вопросом:

— Тед, в вашей фирме вы работаете одновременно с несколькими проектами?

— Конечно.

— Тогда у вас должно быть достаточно интуиции, чтобы ответить на свой вопрос. Попробуйте. Сделайте предположение. Какие это может вызывать проблемы?

— Если так с ходу: я вижу проблему синхронизации.

— «Синхронизация» — красиво звучит, — говорю я. — Настолько красиво, что часто используется для того, чтобы скрыть незнание. Тед, вы же не хотите, чтобы у нас сложилось о вас такое впечатление.

— Ни в коем случае.

И он кидается в другую крайность:

— Конкуренция за ресурсы означает, что от одного и того же ресурса ожидается, что он должен делать два разных элемента проекта в одно и то же время, — выбрасывает он наше время, демонстрируя, что знает определение термина, который всем хорошо известен. — Устранение конкуренции за ресурс между двумя элементами, — методически продолжает он, — во многих случаях требует, чтобы выполнение одного из элементов было отложено. Проблема в том, и мы это детально обсуждали, что не существует четкого способа решить, какой элемент отложить. Это почти волевое решение.

Мне нравится его подход. Я хочу, чтобы он продолжал, поэтому говорю:

— Это верно и для одного проекта. Почему проблема становится более серьезной, когда эти элементы принадлежат разным проектам?

— Потому что в ситуацию вовлечены два управляющих проектом, — уверенно отвечает он. — Это не то же самое, как в ситуации, когда вы работаете в одном проекте, где не имеет значения, какой элемент вы отодвинете. Когда у вас два проекта, естественно, что каждый управляющий проектом будет сражаться за то, чтобы его элемент был выполнен в первую очередь.

— Это серьезная проблема? — продолжаю я мои почти риторические вопросы.

— Вы шутите? — улыбается Тед. — Марк, теперь я понимаю, за что вы отвечаете. Это не просто проблема синхронизации, это кошмар.

— Это верное описание, — соглашается Марк. — К сожалению, мы не представляли себе размаха этого кошмара, пока мы не шагнули в него.

— Обеими ногами, — добавляет Рут.

— Это не потому, что мы такие смелые, — спешит пояснить Фред. — Просто мы не знали, что еще можно было сделать.

— Хотите услышать, что случилось? — спрашивает Марк.

Это риторический вопрос.

— Первая проблема была технической. Наши проекты, почти как все довольно крупные проекты, включают около сотни элементов. Знаете, уходит довольно много времени на то, чтобы играть со ста листами бумаги до тех пор, пока не разрешится конкуренция за ресурсы. Вы двигаете один лист, чтобы устранить конкуренцию за один ресурс, и в результате нужно двигать другие элементы на этом пути. Это часто приводит к конкуренции за другие ресурсы. На это уходят часы. Представьте себе, что вы это делаете для шести проектов.

— Тогда, — подхватывает Фред, — мы пошли в наш компьютерный отдел.

— И на этом история заканчивается — высказывает предположение Брайен. — В моей фирме все, что вы просите у компьютерного отдела, застревает там на месяцы.

— В нашей тоже, — отвечает Фред. — Но мы заручились высокой поддержкой. Понимаете, наше задание имеет статус суперультра-топ-приоритета. Так что мы получили от них «достаточно хорошее» программное обеспечение довольно быстро. Мы загрузили все данные и начали играть.

— И играли, и играли… — смеется Рут.

— Симулирование на компьютере — это отличный способ тянуть время, — соглашается Марк. — Мы устраняли самую незначительную конкуренцию, то, на что мы бы даже не обратили внимания, если бы нам пришлось это делать вручную. Но мы устранили всю конкуренцию. Естественно, после этого, как и предсказал Тед, нам пришлось сражаться со всеми управляющими проектами.

— В двух словах, нам удалось выжать из них согласие, — сводит Фред многие дни отчаянных споров в одно короткое предложение.

— А потом реальность показала, какими дураками мы были. Кто-нибудь догадывается, что случилось? — обращается Марк к классу.

Все сосредоточенно думают, но идей ни у кого нет. Даже Тед молчит.

Марк не заставляет нас долго ждать.

— Вы когда-нибудь сталкивались с тем, что элемент заканчивается несколько позже? — подсказывает он им. — Одно незначительное отклонение в одном элементе и БАБАХ! — вы получаете эффект домино, конкуренцию повсюду. Мы все свое время тратили на сражения. Тед, ты назвал это кошмаром? Ты абсолютно прав.

— Я представляю себе. Такое легко может случиться и у нас. И что вы тогда сделали?

— Прежде, чем вы расскажете нам о своем решении, — вмешиваюсь я — вы можете объяснить, какую концептуальную ошибку вы допустили?

— Мы брали оценки по времени так, как если бы это были реальные значения, — отвечает Рут.

— Что вы имеете в виду? — подталкиваю я ее к более детальному объяснению.

— Предположим, что элемент должен длиться десять дней. На самом деле, на него может уйти семь дней или пятнадцать дней, но мы вводили в компьютер десять и потом смотрели на это число, как на священное.

— Я все еще не понимаю, — говорю я.

— Мы рассматривали конкуренцию в три дня как значительную, даже если время оценки для пути было тридцать дней.

— По сути дела, — подключается Фред, — мы попали в ловушку того, что считали, что восемью восемь — шестьдесят четыре. Мы старались быть точнее, чем шум. Все сражались из-за конкуренции, которая, если бы мы ее не трогали, была бы легко поглощена буферами.

— В результате мы постоянно впустую меняли графики, вызывая этим реальные проблемы, — подводит итог Марк.

— Понятно, — говорит Брайен. — Спасибо, что поделились этим с нами. Теперь я знаю, чего не надо делать. Но я не знаю, что надо делать. Мы же не можем просто проигнорировать конкуренцию за ресурсы.

— Не можем, — соглашается с ним Марк. — Ни тогда, когда у нас один проект, и определенно ни тогда, когда мы смотрим на все проекты.

— Теперь вы видите, перед какой мы оказались дилеммой? — спрашивает Фред. — С одной стороны мы должны были учитывать конкуренцию, с другой — когда мы это делали, мы создавали кошмар.

— Ну так что вы сделали? — Брайену хочется скорее услышать ответ.

— Мы пригласил профессора Силвера, чтобы он нам помог.

— В чем не было никакой необходимости, — подчеркиваю я. — Вы знали ответ. Вы просто поленились его понять.

— Это несправедливо! — восклицает Рут. — Даже после того, как вы нам его показали, у меня еще ушло какое-то время, чтобы его понять.

— Ответ был показан вам профессором Фишером на лекциях по управлению производством и затем в деталях разобран профессором Уилсоном на лекциях по системам.

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

— Мы сейчас говорим о конкуренции за ресурс, — начинаю я объяснение. — Вы затрагивали эту проблему на лекциях по управлению производством?

— Конечно, — отвечает Брайен. — Каждый раз, когда перед станком есть очередь и приоритеты неясны, у нас возникает конкуренция за ресурс. Несколько заданий сражаются за то, чтобы быть обработанным тем же самым ресурсом в то же самое время.

— Именно, — подтверждаю я. — И как вы справляетесь с таким случаем? Вы учили, что глупо пытаться составлять график для каждого станка. Что вы должны делать?

— Определить бутылочное горлышко, — говорит Чарли.

— А потом?

— Потом максимально его использовать — сделать график работы для бутылочного горлышка.

— И этим, — говорю я, — вы устраняете любую конкуренцию в ограничении. Вы не просите ограничение сделать две вещи в одно и то же время. А потом? Чарли?

— А потом мы подчиняем. Подчиняем этому все остальные ресурсы.

— И какой результат? — спрашиваю я. А у меня начинают получаться риторические вопросы. Риторические только для тех студентов, кто учился у Джонни.

— Благодаря этому, — отвечает Чарли, — мы устраняем большинство перегрузки на другие ресурсы. А спорадические пики нагрузки, которые могут иметь место, будут поглощены буферами.

— Именно, — торжествующе говорю я. — А почему мы не делаем то же самое в проектах?

— Но в проектах у нас нет бутылочного горлышка, — слишком быстро отвечает Тед.

— Неужели? — иронически спрашивает Марк. — У тебя в фирме нет бутылочного горлышка? Не забывай, мы говорим не об одном проекте, а обо всех.

— Ясно.

— И каков эффект непризнания такого бутылочного горлышка? — спрашиваю я. — Это не только создает хаос из-за попытки синхронизировать несколько проектов. Вы получите тот же губительный эффект, что и на производстве. Если мы не будем уделять бутылочному горлышку специального внимания, не будем защищать его от Мерфи буферами, это неизбежно приведет к тому, что мы будем терять в нем время.

— А это вызывает уменьшение общего прохода фирмы, — подключается Фред. — Таким образом, мы делаем меньше проектов, чем могли бы.

— Итак, — продолжает Марк, — мы нашли бутылочное горлышко. Это было легко. Мы это знали все время. Это наш отдел цифровой обработки. И потом мы составили график их работы.

— Как? — перебивает Брайен.

— Так же как это делается на производстве. Там приоритеты в основном определяются датой отгрузки заказа. В нашем случае — планируемой датой завершения проекта.

— А оттуда уже было легко, — продолжает Рут. — Мы рассмотрели каждый проект как стоящий отдельно. Воздействие других проектов было учтено за счет дополнительной информации, которую мы получили в результате составления графика для отдела цифровой обработки.

Для большинства это объяснение слишком сжато. И Фред объясняет детали:

— Каждый проект имеет элементы, которые исполняются отделом цифровой обработки. График работы этого отдела определил конкретные даты старта и финиша этих элементов. Для каждого проекта мы сначала делали расчеты таким образом, как будто других проектов не существовало. Я имею в виду расчеты по устранению любой значительной конкуренции за ресурсы. И потом мы поставили каждый проект так, чтобы он соответствовал графику отдела цифровой обработки.

— Это изменило критическую цепь? — интересуется Тед.

— Для некоторых проектов изменило, — признается Фред.

— И после этого вы вставили буферы? — проверяет Брайен.

— Конечно, — отвечает Марк. — И тут есть один важный пункт. Все буферы, о которых мы говорим: буфер проекта, питающие буферы и ресурсные буферы — они все защищают отдельный проект. А здесь мы должны помнить, что мы также должны защитить бутылочное горлышко, глобальную деятельность организации.

Продолжает Рут:

— Поэтому нам пришлось ввести еще один буфер, буфер бутылочного горлышка. На деле это не так серьезно, как звучит. Мы решили, что для нас двух недель будет более чем достаточно, и мы сделали график таким образом, чтобы каждый путь, проходящий через цифровую обработку, начинался на две недели раньше. Ничего сложного.

В классе стоит тишина. Они обдумывают то, что только что услышали. Я не нарушаю тишины.

— Мы все еще не уверены, достаточно ли только графика работы отдела цифровой обработки, — говорит Рут. — Помните, в производственном процессе иногда необходимо учесть не только бутылочное горлышко, но и другой ресурс с ограниченной мощностью, или два.

— И как вы собираетесь это узнать? — спрашивает Чарли.

— Мы глаз не спускаем с питающих буферов, чтобы не пропустить первые сигналы, — отвечает Фред. — Если конкуренция за ресурсы начнет съедать буферы один за другим, это и будет ответом.

— Но только тогда и ни минутой раньше мы объявим о наличии еще одного ресурсного ограничения, — быстро уточняет Марк. — Мы не собираемся впадать в истерику и смотреть на каждый отдел как на ограничение только потому, что они будут утверждать, что перегружены. Мы этот урок уже получили. Мы не собираемся возвращаться в тот кошмар.

Мы сидим в Нью-Йорке в маленьком кафе и завтракаем. Я и моя Джудит. Как говорят: когда в Риме, делай как римляне. Поэтому я заказал багет с мягким сыром и копченым лососем. Совсем неплохо.

Нью-Йорк — это любимое место охоты Джудит. Она довела это до уровня науки. Мы не ходим просто так из магазина в магазин в поисках того, что попадется на глаза. О нет, мы подходим к этому со знанием дела. Джудит планирует все заранее, вплоть до конкретных магазинов и лучших маршрутов.

Вчера мы искали восточный ковер. После семи магазинов я уже больше не считал. В шесть вечера мы вернулись во второе место, где были утром, и тут началась битва. Через полчаса и беднее на девятьсот сорок долларов мы ушли из магазина гордыми владельцами маленького потрясающе красивого персидского ковра. «Мы сэкономили по меньшей мере четыреста долларов», — подводит Джудит итог дня.

— Наша цель на сегодня? — спрашиваю я моего генерала.

— Античный кофейный сервиз.

— Тебе больше не нравится фарфор, который ты купила в прошлом году?

Мне он очень нравится, хотя, честно говоря, в тот момент мне совсем не понравилось, что наши долги выросли еще на пятьсот долларов. Я даже тогда поднял небольшой шум.

— Фарфор мне нравится. Но нам нужен серебряный сервиз. Для особых случаев, — небрежно добавляет она и замечает: — У тебя сыр на подбородке.

Я чуть не давлюсь багетом. Для особых случаев. Ну да, как, например, визит английской королевы два раза в год.

— Вытри подбородок, — напоминает она.

Я вытираю.

— И какой бюджет? — осмеливаюсь я спросить.

— Не больше шести тысяч долларов, — отвечает она. — Это будет нелегко. И, пожалуйста, в этот раз, когда я буду торговаться, прими участие, а не стой рядом со мной, как грустный столб.

Теперь, после того, как мне дали тенуру, нам больше не надо беспокоиться и откладывать деньги, чтобы поддержать себя в старости. Университетская пенсия об этом позаботится. Но шесть тысяч долларов? За то, чем мы никогда не будем пользоваться? Потом я догадываюсь. Это неплохая идея.

Улыбаясь, я объявляю:

— Мы начинаем собирать коллекцию.

— Коллекцию Силвер, — дает ей название Джудит.

Я заканчиваю багет и прошу еще кофе.

— За годы мы соберем замечательную коллекцию, это будет на самом деле что-то.

И в шутку добавляю:

— А потом мы оставим ее городу, и люди будут приезжать отовсюду, чтобы посмотреть на нее.

— Как бы я хотела, чтобы мы могли оставить ее нашим детям, — тихо говорит она.

— Я тоже. Я тоже.

Я медленно пью кофе.

— Если бы мы могли хоть что-нибудь сделать.

Я ставлю чашку на стол.

— Ладно, Джудит, пошли завоевывать город.

Я поднимаюсь, готовый идти.

— Мы можем, — говорит она.

Я обхожу ее сзади и отодвигаю стул. Она продолжает сидеть.

— Есть способ, как мы можем иметь ребенка.

Я опять сажусь.

— Но, дорогая, ты ведь не хотела брать ребенка из детдома.

Она накрывает мою руку своей.

— Есть способ, как мы можем иметь своих детей.

— Но.

Я чувствую слабость.

Она гладит меня по руке.

— С моими яйцеклетками все в порядке и с твоей спермой тоже.

— Ты имеешь в виду суррогатную мать?

— Да.

Я пытаюсь уложить это у себя в голове. У нас может быть ребенок.

— Рик, дорогой, пойдем, — поднимается она и тихо добавляет: — Это не для нас.

— Подожди, — я хватаю ее за руку и тяну назад. — Ты уверена, что это возможно? Я знаю, что в этих вещах гарантии быть не может. Но это возможно?

Поднимаясь со стула, она говорит:

— Да. Но к чему себя мучить? Мы никогда не сможем себе этого позволить. Пойдем, милый.

— Ты готова пройти через все?

— Ты же знаешь, что да, — она садится.

— А если в конце ничего не выйдет? Ты сможешь это принять?

— У меня останешься ты.

— Джудит, если ты готова, я найду деньги. Все, что нужно.

— Тут только есть одна проблема, — говорит она.

— Какая?

— Нам придется отложить начало нашей коллекции серебра. Ты ничего не имеешь против?

Если бы это был не Нью-Йорк, нас бы арестовали за нарушение общественного порядка.