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