Да. Мы знаем, что жизненный цикл чешуекрылых состоит из четырех этапов, но лично я бы упомянул еще об одном непродолжительном, но очень важном моменте. Он занимает всего несколько часов, но без него бабочка никогда бы не пустилась в полет.
Когда чешуекрылые особи вылупляются из куколки, то крылья, чтобы окрепнуть, в первый час наполняют жидкостью. Затем бабочка еще какое-то время сушит их, вися вниз головой, и лишь потом пускается в путь. Пропусти она этот этап, попробовав сразу взлететь, – вместо небес оказалась бы на земле.
Вот и в разработке программных продуктов, чтобы не упасть в грязь лицом, нужно обязательно проверить все перед запуском в эксплуатацию. Многие любят полагаться на удачу и пропускать данный этап, ссылаясь на нехватку времени и что все было проверено еще во время разработки. Наша же команда старается такое не практиковать.
В финальном тестировании программы заняты все участники команды. Конечно, я, как человек, ответственный за качество, на этом этапе руковожу процессом. Именно от меня исходят поручения кому, что и где сделать, а также каким моментам уделить особое внимание. Но даже сейчас никто из разработчиков не сидит без дела. Таким образом, все участники команды заняты работой вне зависимости от того, на какой стадии сейчас проект.
Все шло по плану, пока я не заметил одну небольшую деталь:
– Жень, а сколько весит наш финальный экземпляр бабочки?
– Слушай, – почесав затылок, начал отвечать мне Евгений, – я тебе точную цифру не назову, но не больше 45 граммов точно.
– Плохо! – слегка опешил я, испугавшись, что мы могли превысить допустимый вес. – Здесь каждый грамм на счету! Я проверяю, наполнив бабочку 7,5 грамма, и если ее собственный вес 45 граммов, то мы превышаем норму на целых 2,5 грамма!
– Ой, да. Каких-то 2,5 грамма, – довольно спокойно отреагировал Женя, – это ж не критично!
Поняв, что дальнейший разговор без конкретных цифр бессмыслен, я решил пойти и взвесить наше изобретение.
– 44, 65 грамма… – себе под нос проговорил я…
– Гриш, все в порядке? – поинтересовалась у меня Юлия.
– Юля… Мы превышаем максимальный вес…
Моя коллега всегда умела быстро реагировать на возникшие трудности, так что и здесь она не растерялась, быстро предложив план действия:
– Думаю, что в таком случае необходимо собрать всех, в особенности Вячеслава Сергеевича, и уточнить, насколько критично то, что мы немного вышли за пределы установленного веса.
Через полчаса мы все полным составом уже находились в зале заседаний.
– Ребят, – довольно грозно и даже немного рассерженно начал вести с нами беседу Вячеслав Сергеевич, – это очень серьезно! Мы запускали множество различных аппаратов, чтобы понять, какие из них могут быть обнаружены. Даже с весом в 49,5 грамма процент обнаружения составил 25 %! А вы говорите, что наш продукт на обратном пути будет весить целых 52 грамма!
– Ну мне было сказано, что максимальный вес семян 7,54 грамма, – я такой и установил на встроенных весах! – занервничал Женя.
– Но ты же видел, что готовый объект должен быть не более 50 граммов?! – не сдержался я.
– Ну так бабочка и меньше! – не унимался мой оппонент.
– Так, ребята, – прервала нас Юлия, – давайте лучше подумаем, как будем решать возникшую проблему, а не искать виноватых.
После этого замечания все сразу же затихли, погрузившись в раздумья. Ошибки признавать трудно. Но да. Здесь был недочет как с моей стороны, так и с Жениной. Я ему не сообщил, что вес изобретения в нашем случае не должен превышать 43,46 грамма, а он не удосужился сопоставить то, что на обратном пути наша бабочка будет лететь далеко не только с собственным весом.
Вы только не подумайте, что мы с Евгением разругались. Вовсе нет. Ведь в любой команде, даже самой дружной и сплоченной, не обходится без споров по рабочим моментам. Главное, не переносить их в обычную жизнь, оставляя все эти недопонимания в стенах офиса. А уж это умение за столько лет совместной работы мы освоили довольно неплохо.
– Но я не могу уменьшить вес, я и так использовал самые легкие материалы, а внутри лишь все самое необходимое, – первым подал голос Евгений.
– Значит, – продолжила Юлия, – нужно уменьшить максимальный вес семян. Сколько это получится? 5,45 грамма?
– Нельзя, – выступил я, – если мы уменьшим вес, то рискуем не получить необходимое количество зерен.
– Но ведь при подсчете, – начал размышлять Андрей, – ты, Григорий, учел все риски и полученные цифры всего лишь гарантируют ожидаемый результат? Мы ведь его можем достигнуть, если наша бабочка будет переносить зерна меньшего веса? Так ведь?
– Так, – подтвердил я, – если убрать поправку на то, что не все бабочки вернутся или нам повезет с погодой… То, конечно, мы можем получить желаемые 42 килограмма пшена, но не факт. Я бы не рисковал.
– Ребят, – загрузившись возникшей проблемой, проговорил Вячеслав Сергеевич, – давайте все же постараемся выполнить тот сценарий, который нам гарантирует ожидаемый результат? Но если уж ничего не удастся придумать, то что ж, будем полагаться на удачу.
– А что, если, – начал озвучивать свою идею Андрей, – мы будем считать не по весу, а по количеству семян? Ты ведь, Гриша, высчитывал, сколько штук необходимо перевозить за раз?
– Да, – среагировал я, – но может получиться так, что вес все равно достигнет 7,54 грамма, превысив тем самым допустимый лимит.
– Я могу добавить счетчик в механизм сбора, – продолжал Андрей, – в этом случае встроенные весы нам будут без надобности. Жень, сколько они весят?
– Да немного. Грамма 2–3.
– Но этого нам вполне достаточно! – обрадовался я найденному решению.
– Отлично, – подытожил Вячеслав Сергеевич, – Тогда ты, Евгений, убираешь весы, а ты, Андрей, добавляешь счетчик. Гриш, нужно будет тщательно протестировать этот момент.
– Хорошо, – быстро согласились с озвученным планом я и Евгений.
– Пойду установлю допустимый предел пассажиров на борту, – как всегда, в своей манере пошутил Андрей.
Мы все вновь погрузились в работу. По завершении этой непростой недели, а именно столько у нас заняло итоговое тестирование, мы имели вполне рабочий продукт, готовый к запуску.
Во время финальных испытаний несколько ошибок все же обнаружилось, но на общем собрании было решено не исправлять их. Мы посчитали, что любое вмешательство сейчас может привести к появлению куда больших проблем, временных затрат и рисков, чем имеющиеся баги. Да и критичными их назвать было трудно. Например, один из них заключался в том, что бабочка складывала крылья и прекращала полет, как только датчик распознавал, что в двух сантиметрах от насекомого есть место для посадки. Маловероятно, что наша красавица, летя над морем на высоте нескольких метров, решит завершить полет. А на месте мы и вовсе подключим частично ручное управление. Таким образом, было принято решение готовить нашу бабочку к ее первому полету, несмотря на имеющиеся ошибки.
Глава 5. Имаго: полет
Самый волнительный день наступил для нас 9 сентября 2033 года. Именно тогда была запущена первая бабочка, которой предстояло преодолеть море и найти столь желанные зерна пшеницы. Никому из нас накануне не спалось спокойно, поэтому лица у всех в этот ответственный день были довольно помятые. А вот предвкушение было настолько велико, что даже зевота где-то затаилась в ожидании предстоящего события.
– Ну, ребят, все готово? – поинтересовался Вячеслав Сергеевич, заходя к нам в лабораторию.
– Да. Мы уже на низком старте, – отшутился Евгений.
– Отлично. Сколько, по примерным подсчетам, вся операция займет времени? – спросил глава отдела разработки, покосившись в мою сторону.
– Я тут прикинул, при сегодняшнем ветре бабочке понадобится около четырех с половиной часов, чтобы добраться до острова. Обратный путь займет чуть больше времени, так как ветер будет встречным, да и груз добавится. А вот сколько нашей чешуекрылой придется провести времени на месте – сказать трудно. Мы заложили примерно два часа. Итого на все потребуется примерно 12 часов.
– Вы хорошо все проверили? – постарался уточнить Вячеслав Сергеевич. – Аккумулятора хватит на столь продолжительное время?
– Да, не волнуйтесь, наша красавица может лететь беспрерывно около шестнадцати часов, прямо как самые настоящие бабочки монархи3, – постарался успокоить его я.
– По этим приборам мы сможем отследить ее траекторию, – добавил Андрей, указывая на свои мониторы.
– А я буду получать снимки распознанных семян, – поделилась Юлия.
– Замечательно! – хлопнув в ладоши, произнес Вячеслав Сергеевич. – Два беспилотника будут сопровождать нашу бабочку. Так что мы сможем видеть ее полет в прямом эфире. Будем надеяться, что их не обнаружат и не собьют слишком рано. Занимайте свои места, господа!
Нам всем, конечно же, было до жути любопытно все, что происходило. Мы расселись перед экранами, запасшись всевозможной едой, словно пришли на премьеру долгожданного фильма. В тот момент, когда Евгений начал делать последние настройки перед запуском, все непроизвольно затаили дыхание…
И вот наша крылатая красавица уже набирает необходимую высоту… летит над нашим клочком земли… И спустя некоторое время парит над морской гладью… С экранов на том расстоянии, на котором велась видеосъемка, наш крылатый механизм ничем не отличался от настоящей бабочки. Мы даже периодически переглядывались и, шутя, спрашивали, верный ли объект наблюдения у наших дронов.
Путь до острова прошел без приключений и неожиданностей. Бабочка достигла цели за 4 часа 42 минуты, как я и предполагал. Дроны также были целы, что нас, несомненно, радовало, ведь мы смогли увидеть всю ту красоту, что предстала перед нами на экранах.
Этот уцелевший необитаемый клочок земли был невообразимо живописным. Столько всевозможных растений, деревьев и цветов, что глаз не знал, за что зацепиться. Капли еще утренней росы на травинках блестели и переливались на солнце, словно все поле было усыпано бриллиантами. Небольшой, но довольно сильный ручеек так спешил куда-то, что его журчание мне слышалось сквозь беззвучные экраны. Так и манило окунуть в него руки и умыться, чтобы ощутить свежесть и единение с природой.
Иногда в кадр попадали мимо пролетающие птицы. Некоторые из них в наших краях не водятся, поэтому очень радостно было узнать, что столько представителей фауны смогли уцелеть после постигшей нас катастрофы. А еще пару раз мне показалось, что я видел ежа, пробирающегося сквозь траву с крупными листочками на иголках. А в чаще леса мелькнула пробегающая мимо лиса. Но, возможно, это был всего лишь плод моего воображения.
Затем бабочка переместилась на другой конец острова, который, как можно было заметить по флоре, раньше представлял собой морское дно. Здесь было не так живописно, ведь растения засохли и выгорели под палящим солнцем, а обитатели не смогли пережить потерю воды. Так что этот кусочек скорее представлялся местным кладбищем, и от этого наблюдения мне стало немного грустно.
Наша бабочка кружила довольно долго, прежде чем нашла что-то похожее на то, за чем ее туда отправили. Зерен было достаточно, да и колосья росли кучковато, поэтому нашему засланному агенту не потребовалось много времени, чтобы собрать необходимое количество семян.
Погрузив в себя 116 зерен, вес которых составил 6,03 грамма, наша бабочка выдвинулась в обратный путь. Спустя час полета один из дронов был сбит, а потому обзор резко сократился. Но благодаря второму беспилотнику передвижение нашего изобретения по-прежнему было видно на экранах, так что мы не жаловались.
К тому моменту, когда уже большая часть пути была позади, вдруг откуда не возьмись на горизонте появилась птица. Она то попадала в кадр, то нет, а потому было трудно разобрать ее вид, но одно было ясно наверняка – это пернатое создание нацелилось на нашу бабочку.
– Она же сейчас нагонит и съест нашу красавицу! – забеспокоилась Юлия.
– Мы можем как-то управлять траекторией полета? – взволнованно поинтересовался Вячеслав Сергеевич.
– Сейчас, я пытаюсь поднять нашу бабочку на ту высоту, на которой птицы не любят летать, – протараторил Андрей, уже сидя за приборами. – Так. Ну мы поднялись. Как там птица?
– Пока не видно… – протянул Женя. – А! Вот она! Летит прямо на бабочку! Давай еще немного наверх!
Мы успели перенаправить нашу чешуекрылую в самый последний момент, но случилось то, чего, мы надеялись, не произойдет. В этот момент бабочка оказалась чуть выше птицы и, распознав ее как место, куда можно приземлиться, сложила крылья и резко полетела вниз.
– О нет! Она падает! Все пропало! – кричал Женя.
– Нет, нет, нет! Не может быть! – причитал Андрей.
– Нужно было все же выделить время на устранение этого бага! – ворчала Юлия.
У меня же и Вячеслава Сергеевича настолько захватило дыхание, что произнести хоть слово мы были просто не в состоянии. Наше изобретение, над которым вся команда корпела сутки напролет, вынашивала, холила и лелеяла, вот-вот окажется на дне морском. Мы смотрели на все экраны, что нам были доступны: на мониторе Андрея рисовалась вертикальная прямая, которая очень быстро увеличивалась, а картинка с дрона передавала, как что-то похожее на гусеницу летит в пучину океана.
Я уже было закрыл глаза, не в силах видеть то, как тонет столько времени и сил кропотливой работы, как вдруг услышал удивленный возглас Юлии:
– Она раскрыла крылья и полетела!
– Что?! Как?! – закричали все чуть ли не хором.
Мы уставились на экраны, будто сейчас нам наконец-таки раскроют, кто же на самом деле был тем самым неуловимым похитителем драгоценностей, который создавал интригу весь фильм. Бабочка тем временем и вправду летела, вновь набирая высоту.
– Как это? Что произошло? – удивленный произошедшим, начал расспрашивать нас Вячеслав Сергеевич.
– Секунду, я стараюсь разгадать эту тайну… – проговорил Андрей, изучая свой код и результаты, что передавались к нему от нашей чешуекрылой. – Вот это да…
– Ну, не томи, – поторопила его с ответом Юлия.
– Ребят, похоже, что я только что обнаружил еще один баг, – мы все недоуменно посмотрели на Андрея, а он тем временем продолжил. – Когда бабочка падала, датчики все равно продолжали фиксировать скорость. Когда же быстрота падения превысила выставленный мной максимум, она начала отсчитываться в обратном направлении, то есть уменьшаться. Достигнув нуля, скорость вновь начала увеличиваться, и тем самым бабочка подумала, что она начала взлетать, а потому наше изобретение раскрыло крылья и полетело набирать высоту, словно только что оторвалось от земли.
– Это поразительно! – воскликнул я, поняв, что только что произошло. – Мне даже в голову не пришел такой сценарий для тестирования. Обязательно учту на будущее. Надо же! Какой интересный баг!
– Баг багом правится! – отшутился Андрей.
– Это уже не баг… – лукаво протянул Евгений. – Это ФИЧА4!
Мы все дружно смеялись и радовались благополучному исходу сложившейся ситуации. Бесспорно, наличие багов нас расстроило, но никто от них не застрахован. Главное – сделать правильные выводы. И, как оказалось, иногда допущенные ошибки могут привести и к чему-то хорошему.
Оставшийся путь прошел без приключений, и наша бабочка вернулась на базу АО «ЗАСЛОН» с полным брюшком семян пшеницы. Словами не передать, как мы ликовали, что наш проект принес свои плоды. Конечно, нам предстояло еще создать немало подобных механизмов, провести несчитанное количество часов в ожидании прилета каждой бабочки и перебрать огромное количество зерен. Но вот он! Первый полет, первый результат, первые семена! Вот она, надежда на то, что на нашем столе всегда будет хлеб!
Эпилог
– И что, удалось собрать нужное количество семян? – задал мне вопрос мой самый младший внук, который эту историю слышал впервые.
– Собрали, – гордо ответил я, – и даже больше, чем рассчитывали! С тех времен в чем в чем, а уж в хлебе мы нужды не знали! Позже бабочек приспособили и для других дел. Например, для посева.
– А если бы бабочка тогда все же не взлетела? Проект бы закрыли?
– Все возможно. Но ведь взмах крыла бабочки не всегда должен приводить к чему-то плохому? – произнес я, лукаво улыбаясь.
Много событий произошло после того дня, когда наша маленькая бабочка совершила свой первый полет. Обо всех сейчас уже и не смогу рассказать подробно… Помню, как мы помогали спасать некоторые виды животных от вымирания, как осваивали новый мир и даже как вступали в переговоры с людьми на других уцелевших участках суши, пытаясь наладить контакт. Да много всего! Можно, наверное, целую книгу написать. И, похоже, я даже знаю, с чего бы она началась…