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

Когда говорят о необходимости какого-либо трудного, но необходимого решениявместо серии половинчатых мер, часто приводят поговорку: нельзя отрубать хвостсобаке по частям в надежде, что это будет не так жестоко. Мы поступали вточности наоборот: вместо того чтобы с самого начала назначить реальный срок,мы несколько раз понемногу его увеличивали. Боялись ли мы испугать фирмачейбольшим сроком? Наверное. Но, может быть, важнее даже то, что мы сами далеко невсегда могли в точности предсказать, сколько времени потребует тот или инойэтап проекта. Нас все время подводил излишний оптимизм. Даже шеф, опыткоторого в управлении программными проектами не сравним с нашим, не участвуя вреализации, не мог определить настоящих временных затрат.

Теперь, по прошествии времени, мы поняли, что получили очень важный урок.Способность определять реалистичные сроки больших программных проектов и умениеих выдерживать — исключительно ценная составляющая опыта профессиональногоразработчика. По крайней мере, для нас этот урок не прошел даром: следующаясерьезная и длительная работа, связанная с нашим компилятором Си++(несколько слов о ней будет в заключение), была спланирована и выполнена почтиидеально; сроки этапов выдерживались очень строго, и весь полуторагодовойпроект завершился всего лишь с одно-полуторамесячным отставанием относительнопервоначальных сроков. И это несмотря на то, что система состояла из несколькихкомпонент, в проекте участвовало около десятка человек, большинство которыхвпервые имело дело с разработкой таких системных программ, как ассемблеры,редакторы связей, эмуляторы и т.п., а аппаратные спецификации изменялись втечение всей работы.

Поистине учиться можно только на собственных ошибках!

Кризис

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

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

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

Своеобразным буфером для нас в этих условиях стал Вальтер. Несмотря на своесравнительно высокое положение в компании, большую занятость (мы видели это поего постоянным командировкам по всему земному шару — от Америки до Австралии)и широкий диапазон сфер деятельности, он довольно глубоко вникал в нашиисходные тексты, проводил дополнительное тестирование, анализировал некоторыепроектные решения и давал рекомендации. Хорошо зная текущее состояние проекта,он, видимо, пытался сгладить негативное впечатление от постоянного переносасроков. Давно перестав программировать, он не потерял квалификации какразработчик и в некотором смысле показывал пример того, как можно сочетать водном лице менеджера европейского уровня и программиста, не гнушающегосярутинного процесса тестирования чужих программных текстов.

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

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

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

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

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

Никакого содержательного ответа мы не получили. Вальтер выслушал нас молча,лишь иногда понимающе кивал. Потом спросил: "Какова примерно зарплатапрограммиста в Москве?" Мы назвали сумму. Он последний раз кивнул и замолк.Разговор закончился.

Следующие дни мы обсуждали технические аспекты проекта. Казалось, он былдоволен состоянием компилятора и тем, что в конце тоннеля, наконец, стал виденсвет. К больному вопросу мы не возвращались. Его отношение к нашему демаршу таки осталась загадкой. То ли это не входило в его компетенцию, и даватькакие-либо обещания он просто не имел права? Или что-то мы должны были понятьсами, без каких-либо объяснений? Кое-что прояснилось позднее, но тогда было отчего впасть в недоумение. Как бы то ни было, мы попали в дурацкое положение.Получилось, будто между нами произошел следующий диалог:


Перейти на страницу:
Изменить размер шрифта: