Пролог
Как прекрасен мир… Люблю ранним утром выйти на крыльцо своего дома и наблюдать, как золотой шар восходит над горизонтом, как ранние пташки спешат на поиски чего-то съестного, и как легкий ветерок в бескрайнем поле заставляет пшеницу пускаться в свой шаманский танец. Но больше всего мне нравится слушать шелест этих хлебных колосьев. Он каждый раз умудряется погружать меня в приятные воспоминания детства, когда мир еще был совершенно иным.
Сегодня 9 сентября 2078 года. И, несмотря на то что сейчас жизнь кажется простой и безмятежной, несколько десятков лет тому назад она таковой вовсе не являлась. Мы буквально боролись за выживание: добывали пропитание и выстраивали быт заново после постигшей нас в 2032 году катастрофы.
Вам наверняка интересно, что же тогда произошло? Увы, до сих пор нет достоверных сведений, что именно привело к самому сильнейшему цунами за все существование человечества. Землетрясения ощущались даже там, где доселе не фиксировались, а ураганы и смерчи сносили все на своем пути. Страшное было время. Результатом тех событий стало переустройство мира: большая часть привычной для нас суши оказалась под водой, а в каких-то частях планеты на поверхности показалось морское дно.
После катастрофы образовавшиеся кусочки земли, больше напоминающие острова в огромном океане, оказались отрезанными от всего на свете. У нас не было ни связи, ни представления о том, каков сейчас мир. Мы сначала даже не знали, удалось ли еще кому-то спастись. А когда другие уцелевшие люди были обнаружены, не понимали, кто они нам: друзья или же враги в борьбе за оставшиеся припасы и продовольствия? Не имея ответов на интересующие нас вопросы, мы пытались выживать, не надеясь на подмогу.
Мне посчастливилось. Как выяснилось несколькими годами позже, я оказался на одном из самых больших участков земли, что остались. У нас было много различных продуктов, техники, а главное – достаточное количество почвы для выращивания всевозможных культур. Помимо этого, на нашем кусочке суши был научно-технический центр АО «ЗАСЛОН». В стенах огромного здания работники компании трудились день и ночь не покладая рук. Они старались изобретать приспособления на благо острова и его жителей, способные пригодиться нам в новом мире. И я горд говорить о том, что являлся частью той огромной команды настоящих профессионалов своего дела.
Ну и, как вы уже могли догадаться, эти воспоминания не зря всплыли в моей памяти именно сегодня. Каждый год в этот день мы собираемся всей семьей, и я рассказываю историю про один инновационный проект, в котором мне посчастливилось принимать участие. Он был запущен с одним известным для нас багом, и эта недоработка чуть не стоила нам хлеба…
Глава 1. Яйцо
На момент катастрофы я уже лет пять являлся штатным сотрудником АО «ЗАСЛОН» и на протяжении двух последних лет работал на проектах с тремя прекрасными инженерами. Наша команда была небольшой, но довольно слаженной и способной работать, как единый механизм.
Однажды, когда я не торопясь возвращался с обеда, в коридоре меня поймал начальник нашего отдела разработки Вячеслав Сергеевич:
– Гриша, собери-ка мне всю вашу команду в зале для совещаний через полчаса. Разговор есть.
– Что-то случилось? – поинтересовался я.
– Можно и так сказать, – не желая что-либо мне объяснять наедине, бросил руководитель отдела и быстрым шагом скрылся за углом.
Вячеслав Сергеевич был человеком серьезным, что было видно даже по его внешнему виду: всегда в костюме, рубашке, обязательно при галстуке, волосы аккуратно уложены, а ботинки начищены до блеска. Пост главы отдела разработки он занимал уже не первый год, а среди сотрудников славился тем, что умел выжимать из работников все соки. Но, должен признать, своих сил работе он отдавал ничуть не меньше. Иногда мне казалось, что это огромное здание и есть его настоящий дом. Пустых бесед ни с кем Вячеслав Сергеевич никогда не вел, а это означало, что собирает он нас определенно не по пустяковому вопросу.
Спустя несколько минут наша команда уже сидела в забронированном зале заседаний. Все с нетерпением ждали начальника отдела для разъяснения, зачем же мы столь неожиданно понадобились, да еще и в полном составе.
Думаю, что стоит упомянуть о том, из кого же состояла наша команда. Нас было всего четыре человека. Андрей – прекрасный инженер, способный разрабатывать сложные механизмы, алгоритмы, а также связывать различные части системы в единое целое. Не слукавлю, если скажу, что он – настоящий мозг нашей команды. На вид это был мужчина лет сорока, среднего роста, худощавый, я бы даже сказал хилый. Носил очки, за которыми прятал довольно умные глаза. Но, несмотря на всю свою гениальность в работе, в жизни он был довольно чудаковат. Любил пошутить. Только вот его юмор вызывал смех скорее от нелепости произнесенного, чем от остроумия. Хотя, возможно, мы просто не способны были оценить его по достоинству.
Юлия – еще один программист от Бога. Если нужно было продумать концепцию, разобраться и внедрить новые технологии в работу, да или просто презентовать наши идеи или результаты, то она являлась незаменимым участником команды в этих вопросах. Выглядела она на свой возраст – 36 лет. Высокая, среднего телосложения и со строгими чертами лица. Красилась довольно скромно, волосы всегда собирала в конский хвост, а на работу носила классические брюки и блузки. В общем, выглядела как самая обычная деловая женщина, которая следит за собой, но не перебарщивает. В жизни, как и в работе, она была довольно серьезна, целеустремленна и основательно подходила ко всему, за что бралась: будь то проект или же покупка какой-либо вещи в дом.
Евгений – как я его называю, инженер-дизайнер. Если Андрей и Юлия работали с внутренним наполнением наших разработок, то Женя отвечал за интерфейс. Он продумывал, как пользователи будут работать с нашим изобретением, где и как расположить ту или иную кнопку, а также какие действия должны произойти при различных внешних взаимодействиях, чтобы получить ожидаемый результат. Проще говоря, человек, который обладал не только инженерным складом ума, но и творческим потенциалом. Сам же он был молод, примерно того же возраста, что и я, лет тридцати, невысокого роста, с коротко стриженными волосами и атлетического телосложения. В общении с ним всегда было легко, весело и непринужденно. Евгений довольно просто относился к жизни и тем невзгодам, которые встречались на его пути. Даже в те тяжелые времена, когда большинство людей опускали руки, погружаясь в депрессию, он не переставал посещать тренажерный зал и ходить по коридорам насвистывая веселую песенку.
Ну и последний, но, прошу заметить, не по значимости, я, Григорий – инженер по качеству. Да, да. Вы не ослышались. Я был ответственным в этой команде за тестирование создаваемых нами продуктов. В мои обязанности входило проводить проверку алгоритмов, механизмов, целостности и даже пользовательского интерфейса. В общем, всего того, что разрабатывали эти трое прекрасных инженеров. Вы наверняка хотите узнать, по какой причине я работал на этой должности? Почему я не пытался выбиться в программисты? С удовольствием отвечу вам на эти вопросы. Я стал тестировщиком вовсе не потому, что я не могу программировать, и даже не потому, что расценивал тестирование как первую ступень на пути к разработке программных продуктов. Мне хотелось проверять продукты на качество. По образованию я – математик. С детства любил возиться с цифрами и алгоритмами. В университете у нас были предметы по программированию, да и начинал я свой путь как разработчик. Только вот когда я погрузился в тему тестирования, оно затянуло меня целиком и полностью. В этой сфере удалось найти применение комбинаторике при продумывании различных сценариев, фантазии для входных данных и действий, а также навыкам программирования, что, несомненно, мне облегчало монотонные проверки. Проще говоря, тестирование – это то, где я смог объединить все, что я любил и знал.
Ну а теперь, когда мы познакомились со всеми присутствующими, можно узнать то, зачем же нас все же собрал Вячеслав Сергеевич.
– Ребята, – обратился он к нам. – Не буду скрывать, я считаю вас самой сплоченной командой профессионалов, а потому, когда получил этот проект, сразу же понял, что никто с ним не справится лучше, чем вы.
– Но у нас сейчас есть продукт, который находится в активной фазе разработки, – слегка возмутилась Юлия. – И, насколько я знаю, в ближайшие полгода мы будем заняты им.
– Все так, – согласился с ней руководитель отдела, – но боюсь, что его придется прервать на какое-то время.
– Поставим break1 в текущем проекте, – попытался, как всегда довольно своеобразно, пошутить Андрей.
– А что за проект? – уже загорелся Евгений.
– Как вы знаете, – начал Вячеслав Сергеевич издалека, – прошедшее лето выдалось тяжелым. Большая часть урожая сгорела в многочисленных пожарах. Некоторые культуры удалось спасти, чтобы посадить в следующем году, а вот зерен пшеницы, из которых преимущественно изготавливают хлеб, практически не осталось.
– Это получается, что на ближайшую зиму, а в будущем, вероятно, и навсегда мы можем остаться без хлеба? – постарался уточнить я.
– Мука еще есть, но надолго ее не хватит. А также в наличии немного семян ржи, кукурузы и ячменя, но и их недостаточно, чтобы прокормить всех жителей нашего острова.
– И чем же мы здесь можем быть полезны? – все так же довольно скептически произнесла Юлия.
– Не так давно был обнаружен остров в 279 километрах от нашего. Туда были отправлены дроны с разведкой. Им удалось установить, что там есть семена пшеницы. Только вот назад беспилотники не вернулись. На обратном пути их засекли и сбили. Предположительно это сделали разведочные машины с других островов, где есть люди. Похоже, что не все выжившие готовы делиться своими находками. В связи с этим перед нами стоит довольно сложная задача: нам нужно разработать такой летательный аппарат, который будет способен преодолеть расстояние в 300 километров, распознать и собрать определенное количество семян пшеницы и вернуться. А чтобы все это удалось, его размеры не должны превышать емкости стакана, и весом он должен быть не более 50 граммов.
– Очень любопытные входные данные, – задумался Андрей.
– Задание интересное, но в какие сроки от нас ожидают результата? – подключилась Юлия.
– Сейчас июль 2033 года, необходимое количество семян от нас ждут к началу мая 2034-го.
– Интересная задачка… – почесав голову, вставил Евгений.
– Что ж, – выдохнув, сказал Вячеслав Сергеевич и встал со своего места. – Суть дела я вам изложил, оставляю вас обдумывать детали.
Начальник отдела разработки покинул конференц-зал, оставив нас обдумывать и переваривать все вышесказанное.
Работу над любым проектом мы начинали с разработки концепции и обязательно в полном составе. Мнение каждого из нас было важно, а голоса имели равнозначный вес при принятии итогового решения. Вот и сейчас мы сидели в предоставленном нам зале заседаний и обдумывали дальнейший план действий.
– Ну что, есть у кого какие идеи? – спросила, как всегда серьезным тоном, Юля.
– Мыслей много, а вот идей ноль, – довольно печально произнес Андрей.
– Я, конечно, предполагаю, из каких материалов можно попробовать сделать корпус, только вот в какой форме, если размер не должен превышать… Как он там сказал? Емкость стакана? – высказался Евгений. – Вот, – он собрал из бумаги самолетик и запустил его через весь стол, – в виде самолетика могу.
– Крылья будут весить больше самого корпуса, – заявила Юлия, поймав Женину поделку, – так что не годится.
– Да и развалился он у тебя вон весь во время полета, – подметил, слегка посмеиваясь, Андрей. – Кажись, где-то у тебя здесь баг. Гришка, проведи этому самолетику стресс-тестирование.
– Так, ребята, давайте серьезнее, – прервала наше ребячество Юля.
– Баг… Баг… – зацепился я за упомянутое Андреем прекрасно знакомое мне слово. – Слушайте, а что вы знаете про самый первый зафиксированный баг?
– Гриш, сейчас не время для погружения нас в область тестирования… – протянул Евгений.
– Да нет, вы послушайте, – постарался заинтересовать я коллег, – самый первый баг был зафиксирован 9 сентября 1947 года.
– И зачем нам сейчас эта информация? – слегка устало поинтересовалась Юлия.
– А затем. Этим самым первым багом оказался мотылек, застрявший между контактами электромеханического реле2.
– Ты предлагаешь нам сделать продукт в виде мотылька? – довольно быстро сообразил Андрей, к чему я вел.
– Практически. Мотылек – это ведь бабочка. Почему бы нам не сделать наш летательный аппарат в виде бабочки? Основной вес придется на туловище. В него с помощью выдвижных лапок будем собирать зерна. Да и крылья придумаем, как и из чего сделать!
После того как я озвучил свою идею, все погрузились в раздумья, а в зале на какое-то время воцарилась тишина. Потом же мы еще долго обговаривали идею, реализацию, какие сложности могут возникнуть и тому подобные вещи, но к середине ночи мы все же сошлись на том, что бабочка – самый подходящий сосуд для озвученной нам миссии.
Таким образом, как бабочки откладывают яйца, чтобы из них появились новые особи, так и мы заложили основу нашего продукта. И уже с раннего утра следующего дня приступили к работе над нашим новым проектом, который получил простое, но довольно броское название – «Бабочка».
Глава 2. Личинка
Как известно, бабочка, находясь в стадии гусеницы, интенсивно питается, запасая питательные вещества перед переходом в следующую стадию. Вот и наш проект перед тем, как превратиться в целостный и отлаженный продукт, должен был изначально набрать определенную базу.
Мы еще в предыдущий день обговорили кто чем займется, поэтому Вячеслав Сергеевич застал уже каждого из нас за своим делом. Мы вкратце обрисовали ему нашу идею, примерные сроки реализации и какая, где и чья помощь нам может понадобиться. Начальник отдела разработки нас внимательно выслушал и, немного обмозговав нашу задумку, дал зеленый свет на ее воплощение.
После общения с руководством каждый из нас вернулся к своей работе. Андрей изобретал алгоритм полета, стараясь учесть различные сложности и препятствия. Юлия занялась программированием механизма распознавания зерен. Евгений разрабатывал корпус и инструмент сбора семян. Ну а я продумывал тесты и какие материалы для них нам понадобятся на стадии испытаний.
Помимо разработки тестовых сценариев, на мне, как на человеке, который прекрасно оперирует цифрами, повисла задача просчитать все необходимое. Все вычисления нужно было провести именно в самом начале, чтобы в будущем нам не пришлось кардинально все переделывать или вовсе начинать сначала.
Итак, что мы имеем? Нам необходимо создать объект небольшого размера (не больше емкости стакана) весом до 50 грамм. А также нам нужно такое количество семян, чтобы засеять 3000 м2 земли.
Задача была поставлена, а вот условия нам обозначили довольно расплывчато. На мой вопрос, почему в размерах нашего изобретения мы должны ориентироваться именно на емкость стакана, получил ответ, что при испытаниях лишь объекты равные либо меньшие по объему не были замечены. Что ж, пришлось исходить из того, что имели.
Я взял за основу самый обычный стакан, узнал его размеры, и, основываясь на полученных знаниях, начертил эскиз нашей бабочки. Красотой, увы, пришлось немного пожертвовать. Но нам ведь куда важнее была ее функциональность, чем внешний вид.
Внутри команды мы еще в момент обсуждения обговорили, какая часть насекомого за что будет отвечать, а потому я четко представлял нашу бабочку. В голове насекомого расположится распознаватель семян, над которым работает Юлия. В усики мы встроим навигацию, над которой уже корпит Андрей. Крылья будут управлять полетом, помогать менять направление и облегчать бабочке борьбу с ветром. А тело нашей чешуекрылой, макет которой в скором времени нам презентует Евгений, будет служить сосудом для семян. Механизм работы будет простой: бабочка, распознав нужное нам зерно, будет подлетать к нему, захватывать лапками и складывать внутрь себя.
Мне удалось сохранить несколько первых набросков, которые я делал на этом этапе. Если вам интересно, то можете изучить. Здесь, конечно, еще все далеко от идеала, но основная суть должна быть ясна.
После того как мне удалось изобразить то, что мы все, в принципе, и так представляли, я переключился на другие вычисления. Теперь предстояло рассчитать, сколько должна переносить одна бабочка и как много понадобится дней и чешуекрылых особей, чтобы успеть в срок.
Я не буду вас грузить всеми моими математическими изысканиями, лишь кратко сообщу то, что получил в итоге.
Готовый рабочий экземпляр мы намеревались подготовить к сентябрю, что гарантировало нам 159 дней на получение не менее 42 кг зерен. Ресурсов на изготовление бабочек, по нашим подсчетам, нам хватило бы на 124 особи. Коконов, в которых они будут заряжаться, мы могли предоставить всего 50, а это означало, что за сутки всего лишь полсотни бабочек смогут отправиться на поиски семян. Но, делая поправку на то, что не все чешуекрылые смогут вернуться по различным не зависящим от нас причинам, мы рассчитывали всего на 40 особей в день. Учитывая тот объем, который может вместить в себя наш агрегат, мы получили, что одна бабочка за раз сможет принести как минимум 116 зерен, максимальный вес которых составит 7,54 грамма.
Закончив с калькуляцией и чертежами, я передал все свои черновики, комментарии и расчеты Евгению. Дальше уже дело было за ним. Сам же я наконец занялся придумкой того, какие испытания необходимо будет провести. Они помогут нам удостовериться, что все работает именно так, как мы и задумывали.
Приступив набрасывать то, что мне следует протестировать, я получил следующее: проверить алгоритм распознавания семян, следование заданному направлению, реакцию бабочки на ветер, поведение при различных погодных условиях и скоростях ветра, возможность облететь препятствия и способность захватывать зерна из различных положений. Уверен, что это далеко не весь перечень, который тогда удалось наметить, но самые основные и важные пункты я вам сейчас обозначил.
Работа кипела, бабочка наращивала свой арсенал, дни пролетали незаметно один за другим. Мы же так увлеклись проектом, что иногда даже забывали про еду и сон. Думаю, что такое состояние знакомо всем, кто хоть раз в жизни испытывал творческий подъем и вдохновение от идеи, которая занимает все мысли. В общем, мы трудились в поте лица круглые сутки.
Глава 3. Куколка
Перед тем как гусеница превратится в удивительное создание с крыльями, ей необходимо замуровать себя в кокон. В состоянии куколки у насекомого происходит кардинальная перестройка всего, начиная от внутренних органов и закачивая окрасом. Этот период может длиться как пару недель для одних видов, так и несколько месяцев для других. У нас же на все про все оставалось 30 дней.
В тот момент, когда каждый из необходимых пунктов получил статус «выполнен», настало время объединить все части в единое целое. Этот этап всегда очень волнительный, ведь любая случайно ускользнувшая от нашего внимания деталь с легкостью могла стать тем самым камнем преткновения, из-за которого придется очень многое менять.
Безусловно, слияние – это интересно, страшно, ответственно, но в нашем конкретном случае это еще и безумно красиво. Скоро вы поймете почему.
Накануне слияния всех частей мы имели готовый каркас бабочки, кокон и необходимые алгоритмы. Самодельная куколка была предназначена помочь нашей чешуекрылой наполниться всей необходимой информацией, а после, словно аккумулятор, поддерживать в ней жизненную энергию. Она довольно сильно отличалась от тех, что мы привыкли видеть в жизни, но было в искусственно созданном коконе и что-то волшебное.
В день Х бабочка была погружена в сосуд из множества информационных нитей и оставлена впитывать знания. Никто из нас не знал, сколько по времени может занять этот процесс, но мы рассчитывали, что не больше двух-трех суток. В итоге загрузка данных заняла чуть больше, так как некоторые куски оказались довольно объемными, но не будем вдаваться в детали, ведь я хочу вам поведать вовсе не это.
В один из дней я пришел в лабораторию раньше всех. Мне всегда плохо спалось в преддверии финальных испытаний, а потому накануне этого ответственного этапа меня всегда с легкостью можно было найти на рабочем месте. Когда я вошел в лабораторию, не сразу нащупал выключатель, а вот мой взгляд моментально оказался прикован к нашему изобретению.
Прямо на моих глазах творилась настоящая магия. Маленький и по первому впечатлению хрупкий сосуд наполнялся жизненной силой. Энергия скользила по светящимся нитям самодельной куколки и не давала отвести взгляд. Это зрелище завораживало и восхищало. В тишине комнаты слышалось едва уловимое гудение, напоминающее легкое сопение спящего насекомого. Я замер и, кажется, практически перестал дышать, боясь потревожить сон этого создания, помешать твориться чуду.
Трудно сказать, сколько прошло времени до того момента, как Юлия вошла в кабинет, нарушив мою идиллию. Она всегда приходила на час раньше других, и сегодняшний день не стал исключением. Юля включила свет, и вся магия тут же исчезла, явив предо мной самый обычный стол, сосуд и механическое насекомое.
– А ты чего здесь в такую рань? – поинтересовалась она у меня.
– Да вот уже жду не дождусь, когда можно будет приступить к тестированию, – довольно честно ответил ей я.
– Скоро уже… – обрадовала меня Юлия. – По прогнозам, осталось не больше суток. У тебя уже все готово?
– А как же!
К испытаниям я подготовился довольно тщательно. Первым пунктом в списке стояло – навестить агрономов. Для тестирования мне необходимо было заполучить образцы семян пшеницы, которых и без того числилось непозволительно мало. Я долго объяснял важность нашего проекта, но уговорить удалось лишь тогда, когда пообещал вернуть зерна в целости, сохранности и в том же количестве обратно не позднее, чем через месяц. Помимо пшеницы, мне нужны были примеры и других злаковых культур, которые могут встретиться нашей бабочке. С этим было попроще, ведь я сразу условился, что все верну. Заполучив, рассортировав и подписав полученные образцы, я убрал их в укромное место дожидаться своего часа.
Со многими другими пунктами мне удалось справиться своими силами: продумать и соорудить всевозможные препятствия, рассчитать допустимый поток воздуха, чтобы уложиться в оговоренное количество дней, а также описать и подготовить поверхности со всевозможными положениями семян для тестирования захвата. Помимо вышесказанного, я учел еще множество других необходимых нюансов, но не будем долго на этом останавливаться.
А вот с ветром была засада. Мне никак не удавалось придумать, как воссоздать необходимый поток воздуха. На улице дожидаться нужной скорости – не выход, ведь сильные ветра в ближайшие пару недель не обещали, а заглядывать в прогноз погоды дальше – бесполезно. Имеющиеся у нас вентиляторы нужного потока не выдавали, так что данный пункт завел меня тогда в тупик, чем очень сильно расстроил.
Но выход нашелся довольно неожиданно. После того как я на одном из плановых совещаний обрисовал, чего мне не хватает, Вячеслав Сергеевич оказал содействие. Выяснилось, что одна его одноклассница работала в театре. Сейчас, конечно, сцена пустовала, а артисты были заняты на иных работах, из-за чего сценический инвентарь пропадал зазря. Одним из таких невостребованных предметов оказался вентилятор для сцены, способный в зависимости от установленного режима варьировать дуновение от легкого бриза до порывистого шквала. После пары запусков предоставленной машины я не удержался и воскликнул:
– Это именно то, чего мне так не хватало!
Таким образом, к моменту загрузки данных в объект я уже был во всеоружии и ждал отмашки начать испытания. И, как только Андрей объявил, что все готово, мы с командой начали прогонять тесты, выбранные для финальной стадии.
Глава 4. Имаго: перед полетом
Испытания выполнялись более чем успешно, и тесты один за другим получали статус «пройден». Меня, конечно, с одной стороны радовал такой результат, но с другой, в глубине души, как любому инженеру по качеству, хотелось найти хоть что-то. Несомненно, определенный набор проверок мы сделали с каждой частью в отдельности еще до слияния. Именно на тех этапах мы устранили большинство обнаруженных ошибок и недочетов. Сейчас же, после компоновки всех алгоритмов и приспособлений воедино, перед нами стояла задача прогнать финальные тесты.
Этот этап, по моему мнению, является одним из важнейших, ведь даже если что-то прекрасно работает автономно, такое вовсе не означает, что будет отрабатывать без ошибок при взаимодействии с другими частями. Да и просто прогнать механизм на работоспособность перед запуском – святое дело, ведь даже бабочка, вылупившись из кокона, не сразу взлетает в небеса.
Да. Мы знаем, что жизненный цикл чешуекрылых состоит из четырех этапов, но лично я бы упомянул еще об одном непродолжительном, но очень важном моменте. Он занимает всего несколько часов, но без него бабочка никогда бы не пустилась в полет.
Когда чешуекрылые особи вылупляются из куколки, то крылья, чтобы окрепнуть, в первый час наполняют жидкостью. Затем бабочка еще какое-то время сушит их, вися вниз головой, и лишь потом пускается в путь. Пропусти она этот этап, попробовав сразу взлететь, – вместо небес оказалась бы на земле.
Вот и в разработке программных продуктов, чтобы не упасть в грязь лицом, нужно обязательно проверить все перед запуском в эксплуатацию. Многие любят полагаться на удачу и пропускать данный этап, ссылаясь на нехватку времени и что все было проверено еще во время разработки. Наша же команда старается такое не практиковать.
В финальном тестировании программы заняты все участники команды. Конечно, я, как человек, ответственный за качество, на этом этапе руковожу процессом. Именно от меня исходят поручения кому, что и где сделать, а также каким моментам уделить особое внимание. Но даже сейчас никто из разработчиков не сидит без дела. Таким образом, все участники команды заняты работой вне зависимости от того, на какой стадии сейчас проект.
Все шло по плану, пока я не заметил одну небольшую деталь:
– Жень, а сколько весит наш финальный экземпляр бабочки?
– Слушай, – почесав затылок, начал отвечать мне Евгений, – я тебе точную цифру не назову, но не больше 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!
Мы все дружно смеялись и радовались благополучному исходу сложившейся ситуации. Бесспорно, наличие багов нас расстроило, но никто от них не застрахован. Главное – сделать правильные выводы. И, как оказалось, иногда допущенные ошибки могут привести и к чему-то хорошему.
Оставшийся путь прошел без приключений, и наша бабочка вернулась на базу АО «ЗАСЛОН» с полным брюшком семян пшеницы. Словами не передать, как мы ликовали, что наш проект принес свои плоды. Конечно, нам предстояло еще создать немало подобных механизмов, провести несчитанное количество часов в ожидании прилета каждой бабочки и перебрать огромное количество зерен. Но вот он! Первый полет, первый результат, первые семена! Вот она, надежда на то, что на нашем столе всегда будет хлеб!
Эпилог
– И что, удалось собрать нужное количество семян? – задал мне вопрос мой самый младший внук, который эту историю слышал впервые.
– Собрали, – гордо ответил я, – и даже больше, чем рассчитывали! С тех времен в чем в чем, а уж в хлебе мы нужды не знали! Позже бабочек приспособили и для других дел. Например, для посева.
– А если бы бабочка тогда все же не взлетела? Проект бы закрыли?
– Все возможно. Но ведь взмах крыла бабочки не всегда должен приводить к чему-то плохому? – произнес я, лукаво улыбаясь.
Много событий произошло после того дня, когда наша маленькая бабочка совершила свой первый полет. Обо всех сейчас уже и не смогу рассказать подробно… Помню, как мы помогали спасать некоторые виды животных от вымирания, как осваивали новый мир и даже как вступали в переговоры с людьми на других уцелевших участках суши, пытаясь наладить контакт. Да много всего! Можно, наверное, целую книгу написать. И, похоже, я даже знаю, с чего бы она началась…
Однажды, в отдаленном уголке земли над синим-синим морем одна маленькая бабочка взмахнула крылом, и…