О Windows из первых рук: Пришельцы украли мою программу

«Пришельцы пришли и украли код» и другие отговорки, когда выпуск продукта задерживается.

Раймонд Чен

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

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

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

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

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

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

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

Прерванный аппарат

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

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

Вместо перехвата кораблей в порту планировалось перехватывать судна в океане — почти как в фильмах про шпионов. На кораблях специально обученные команды должны были открывать упаковки с компьютерами и устанавливать на них финальную версию Windows.

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

Raymond Chen

Раймонд Чен (Raymond Chen)его веб-сайт и одноименная книга «Old New Thing», вышедшая в издательстве Addison-Wesley в 2007 году, рассказывает об истории Windows и программировании с использованием интерфейса Win32. Никому не говорите, но вы самый любимый читатель Раймонда.