Быстро сказка сказывается, да не скоро дело делается
Быстро сказка сказывается, да не скоро дело делается
Примерно через год после начала работы, как и следовало ожидать, мы осознали абсолютную нереальность и даже абсурдность первоначального срока. Хотя к этому времени у нас уже был сделан Проект, реализовано большинство базовых алгоритмов, программа (ее, конечно, еще нельзя было назвать компилятором) как единое целое уже начинала шевелиться, настоящее понимание языка Си++ и того, как следует делать компилятор с него, только-только появлялось. Мы поняли, что работа только начинается.
Те, кто успел поработать в советских научно-исследовательских организациях, хорошо знают цену так называемым эскизным проектам. При его составлении настоящего понимания того, как, собственно, следует разрабатывать и реализовывать программную систему, ни у кого нет. Основная цель заключается в том, чтобы "застолбить" работу, успокоить начальство и открыть финансирование. Если речь идет о действительно новой работе, опыта выполнения которой у авторов проекта нет, то он содержит либо общие слова и красивые схемы, либо более или менее аккуратные и тщательно продуманные предположения, опять-таки выраженные в достаточно обобщенных категориях. После сдачи эскизного проекта его, как правило, прочно забывают и разрабатывают систему так, как это подсказывают опыт и квалификация.
Наш проект, который мы через несколько месяцев представили бельгийцам, был разработан гораздо серьезнее, однако сам предмет оказался настолько сложен, что степень проработки проблем оказалась недостаточной. Время от времени приходилось возвращаться к проекту и вносить в него изменения и добавления. С одной стороны, это замедляло работу по реализации и не всем нравилось (выше я уже писал об этом). С другой?—?время разработки проекта даже очень сложной системы не должно быть чрезмерно большим: многого просто невозможно предвидеть?—?парадокс в том, что только начав реализацию, можно получить обоснованные проектные решения. К тому же программистам психологически очень тяжело недели и месяцы проводить в обсуждениях, рисовать схемы и писать тексты (между прочим, на английском языке!-- в контракте специально был оговорен proper English), не составив ни строчки кода (здесь мы хорошо понимаем третьего участника). Но даже если бы подобных задержек не было, мы физически не успели бы запрограммировать компилятор, оставаясь в пределах заявленного срока?—?объем программного текста, который предстояло написать, во много раз превышал то, что уже было написано. О некоторых трудностях реализации, которые ждут нас впереди, было даже страшно задумываться.
К нашему удивлению, бельгийцы легко согласились с продлением срока работы. Впрочем, они довольно плотно (хотя до времени и формально) контролировали весь процесс и могли понять, что мы даром времени не теряем и перенос сроков носит объективный характер.
Дальше начинается психология. Вообще говоря, первоначальные сроки никто никому не навязывал: предложили их мы, но они-то согласились! Поэтому, казалось бы, ответственность за тот факт, что эти сроки оказались нереальными (кажется, и они, и мы сейчас это понимали), следовало бы разделить между всеми. Однако комплекс вины чувствовали именно мы (они, как в личном общении, так и в письмах, вообще проявляли мало эмоций и крайне редко допускали неформальный стиль общения). И хотя теперь-то мы могли предложить более обоснованные и реалистичные сроки завершения проекта, этот комплекс нам, к несчастью, помешал.
К тому времени мы уже вполне убедились, что квалификация позволяет нам на достойном уровне довести проект до завершения без чьей бы то ни было помощи. Наши консультации с заказчиками сводились к вопросам о конкретном устройстве тех компонент их системы программирования, с которыми компилятор должен взаимодействовать. Даже на вопросы о формате промежуточного представления, которое, согласно фирменной документации, было их собственной разработкой, они далеко не всегда могли дать вразумительный ответ (позднее это нашло свое объяснение). Обсуждать детали языка было не с кем, собственных специалистов по Си++ у них не было, они вообще до сих пор программировали на Си самой древней версии Кернигана и Ритчи. Их помощь состояла в периодических посылках очередных версий предварительного стандарта (до тех пор, пока рабочая группа не стала выкладывать их на свой Web-сервер) и материалов очередных заседаний и дискуссий, предшествующих принятию того или иного языкового свойства. Последнее было действительно интересно и ценно, так как эти материалы, насколько мы знаем, нигде не публикуются и рассылаются только членам рабочих групп.
В общем, мы вполне могли бы чувствовать себя полноправными партнерами фирмы. Однако, несмотря на все сказанное, мы еще долгое время не могли избавиться от ощущения учеников или, по крайней мере, подмастерьев в мастерской именитого художника. И то, что мы не успевали вовремя выполнить работу, осознавалось нами как непростительная оплошность новичка, не поспевшего загрунтовать холст к приходу мэтра. К этому добавлялась не имеющая совершенно никаких оснований боязнь, что, услышав просьбы о пересмотре сроков, фирма прекратит сотрудничество с нами.
Так или иначе, мы… снова назвали срок, гораздо меньший того, какой нам действительно требовался! Сейчас мы уже не помним, скоько времени мы просили, но что срок был явно занижен, это точно. Надо ли говорить, что потом нам пришлось корректировать и этот срок, и еще один, и еще…
Когда говорят о необходимости какого-либо трудного, но необходимого решения вместо серии половинчатых мер, часто приводят поговорку: нельзя отрубать хвост собаке по частям в надежде, что это будет не так жестоко. Мы поступали в точности наоборот: вместо того чтобы с самого начала назначить реальный срок, мы несколько раз понемногу его увеличивали. Боялись ли мы испугать фирмачей большим сроком? Наверное. Но, может быть, важнее даже то, что мы сами далеко не всегда могли в точности предсказать, сколько времени потребует тот или иной этап проекта. Нас все время подводил излишний оптимизм. Даже шеф, опыт которого в управлении программными проектами не сравним с нашим, не участвуя в реализации, не мог определить настоящих временных затрат.
Теперь, по прошествии времени, мы поняли, что получили очень важный урок. Способность определять реалистичные сроки больших программных проектов и умение их выдерживать?—?исключительно ценная составляющая опыта профессионального разработчика. По крайней мере, для нас этот урок не прошел даром: следующая серьезная и длительная работа, связанная с нашим компилятором Си++ (несколько слов о ней будет в заключение), была спланирована и выполнена почти идеально; сроки этапов выдерживались очень строго, и весь полуторагодовой проект завершился всего лишь с одно-полуторамесячным отставанием относительно первоначальных сроков. И это несмотря на то, что система состояла из нескольких компонент, в проекте участвовало около десятка человек, большинство которых впервые имело дело с разработкой таких системных программ, как ассемблеры, редакторы связей, эмуляторы и т.п., а аппаратные спецификации изменялись в течение всей работы.
Поистине учиться можно только на собственных ошибках!
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Сказка о двух размерах адреса
Сказка о двух размерах адреса Появление новых RISC-моделей с полностью 64-разрядными аппаратными адресами устранило большинство проблем, связанных со смешением 64- и 48-разрядной адресации в предыдущих моделях. Чтобы понять, почему 64-разрядный аппаратный адрес так важен,
10.13.12 Что делается после подавления источника?
10.13.12 Что делается после подавления источника? В соответствии со стандартом Host Requirements (требования к хостам) TCP должен выполнять тот же самый медленный старт, как это описано выше, при подавлении источника (source quench). Однако сообщение об этом не является целенаправленным или
1.4. Что в Unix делается неверно
1.4. Что в Unix делается неверно Для конструкции, начало которой было положено в 1969 году, в высшей степени трудно идентифицировать конструкторские решения, которые определенно являются ошибочными.Так, Unix-файлы не имеют структур выше байтового уровня. Удаление файлов
1.5. Что в Unix делается верно
1.5. Что в Unix делается верно Недавний взрывной рост популярности операционной системы Linux и возрастающая важность Internet дают весомые причины полагать, что доводы скептиков неверны. Однако даже если скептическая оценка справедлива, Unix-культуру стоит изучать, поскольку
1.4. Что в Unix делается неверно
1.4. Что в Unix делается неверно Для конструкции, начало которой было положено в 1969 году, в высшей степени трудно идентифицировать конструкторские решения, которые определенно являются ошибочными.Так, Unix-файлы не имеют структур выше байтового уровня. Удаление файлов
1.5. Что в Unix делается верно
1.5. Что в Unix делается верно Недавний взрывной рост популярности операционной системы Linux и возрастающая важность Internet дают весомые причины полагать, что доводы скептиков неверны. Однако даже если скептическая оценка справедлива, Unix-культуру стоит изучать, поскольку
IPO — как это делается на примере Twitter Сергей Голубицкий
IPO — как это делается на примере Twitter Сергей Голубицкий Опубликовано 31 октября 2013 Недавно я дважды обращался к теме ожидаемого выхода Twitter на фондовую биржу, который аналитики оценивают не иначе как главное событие на фондовом рынке после
Вавилонский взлом: компьютерная сказка про украинский язык Лёха Андреев
Вавилонский взлом: компьютерная сказка про украинский язык Лёха Андреев Опубликовано 24 февраля 2014 Наблюдая, как комментарии под статьями «Компьютерры» постоянно скатываются к Украине (даже если статьи совершенно о другом), я решил не прятаться
Мигранты времени: как это делается Василий Щепетнёв
Мигранты времени: как это делается Василий Щепетнёв Опубликовано 17 ноября 2013 Я знаю человека, променявшего наше время на двадцатый век — точнее, на тысяча девятьсот семьдесят девятый год. Впрочем, слово «знаю» уместно не вполне. Правильнее будет
ГОЛУБЯТНЯ: Сказка дедушки Куньхуа
ГОЛУБЯТНЯ: Сказка дедушки Куньхуа Как вы полагаете: что больше по душе старому голубятнику - верстать культур-повидло или описывать компьютерные программы? И при шапочном знакомстве с колонкой очевидно, что культур-повидло. Почему? Больше эвристики. Не в смысле
7.3. Сногсшибательные трюки: как это делается
7.3. Сногсшибательные трюки: как это делается Облет повисшего объекта, или Эффект «Матрицы» Несмотря на современные достижения компьютерной техники, для получения некоторых визуальных эффектов используются старые проверенные методы фотографии. Казалось бы, что общего
Волки в овечьей шкуре и козёл отпущения: сказка про Microsoft, Nokia и Google Сергей Голубицкий
Волки в овечьей шкуре и козёл отпущения: сказка про Microsoft, Nokia и Google Сергей Голубицкий Опубликовано 19 августа 2013 Есть такая праведная общественная организация — FairSearch. Из названия ясно, что люди объединились из благих побуждений, видимо, ради
Россия, Украина, знакомьтесь: Netflix! Скоро ли забудем о «пиратках»? Евгений Золотов
Россия, Украина, знакомьтесь: Netflix! Скоро ли забудем о «пиратках»? Евгений Золотов Опубликовано 06 сентября 2013 Тема выборов незримо реет над всем происходящим сейчас в России, и я, пользуясь случаем, тоже хочу попросить вас проявить гражданскую
Сказка о медицинских картах
Сказка о медицинских картах Глядя со стороны, Дэниэль выглядел идеальной кандидатурой на пост вице-президента. Проработав в компании семь лет, он дважды менял должности, улучшил работу подразделения и стал старшим директором. Но однажды вечером босс Даниэля обнаружила в