Виктор утверждал, что у Андрея есть одно неоспоримое преимущество перед остальными инженерами: он никогда не помнит, сколько времени потратил на решение задачи.
Андрей обычно отвечал, что это компенсируется недостатком — он не помнит и того, сколько ему за эту задачу заплатили.
Шутка была старой. Насколько старой, Андрей не знал. Но Виктор всякий раз смеялся, и этого было достаточно.
— Доброе утро, Андрей.
Голос прозвучал из динамика на прикроватной тумбочке.
Андрей открыл глаза. На потолке медленно проплывала тень от ветки за окном. Было светло, хотя октябрь уже подходил к середине.
— Доброе. Который час?
— Семь сорок две. Понедельник, четырнадцатое октября.
— Как спалось?
— Шесть часов пятьдесят три минуты. Два кратковременных пробуждения. Пульс в пределах обычных значений.
— Я спрашивал, как тебе спалось.
— Я не сплю, Андрей.
— Скучная у тебя жизнь.
Он сел на кровати и потянулся за очками.
Внешне они мало отличались от обычных: темная титановая оправа, чуть утолщенные дужки, прозрачные линзы. Только внимательный наблюдатель мог заметить крошечный объектив у переносицы и почти незаметный выступ проектора над правым стеклом.
На линзе появилась надпись:
МНЕМОС. Локальное соединение установлено.
Следом — короткая сводка.
Сегодня: встреча с заказчиком, 10:30. Объект «Гранит». Виктор заберет вас в 09:15.
Вчера: завершено тестирование обновленного поискового индекса. Критических ошибок нет.
Незавершенные задачи: 3.
— Что за незавершенные?
— Заменить фильтр кофемашины. Ответить Елене Сергеевне. Проверить результаты ночного резервного копирования.
— Фильтр кофемашины — это критическая задача?
— Нет. Но вы назначили ей высокий приоритет.
— Разумно. Кто такая Елена Сергеевна?
— Ваш лечащий врач. Невролог. Последний прием — девятого октября.
— А, Елена. Что ей ответить?
— Она спрашивала, удобно ли вам перенести следующий прием на пятницу.
— Удобно?
— В пятницу у вас нет запланированных встреч.
— Тогда ответь, что удобно.
— Отправить сообщение?
— Да.
На линзе мелькнул значок отправки.
Андрей встал и направился в ванную.
На зеркале висела небольшая наклейка:
ПРОВЕРЬ, ЧТО ТЫ УЖЕ СДЕЛАЛ.
Он сам ее приклеил. Когда — не помнил. Судя по потрепанным краям, давно.
— МНЕМОС, я умывался?
— Нет.
— Зубы чистил?
— Нет.
— А вчера?
— Да.
— Уже хорошо.
На кухне пахло кофе.
Андрей остановился в дверях.
— Марина?
— Уехала в восемь двенадцать, — ответила МНЕМОС. — Кофе приготовлен автоматической кофемашиной по расписанию.
— А сейчас семь пятьдесят восемь.
— Верно.
— Значит, она уехала в будущее?
Пауза длилась долю секунды.
— Исправление: Марина уехала в семь двенадцать. Предыдущий ответ содержал ошибку преобразования времени.
— Запиши баг.
— Создана задача в журнале разработки.
— И поставь высокий приоритет.
— Вы уверены? Ошибка не влияет на основные функции системы.
— Сегодня ты перепутала время отъезда жены. Завтра сообщишь, что я родился на сорок лет позже. А послезавтра начнешь требовать от меня алименты.
— Аргумент не соответствует известным сценариям отказа.
— Вот поэтому ты никогда не станешь хорошим руководителем.
Он налил кофе и сел за стол.
На экране очков появилась фотография чашки с подписью:
Кофе № 1. 08:01.
— Спасибо, я заметил.
— Запись создана для предотвращения повторного употребления кофеина в короткий промежуток времени.
— Сколько раз я вчера пил кофе?
— Пять.
— Ого.
— Последние две чашки вы выпили с интервалом в одиннадцать минут.
— Почему ты меня не остановила?
— Вы отключили предупреждения после третьей чашки.
Андрей вздохнул.
— Сильный противник. Знает все мои слабости.
— Вы сами настроили эту функцию.
— Вот именно.
Он открыл холодильник. На верхней полке лежал контейнер с сырниками. На крышке — записка от Марины.
Разогрей. Не забудь поесть. Целую.
Андрей улыбнулся.
— МНЕМОС, напомни вечером поблагодарить Марину за завтрак.
— Напоминание создано.
Он поставил контейнер в микроволновку.
— И проверь, не благодарил ли я ее уже.
— Проверю.
В девять пятнадцать Виктор позвонил в дверь.
Андрей открыл почти сразу.
— Привет, старик.
— Сам старик. Собрался?
— Судя по тому, что я стою в куртке с рюкзаком, да.
Виктор заглянул через его плечо.
— Ноутбук взял?
— МНЕМОС?
— Ноутбук находится в рюкзаке. Заряд — девяносто три процента. Последняя синхронизация — восемь пятьдесят шесть.
— Видишь? — Андрей развел руками. — Организованный человек.
— А ключи?
Андрей машинально похлопал по карманам.
— МНЕМОС?
— Ключи от квартиры находятся в правом кармане куртки.
— Идеально.
Виктор усмехнулся.
— Когда-нибудь она начнет напоминать тебе, как дышать.
— Когда-нибудь она начнет напоминать тебе, что надо меньше разговаривать.
Они вышли на лестничную площадку.
Виктор был на год старше, чуть выше и заметно шире в плечах. В школе их постоянно путали из-за одинаковых темных курток, пока Виктор не начал заниматься боксом, а Андрей — программированием.
Впрочем, по словам Виктора, Андрей начал программировать гораздо раньше, чем научился нормально разговаривать.
Лифт спускался медленно.
— Как Марина? — спросил Виктор.
— Нормально. Уехала рано.
— У нее сегодня много дел.
— Ты в курсе?
— Вчера разговаривали.
Андрей кивнул.
МНЕМОС отметила разговор как событие, но не предложила дополнительных сведений. Андрей не задавал вопроса.
В лифте Виктор посмотрел на него внимательнее.
— Ты вообще как?
— В смысле?
— Самочувствие.
— Хорошо. А что?
— Да ничего. Просто спросил.
— Тогда хорошо.
Виктор отвернулся к дверям.
Объект «Гранит» занимал два этажа в новом офисном комплексе на окраине города. Компания производила промышленную электронику и держала собственный вычислительный кластер для испытаний оборудования.
Проблема, из-за которой вызвали Андрея, выглядела неприятно: один из серверов периодически терял связь с измерительными модулями. Перезапуск помогал на несколько часов, затем ошибка возвращалась.
Заказчик уже заменил сетевой адаптер, обновил прошивку и дважды переустановил программное обеспечение.
Теперь подозревали контроллер.
— Я бы его сразу поменял, — сказал молодой инженер по имени Павел, когда они вошли в серверную.
Андрей посмотрел на него.
В правом верхнем углу поля зрения появилась карточка:
Павел Корнеев. Инженер эксплуатации. Встречались 2 раза. Последняя встреча — 7 октября.
Примечание: предпочитает прямые технические объяснения. Не любит обсуждение очевидных вещей.
— А почему не поменяли? — спросил Андрей.
— Запасного нет. Заказывать две недели.
— Отлично. Значит, у нас есть две недели, чтобы доказать, что он ни при чем.
Павел не улыбнулся.
Виктор незаметно толкнул Андрея локтем.
— Он шутит.
— Я понял, — сказал Павел.
По его лицу было видно, что не понял.
Андрей подошел к стойке и подключил ноутбук к диагностическому порту.
— Покажите последние ошибки.
Павел открыл журнал.
На экране тянулись строки с временными метками, кодами исключений и сообщениями о потере связи.
Андрей просмотрел несколько десятков записей.
— МНЕМОС, найди похожие случаи в нашем архиве.
— Найдено одиннадцать событий с близкими симптомами. Три связаны с ошибками прошивки, пять — с нестабильным питанием, два — с повреждением кабеля, одно — с перегревом интерфейсного модуля.
— Покажи питание.
На линзе появились короткие выдержки из старых отчетов.
Андрей сравнил временные метки.
— Интересно.
— Что? — спросил Виктор.
— Ошибки возникают не случайно. Посмотрите.
Он развернул ноутбук к остальным.
— Вот потеря связи. Через три секунды — восстановление. Потом четыре часа нормально. Следующая потеря — снова три секунды. И так каждый раз.
— Контроллер перезагружается, — сказал Павел.
— Возможно. Но почему ровно три секунды?
— Watchdog?
— Тогда должны быть другие сообщения. А их нет.
Андрей открыл график напряжения.
— Вот.
Павел наклонился.
— Просадка?
— Да. Незначительная. Но синхронная с ошибкой.
— Блок питания новый.
— Это ничего не доказывает.
— Мы его проверяли.
— Чем?
— Мультиметром.
Андрей повернулся к Виктору.
— Вить, ты слышал?
— Слышал.
— Запиши в протокол: мультиметр не умеет предсказывать будущее.
— Очень смешно, — сказал Павел.
— Я серьезно. Кратковременную просадку он может не показать. Нам нужен осциллограф.
Павел посмотрел на стойку.
— У нас есть портативный. Сейчас принесу.
Когда дверь за ним закрылась, Виктор прислонился к стене.
— Ты уверен?
— Нет.
— А выглядишь уверенно.
— Это профессиональный навык.
— Ты его в институте освоил?
— Нет, в браке.
Виктор засмеялся.
Андрей тоже улыбнулся, но почти сразу нахмурился.
— МНЕМОС, что мы сейчас проверяем?
— Нестабильность питания интерфейсного модуля. Гипотеза: кратковременная просадка напряжения вызывает потерю связи. Павел отправился за осциллографом.
— Точно. Спасибо.
Виктор наблюдал за ним молча.
Андрей заметил взгляд.
— Что?
— Ничего.
— Ты так смотришь, будто я забыл надеть штаны.
— Нет, штаны на месте.
— Тогда все в порядке.
Осциллограф подтвердил подозрение через двадцать минут.
На линии питания возникали короткие провалы напряжения, совпадавшие с включением соседнего измерительного блока.
Причина оказалась прозаической: неисправный разъем распределительной платы. Контакт сохранялся при обычной нагрузке, но кратковременно ухудшался при резком изменении тока.
— Значит, контроллер менять не надо? — спросил Павел.
— Нет.
— А прошивку?
— Тоже нет.
— А почему мы три недели мучились?
Андрей пожал плечами.
— Потому что искали сложную неисправность.
— А она простая?
— Нет. Она просто не там, где вы искали.
Павел задумался.
— Ладно. Это справедливо.
Виктор уже разговаривал с начальником участка, объясняя результаты диагностики.
Андрей тем временем сохранил осциллограммы и попросил МНЕМОС подготовить черновик отчета.
— Добавь рекомендации по проверке остальных разъемов той же партии.
— Добавлено.
— И отметь, что контроллер исправен.
— Добавлено.
— И что Павел молодец.
Пауза.
— Уточните формулировку.
— За оперативное предоставление оборудования и помощь в диагностике.
— Добавлено.
Андрей отключил ноутбук.
Павел подошел к нему.
— Слушайте, можно вопрос?
— Конечно.
— А это правда, что вы почти ничего не запоминаете?
Андрей посмотрел на него.
— Смотря что.
— Ну, события. Разговоры.
— Новые — почти нет. Через несколько минут они начинают исчезать. Иногда быстрее.
— Но вы же только что нашли неисправность.
— А почему нет?
— Ну... я думал, если память не работает...
— У меня не вся память не работает. Я знаю, как устроена электроника. Помню законы физики, языки программирования, школьные стихи. А вот о чем мы разговаривали десять минут назад — могу не помнить.
Павел кивнул.
— То есть знания остаются?
— В основном да. А новые события я записываю.
Андрей коснулся дужки очков.
— У меня довольно хороший секретарь.
— Искусственный интеллект?
— В том числе.
— И он все помнит?
— Не все. Только то, что сумел заметить и записать.
— А если не заметил?
— Тогда приходится пользоваться старым методом.
— Каким?
— Спрашивать людей.
Павел улыбнулся.
— Не очень надежно.
— Согласен. Особенно если спрашивать Виктора.
Из-за стойки донеслось:
— Я все слышу!
— Вот видишь, — сказал Андрей. — А я через пять минут уже не буду.
Обратно они ехали молча.
Виктор вел машину, Андрей смотрел в окно.
За стеклом тянулись мокрые улицы, рекламные экраны, остановки с людьми под зонтами. Октябрьский город выглядел так, словно кто-то убавил насыщенность цветов.
— Хорошо сегодня сработали, — сказал Виктор.
— Да?
— Да.
— МНЕМОС?
— Диагностика завершена успешно. Обнаружен дефект разъема распределительной платы. Заказчик подтвердил устранение неисправности. Отчет подготовлен.
— Прекрасно.
Андрей откинулся на спинку сиденья.
— Иногда мне кажется, что я мошенник.
— Почему?
— Потому что получаю удовольствие от результата, которого не помню.
— Ты его сделал.
— Знаю. У меня есть документы.
Виктор помолчал.
— Ты все равно остаешься хорошим инженером.
— Спасибо, мам.
— Иди к черту.
Андрей рассмеялся.
Через несколько минут он снова посмотрел на Виктора.
— Слушай, а как там отец?
Виктор чуть крепче сжал руль.
— Что?
— Отец. Давно с ним не разговаривал.
МНЕМОС не вывела никакой подсказки.
— Ты сейчас занят, Андрюх, — сказал Виктор.
— Чем?
— Работой. Отчет надо закончить.
— Да, точно.
Андрей посмотрел на экран телефона.
— МНЕМОС, напомни мне позвонить отцу вечером.
— Напоминание сохранено в текущем профиле.
Виктор ничего не сказал.
Дома Андрей оказался около шести.
Марина сидела за кухонным столом с ноутбуком. Перед ней стояла чашка давно остывшего чая.
— Привет, — сказал он.
Она подняла глаза.
— Привет.
— Как день?
— Нормально.
— У меня тоже. Кажется, я сегодня спас чью-то электронику.
— Виктор рассказывал.
— Быстро он.
Андрей снял куртку и повесил ее на крючок.
— Ты ужинала?
— Нет.
— Тогда я закажу что-нибудь.
— Я приготовила.
— Отлично. Люблю, когда мои решения оказываются правильными еще до того, как я их принял.
Марина чуть улыбнулась.
Андрей подошел и поцеловал ее в щеку.
Она не отстранилась, но и не повернулась к нему.
— Ты устала? — спросил он.
— Да.
— Работа?
— Не только.
Андрей хотел спросить еще что-то, но в этот момент часы коротко завибрировали.
Незавершенная задача: проверить резервное копирование.
— Я на пять минут в кабинет, ладно?
Марина закрыла ноутбук.
— Конечно.
Он уже дошел до двери, когда она окликнула его:
— Андрей.
— Да?
Она смотрела на него несколько секунд.
— Ничего. Потом.
— Хорошо.
Он ушел.
В кабинете тихо гудел сервер.
Небольшой черный корпус стоял на отдельной полке рядом с сетевым накопителем и источником бесперебойного питания. Несколько зеленых индикаторов мигали в темноте.
Андрей сел за стол.
— МНЕМОС, статус резервного копирования.
— Последняя полная копия завершена в 03:14. Контрольные суммы совпадают. Ошибок нет.
— Отлично.
Он открыл журнал.
Система аккуратно перечисляла события дня: пробуждение, завтрак, поездка, диагностика, разговоры, возвращение домой.
Каждая запись имела временную метку, ссылки на исходные данные и краткое резюме.
Андрей прокрутил список.
— Хороший день, — сказал он.
— По вашим обычным критериям — да.
— А какие у меня критерии?
— Успешное завершение профессиональной задачи, отсутствие серьезных конфликтов, умеренная физическая активность и положительные социальные взаимодействия.
— И кофе?
— Сегодня вы выпили три чашки.
— Всего три? Я становлюсь лучше.
— Вчера вы произнесли ту же фразу после четвертой чашки.
— Не порть момент.
Он закрыл журнал.
На рабочем столе лежала старая фотография в деревянной рамке.
Молодой Андрей, лет двадцати, стоял рядом с отцом на фоне гаража. Оба были перепачканы машинным маслом и улыбались в объектив.
Отец держал в руке какой-то металлический узел, похожий на автомобильный генератор.
Андрей взял рамку.
— МНЕМОС, когда сделана эта фотография?
— По данным семейного архива — август две тысячи восьмого года.
— Помню.
И действительно помнил.
Жаркий день, запах бензина, отцовские руки, испачканные маслом. Они тогда целый день возились со старой машиной, спорили, смеялись, а вечером отец сказал, что Андрей наконец научился отличать гаечный ключ от молотка.
Странно было осознавать, что события двадцатилетней давности оставались с ним, а сегодняшний день уже превращался в набор записей.
Он поставил рамку обратно.
— Надо бы позвонить старику.
— В текущем профиле есть напоминание об этом.
— Когда?
— На девятнадцать часов.
— Хорошо.
Андрей посмотрел на часы.
Было восемнадцать сорок семь.
— Тринадцать минут. Успею допить чай.
Он вышел из кабинета.
На кухне Марина стояла у окна.
— Ты чего здесь в темноте? — спросил Андрей.
— Просто стою.
Он обнял ее сзади.
— Я сегодня молодец, между прочим.
— Знаю.
— Виктор рассказал?
— Да.
— Быстро он.
Марина закрыла глаза.
— Ты уже говорил.
— Что?
— Что Виктор быстро рассказал.
— А.
Он помолчал.
— МНЕМОС, почему ты меня не предупредила?
— Повторение фразы не превышает установленный порог значимости.
— Надо снизить порог.
— Создать задачу?
— Да.
Марина вдруг тихо засмеялась.
Андрей удивленно посмотрел на нее.
— Что?
— Ничего. Просто вы оба совершенно невозможные.
— Кто оба?
— Ты и твоя машина.
— Зато мы стараемся.
Он поцеловал ее в висок.
На мгновение Марина прижалась к нему.
Потом осторожно высвободилась.
— Пойдем ужинать.
В девятнадцать часов часы завибрировали.
Андрей посмотрел на уведомление.
Напоминание: позвонить отцу.
Он нахмурился.
— МНЕМОС, почему я должен позвонить отцу?
— Вы создали напоминание сегодня в 15:47.
— А, понятно.
Он открыл список контактов.
Имя отца находилось в самом верху избранного.
Андрей нажал на него.
На экране появилось сообщение:
Действие недоступно в текущем профиле.
— Это еще что за ерунда?
— Для данного контакта действуют специальные правила обработки коммуникаций.
— Какие?
— Правила установлены владельцем профиля.
— То есть мной?
— Да.
Андрей вздохнул.
— Иногда я бываю редкостным занудой.
Он собирался открыть настройки, но из кухни донесся голос Марины:
— Андрей, ужин остывает!
— Иду!
Он отложил телефон.
— МНЕМОС, создай задачу проверить настройки контактов.
— Создано.
— Приоритет обычный.
— Принято.
Андрей вышел из кабинета.
На экране телефона еще несколько секунд оставалось открытым окно контакта.
Потом дисплей погас.
В журнале событий появилась новая строка:
19:01:23. Попытка исходящего вызова. Контакт: Отец. Операция отклонена политикой профиля.
19:01:24. Пользователь уведомлен.
19:01:41. Создана задача диагностики.
19:02:03. Контекст активной сессии завершен.
В соседней комнате Андрей уже рассказывал Марине, как они с Виктором нашли неисправный разъем.
Он рассказывал увлеченно, с жестами, смеясь над собственными шутками.
Марина слушала.
Эту историю она слышала сегодня уже во второй раз.
И ни разу не сказала ему об этом.