Шеф, все пропало!
Утро понедельника Римас начал с планерки. Первым в кабинет с взъерошенной шевелюрой влетел Леонид Матвеевич Остроградский, начальник отдела программирования вычислительного центра, с криком почти как в «Бриллиантовой руке»: «Шеф, все пропало! Программу запороли!»
Дело в том, что более полугода назад Лукас Брониславович Лейтис инициировал разработку программы автоматизированной обработки данных бухгалтерского учета банковских операций и поручил это программистам вычислительного центра. Программа должна оптимизировать обработку данных. Со следующего понедельника должно было начаться испытание программы. Но как выяснилось утром, на этапе компиляции произошел сбой.
Было понятно, что закралась ошибка. Однако проблема заключалась в том, что найти ошибку в программе не так просто. Можно даже сказать, совсем не просто!
К концу рабочего дня Римас спустился к программистам и задержался допоздна. С мертвой точки так и не удалось сойти. Он разогнал всех по домам. А с утра предложил отыскать строку, в которой проявляется ошибка. Тогда можно будет пройти по коду назад и понять, где она сидит.
Во вторник Римасу с Иваном и Олегом пришлось выехать в Шауляй на весь день. Там был задержан инкассатор, инсценировавший собственное ограбление.
В среду к концу рабочего дня Леонид Матвеевич робко доложил, что строчку с ошибкой они нашли, но... увы, это не помогло. Скорее всего, есть еще ошибки.
— Ошибки?! — Римас взревел так, что Антон поспешил прикрыть дверь кабинета.
— Леня, ты спятил? — орал Римас на своего бывшего однокурсника. — Я разгоню ваш шалман! Передай своим «кофеманам»: буду увольнять к чертовой бабушке тех, кого во время работы за компьютером застану с чашкой кофе!
Не найдете ошибку — лишу премии! А еще лучше — уволю всех к чертям собачьим! Свободен!
После ухода Леонида Римас задумался.
У него самого нет времени, чтобы забросив дела, сесть и самому искать возможные ошибки. Стоп, надо позвать Арса!
Он быстро позвонил домой. Трубку снял Арс.
— Привет, сын! Ты мне как раз и нужен. Послушай, у нас не идет программа. Приезжай, посмотри своим незамыленным взглядом. У меня сейчас совсем нет времени, чтобы искать ошибки. Сможешь?!
— Конечно, пап!
— А мама далеко? Предупреди ее, что можем задержаться допоздна. Скажи, что я люблю ее. Нечего хихикать! Бери Андриуса и дуйте сюда! Кстати, я не обедал сегодня. Привези бутерброд отцу.
Арсений поднялся в приемную. За компьютером сидел молодой человек.
— Добрый вечер! Меня зовут Антон, и я помощник Римаса Александровича. Чем могу вам помочь?
Арсений не успел ответить, как открылась дверь и появился отец.
— Проходите, Арсений, я вас жду! — пропустил он сына в кабинет, а Антона попросил предупредить программистов, что через пять минут будет у них.
— Снимай куртку, сынок.
— Пап, я тебе поесть принес. Мама сегодня пекла маленькие сырные пироги. И еще просила передать, что по-прежнему любит тебя.
Римас рассмеялся и пригласил сына в комнату отдыха за кабинетом. Эту потайную комнату Лукаса Лейтиса он обнаружил случайно.
Здесь было уютно: стояли два кресла и диван, шкаф для одежды, шкафы с рабочими папками, книгами, небольшой обеденный столик, холодильник и телевизор. В соседней комнате располагался туалет и душевая.
Римас с удовольствием съел пару маленьких пирогов. С Арсом они прошли в Вычислительный центр. Он коротко объяснил сыну, что представляет собой программа. Описал, в каком из блоков была найдена ошибка, но результат оказался нулевой.
Он представил Арсения как способного программиста, любезно согласившегося им помочь.
Арсений уселся за компьютер. По тому, как он быстро и уверенно застучал по клавиатуре, а затем, играючи, снес пароль, который специально поставил программист Эдик, желая посмеяться над гостем, насмешливые улыбки сползли с лиц сотрудников отдела.
Арсений между тем вошел в программу и стал внимательно изучать блок описания входных данных. Он достал свой блокнот, ручку и по ходу делал пометки в своем блокноте.
— Римас Александрович, — через некоторое время обратился он к отцу, — я ознакомился с входными данными программы. Все, что мне потребуется в ближайшие 3-4 часа — это полная тишина. Если кого-то это не устраивает, могут выйти и отдохнуть в холле.
Арсений с головой ушел в работу. Римас поднялся к себе и решил тоже поработать над программным блоком. Через пару часов он нашел ошибку: не убраны кавычки из строки перед вставкой в базу данных, в результате чего длина строки превысила допустимую на два символа.
В голове промелькнула мысль: «А вдруг Арс не справится?!» Но он тут же ее отогнал от себя.
За пять лет Арсений сделал такой мощный прорыв и в математике, и в программировании, какой сам Римас сделал примерно в двадцать лет! А в программировании сын кое в чем даже превосходил его.
— Спасибо, Господи, за то, что дал нам встретиться с Верушкой, за то, что моя хрупкая и нежная девочка подарила мне и воспитала таких чудесных детей, — накрыло вдруг Римаса волной сентиментальности.
— Спасибо, шеф, что не дали мне умереть от голода, — раздался неожиданно голос Антона, дожевывавшего сырный пирог, которым поделился с помощником Римас. — Приглашенный вами молодой человек просит спуститься вниз. Похоже, он Эдика вывел из себя.
Если честно, Римасу не нравился Эдик — самодовольный заместитель Леонида. Что-то в нем было скользкое. Интересно, чем же Арс зацепил его?
— Что скажете, Арсений, — спросил Римас.
— Скажу то, Римас Александрович, что я завершил проверку и нашел не одну, а три ошибки. Но перед этим я хотел бы уточнить у Леонида Матвеевича несколько моментов: во-первых, кто писал второй и четвертый модули; во-вторых, когда проводились проверки каждого из модулей и есть ли акты, протоколы, какие-то записи результатов проверок; в третьих, кто отвечал за слияние всех модулей и кто отправлял на компиляцию программу?
— Логично! — отметил Римас. — Вам слово, Леонид Матвеевич.
— За второй модуль отвечал Анатолий, за четвертый — Эдик, мой заместитель. Он же отвечал за слияние модулей и отправку на компиляцию.
— Леонид Матвеевич, поскольку я не получил ответа на свой второй вопрос, позвольте я сформулирую его иначе, — обратился к нему Арсений.
Хотелось бы знать, возникали ли ошибки во время проверки работы модулей? И если да, то велся ли журнал, проводился ли анализ ошибок для понимания их природы: невнимательность, некорректное введение данных и т.п.?
— Полностью с вами согласен, Арсений. Но, к сожалению, ничего этого нет. Ошибки исправлялись по ходу.
Римас понял, что Арсений нашел нечто более серьезное, чем просто ошибка. Ни одна программа не пишется без ошибок. Но записи тоже необходимы.
— Продолжайте, Арсений! — обратился к сыну Римас.
— Первые две ошибки я обнаружил во втором модуле. Тот, кто его писал, явно не дружит ни с математикой, ни с языком Pascal.
Арсений подошел к висевшей на стене доске, взял мел и записал следующее:
a += 3; // увеличить a на 3
b *= 2; // увеличить b в 2 раза
Вот так должна была выглядеть запись на языке Pascal.
А вот так она выглядит у вас:
a += 3; // увеличить a в 3 раза
b *= 2; // увеличить b на 2
Конечно, эта ошибка вскрылась бы испытателем на этапе исследования программы. Но отняло бы это гораздо больше времени. Пришлось бы переписывать программу.
Вторая ошибка заключалась в незнании программистом правила перевода рациональной дроби в десятичную.
Что касается третьей ошибки, то тут все намного интереснее. И мне кажется здесь имеет место не ошибка, а умысел.
Римас понял, что Арсений, помимо озвученных двух, нашел ту же ошибку, что и он сам. Хотя заметить эти маленькие кавычки было непросто. Но Арс счел, что ошибку допустили специально.
— Почему вы решили, что ошибка сделана умышленно? — строго обратился Римас к сыну. — Это серьезное обвинение.
— Я отдаю отчет своим словам, Римас Александрович, — ответил сын. — Я запросил исходник у Эдуарда, на что получил отказ с дивным объяснением. У меня хорошая память, поэтому цитирую дословно:
— Уважаемый начинающий программист, каждый из сидящих здесь моих коллег, включая уважаемого Леонида Матвеевича, подтвердит, что мой модуль работал и не содержал ошибок. Именно поэтому я вписал его сюда и даже не стал сохранять исходник, т.к. все мы старались наверстать график работы над программой и отправить ее на компиляцию.
— Вы меня удивили, Эдуард, своим рвением наверстать график работ. Но скажу вам, ни один уважающий себя программист не станет удалять исходник, — саркастически усмехнулся Римас.
— Продолжайте, Арсений!
— Но поскольку мой папа еще в детстве учил меня, усомнившись, докапываться до сути, я по сети расшарил ваш компьютер. Там много интересного: от фотографий обнаженных красоток до дивных и запароленных архивов. Я эти архивы отсмотрел по ближайшим к событию датам. Кстати, пароли у вас слабенькие: 19562309Edward и Edward/90326591.
— Ах ты, щенок! — вскрикнул Эдик и, схватив огромный степлер, бросился на Арсения. Тот легко перехватил левой рукой руку со степлером и ладонью правой двинул Эдуарда в грудь. После чего горе-нападавший вписался в стул.
— Сидеть! — приказал Арсений и придавил своей ногой в кроссовке бедро Эдика. Наклонившись, он презрительно бросил: «Куда тебе со мной тягаться, слабак!»
И как ни в чем не бывало продолжил:
— Один из архивов совпал по времени и дате с отправкой программы на компиляцию. В нем, как оказалось, и покоился присно-помянутый исходник.
Как я и предполагал, роль заместителя начальника отдела программирования не устраивала Эдуарда, о чем он неоднократно писал своему другу Жорику. Вместе они разработали план смещения начальника.
По плану, — Арсений взглянул на часы, — уже сегодня он должен был изобразить нечеловеческую усталость и в конце дня прийти к вам, Римас Александрович, и показать, как он, а не начальник отдела, сумел отыскать ошибку в программе и вывести из цейтнота отдел. Вот и все!
Начальник отдела бросился обнимать и благодарить Арсения.
— Римас Александрович, где вы такого классного программиста отыскали? Нам бы такого! — восторженно воскликнул Леонид Матвеевич.
— Где, где... Сам сделал! — проворчал Римас. Пусть сначала школу окончит, а потом институт! Знакомьтесь, мой сын Арсений Штейн.
— Стойте, так это же он — победитель всесоюзной олимпиады по математике! — радостно завопил Антон.
— Ну ты даешь, парень! Респект тебе! — пожал он руку Арсению.
— Спасибо, сын! — крепко обнял его Римас.
Кабинет опечатали, после чего Римас развез народ по домам. Арсений и Антон остались его ждать в приемной. Когда Римас вернулся за ними, они играли в морской бой. Чувствовалось, что парни нашли общий язык.
По дороге домой Римас спросил у сына, что сегодня мама готовила на обед.
— Пап, была офигенная грибная похлебка и нежнейший бефстроганов.
— Сын, а ты не мог просто сказать: суп и мясо, чтобы у меня, как у собаки Павлова, не проявлялись условные рефлексы!
— И у меня слюнки потекли! — хохотнул Антон.
— Ух ты, Антон, про тебя я как-то забыл! — воскликнул Римас. — Мы уже у нашего дома, и я тебя не повезу на другой конец города. Придется тебе до утра побыть у нас.
Машину он не стал загонять в гараж, оставил во дворе. Они хотели войти в дом тихо, но собаки среагировали на Антона.
— Да ладно вам, братцы, — ласково обратился он к псам, — я пришел с добром и вас люблю! После чего к нему подошел Тоша, обнюхал и дал своим отбой.
И тут Арсения пробило на прямо-таки гомерический хохот. Он указывал пальцем на Антона и складывался пополам от хохота, потом указывал на Тошу не в силах произнести хоть слово. Когда до Римаса дошло, что их Тоша оказался тезкой Антона, он тоже рассмеялся.
На шум быстро спустилась Вера.
— Привет, солнышко, — обнял ее Римас, нежно целуя.
— Мам, привет!
— Верушка, это мой помощник, Антон Рудницкий.
— Здравствуйте, Вера Арсеньевна, — галантно поцеловал ее руку Антон. — Вы, оказывается, еще красивее, чем рассказывал о вас дядя Олег.
— Благодарю вас, — улыбнулась Вера. — Мойте руки, я сейчас вас накормлю.
Пока Вера накрывала на стол, спустился Гоша.
— Мам, папа с Арсом приехали?
— Да, сынок! — Голодные и уставшие. Тебе супчик наливать?
— Спрашиваешь! Он просто офигенный! Ой, прости, мам, я хотел сказать, очень вкусный!
То ли это был поздний ужин, то ли ранний завтрак, но мужчины проглотили его вмиг. Горячая еда разморила всех, и Римас дал команду: всем спать до семи утра!
— Жаль, что нельзя школу прогулять, — успел подумать Арсений и провалился в сон.
Гоша постелил Антону у себя на диване и тоже лег досыпать.
Римас дождался пока Вера ляжет рядом, обнял ее и мгновенно уснул. Вера понимала, что он нечеловечески устал за этот месяц. И мечтала, чтобы у него все поскорее наладилось на работе. Потом про себя усмехнулась: «Разве может быть спокойно в такой сфере как банк!» и, прижавшись щекой к ладони мужа, ненадолго заснула.
Целуя жену перед уходом на работу, Римас пообещал во что бы то ни стало приехать на обед домой.
Он дал задание Андриусу подбросить ребят до школы, затем Антона домой, чтобы тот переоделся. После чего привезти его в банк.
Первым делом Римас подписал приказ об увольнении Эдика. А по поводу Анатолия к нему неожиданно обратился Леонид.
Говорил он сбивчиво, нервно теребя пуговицу на пиджаке, которая из последних сил пыталась удержаться на месте. С трудом удалось понять, что Остроградский просит не увольнять Анатолия.
— Леня, — остановил его Римас, — назови хотя бы одну причину, по которой я должен оставить его в отделе.
Леонид опустил голову, потом как-то сразу собрался с мыслями и рассказал Римасу историю парня.
После смерти матери три года назад, Анатолию пришлось перевестись на заочное обучение, чтобы начать работать. В противном случае его младшего брата отправили бы в детдом.
Леонид нашел ему работу, а потом забрал Анатолия сюда.
— Пойми, Римас, он неплохой программист и неплохой парень. Этих ошибок у него быть не могло. Не подумай, что я, зная, на что пошел Эдик, решил свалить и эти ошибки на него. Да, я виноват, наказывай меня, вкати выговор, лиши премии на год! Но очень прошу, давай проверим исходник, который обнаружил Арсений. Если выяснится, что эти ошибки там есть, я сам напишу заявление и уйду!
— Леня, я не против исходника. Я, кстати, тоже об этом думал. Давай сделаем так: у меня через пять минут совещание с экономистами, затем я на час должен отлучиться, а вот с тобой мы сможем поработать сразу после обеда.
— Антон, впиши мне на 14:10 Леонида Матвеевича, — крикнул он в приемную.
В час дня Римас вышел из кабинета, велел Антону одеваться, закрыть приемную и спускаться к его машине.
— Римас Александрович, я на всякий случай захватил диктофон и свой рабочий блокнот.
— Зачем? — удивился Римас.
— Как же, может понадобиться!
— Антон, мы с тобой вчера, да и все предыдущие дни, работали без обеда. Поэтому я приглашаю тебя на домашний обед. По-моему, мы его с тобой заслужили. Что скажешь, помощник? — подмигнул он Антону.
— Благодарю, шеф, за оказанную честь!
— Ура, папа приехал! — с радостными воплями бросились дети к Римасу и, увидев Антона, резко остановились.
— Знакомьтесь, зайчата, это Антон, мой помощник.
— Ух ты, какие вы славные! — А я знаю, как вас зовут. Вы — Машенька, — протянул он руку для пожатия.
— Мне бабушка говорила, что женщина первой подает руку мужчине! — сказала Маша, но руку подала.
— Ничего себе! — Простите великодушно невежду, — искренне раскаялся Антон и был награжден очаровательной улыбкой Машеньки.
— Привет, Антон! — поздоровался Арсений. И тут же попросил отца уделить ему несколько минут.
Они отошли в сторону и Арсений спросил отца, уволил ли он Анатолия?
— Пока еще нет! — нахмурился Римас, в голове которого мелькнула мысль: «Неужели Леня посмел обратиться с просьбой к сыну?» — Почему ты вдруг спрашиваешь?
— Понимаешь, пап, я вчера об этом не подумал, а надо было бы. На большой перемене Гошка стал рассказывать мне, как он на днях какой-то важный файл заархивировал, запаролил мудренно и... забыл этот пароль. Просил помочь ему.
И вот тут я вспомнил об этом парне: а вдруг это не он, а этот самый Эдик напакостил ему. Этот Анатолий на дебила не тянет. Я сам вчера слышал, как он сказал Эдику, что у него ошибок не могло быть, потому что свой модуль он со всех сторон выверял и сказал, что проверит исходник.
Поэтому я прошу тебя, пап, проверь этот модуль на предмет ошибок.
— Успокойся, сынок, я после обеда собираюсь заняться этим вопросом с Леонидом.
— Так, дорогие мои! — строго сказала Вера, — все отошли от папы. Все новости будем обсуждать в выходной день. А сейчас папе и нашему гостю надо пообедать. Мы-то с вами пообедали, а у папы и Антона перерыв скоро закончится.
— А потом мы сможем поиграть с Антоном в коня? — спросил Гриша. И Римас, поперхнувшись, закашлялся.
— Конечно, поиграем, — легкомысленно согласился Антон. — А как это? Вы меня научите?
— Научим! — радостно отозвалась тройка любителей «конных» игр. —Ты давай быстрее ешь!
— Нет, дорогие мои, — вмешался Римас, — вы должны понимать, что сразу после еды такие игры противопоказаны. Тем более нам с Антоном уже пора на работу.
— Ладно, — согласился Гриша. — Только подождите минутку!
Он бросился в детскую и вернулся с двумя листами бумаги.
Вот здесь подпиши, пожалуйста, — сказал Гриша и протянул ручку Антону. И тот поставил свою подпись.
Гриша забрал листок себе, а Антону выдал другой, на котором неровными печатными буквами было написано: «ДОГОВОР НА ИГРУ В КОНЯ». Дальше шел текст: «Я, ФИО, ДАЮ СЛОВО, ЧТО БУДУ ИГРАТЬ В КОНЯ С МАШЕЙ, ГРИШЕЙ И САШЕЙ СТОЛЬКО, СКОЛЬКО ИМ НАДО!
Дата: Подпись»
* * *
— Ну-ка, сынок, дай-ка мне твой лист, — попросил он Гришу. — Хочу понять, чем вы тут занимаетесь.
Прочитав, он долго хохотал. Потом сказал:
— Придется нам немного задержаться! Ты, Гришенька, конечно, молодец! Не каждый взрослый понимает, что такое договор. Ты, сынок, правильно понял, что договор — это соглашение о чем-то двух и более сторон, которые обязуются выполнять то-то и то-то. Но вы прописали обязательства только одной стороны. А что же обязуетесь выполнять вы?
Самое плохое в этой истории то, что вы скрыли условия договора, не ознакомили с ними Антона, а он безрассудно доверился и его подмахнул. Это, друзья мои, попахивает мошенничеством.
Ваш договор больше похож на расписку. И потом, вы могли бы договориться устно по поводу игры. Тем более, что Антон и так согласился. Для этого совсем не обязательно заключать литеральный, т.е. письменный договор.
Своим договором вы сейчас загнали Антона в кабалу, в тяжелую, рабскую зависимость от вас. Ведь если вы его призовете, он должен будет вам подчиниться. И я теперь даже не знаю, как буду работать без помощника?
Маша быстро подозвала братьев, они о чем-то пошептались, и она сказала:
— Папочка, мы поняли, что нельзя никого заставлять играть с нами и составлять для этого договор. Антон тебе нужен больше, — вздохнула она. Но он же будет к нам приходить? Тогда мы сможем поиграть. А этот договор мы порвем.
— Мои зайчата, — сгреб их в охапку Римас, — я рад, что вы все правильно поняли. А вот ваш уникальный договор я сохраню. Когда Гриша у нас станет известным адвокатом, мы договор этот достанем и вспомним этот день.
— Мы согласны!
— Ты, сынок, все равно молодец! — Римас поцеловал Гришу в макушку. Ты даже не подозреваешь, какую серьезную проблему ты затронул и натолкнул меня на очень ценную мысль!
* * *
Не раздеваясь, Римас сразу направился к программистам, предупредив Антона, чтобы его не беспокоили.
— На 17:00 пригласи Ивана Егоровича ко мне с его юристами.
Усадив за компьютер Анатолия, Римас и Леонид расположились по обе стороны от него.
К величайшей радости всех присутствующих модуль Анатолия не содержал никаких ошибок, как и уверял Римаса Леонид Матвеевич и предполагал Арсений.
— Спасибо, Анатолий. — Красиво написано! Но почему ты сразу не сказал?
— Я не знаю, Римас Александрович. Это был настоящий шок, оцепенение. Я потом сказал Эдику, что ошибок быть не может, тем более таких, и что я все проверю сам. И спасибо, Римас Александрович, вашему Арсению. Неужели ему пятнадцать лет?!
— Да, пятнадцать лет и четыре месяца!
— Ну что, друзья, я рад, что все так хорошо закончилось. В понедельник к вам вольется способный математик и программист. Он возглавит сектор в отделе. Ну а сегодня можете поздравить своего коллегу с должностью заместителя начальника отдела. Отдел расширяется. Сейчас у нас есть две свободные вакансии и к лету будет еще три.
— Римас Александрович, а кого поздравлять-то?
— Я думал, вы и так поймете. Конечно же, Анатолия Ильина! Успехов вам в новой должности, — крепко пожал он руку ошеломленному Анатолию.