Быстро сказка сказывается, да не скоро дело делается

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

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

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

К нашему удивлению, бельгийцы легко согласились с продлением срока работы.Впрочем, они довольно плотно (хотя до времени и формально) контролировали весьпроцесс и могли понять, что мы даром времени не теряем и перенос сроков носитобъективный характер.

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

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

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

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

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

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

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









 


Главная | В избранное | Наш E-MAIL | Прислать материал | Нашёл ошибку | Верх