Было раннее утро. Анатолий шёл на работу. Точнее, бежал.
В принципе, он успевал. Но еле-еле. Всего одна досадная случайность - и он окончательно исчерпает лимит времени!
Подбегая к станции метро, Анатолий заметил впереди девушку, которая с трудом катила тяжёлый чемодан на колёсиках. И где-то, чисто машинально, подумал: ох, несладко ей сейчас будет! Ведь впереди ступеньки!
Но по лестнице она как-то спустилась. И где-то через десять секунд Анатолий её догнал. Не то чтобы специально гнался - просто так получилось...
А потом - вот совпадение! - бежать стало невозможно. Слишком плотная толпа шла по переходу. И Анатолию поневоле пришлось замедлить шаг.
Девушка с чемоданом шла чуть впереди него - и он стал её машинально рассматривать. Она была очень симпатичная. Даже, можно сказать, красивая...
'Да, хороша! - подумал Анатолий. - Если бы я так не спешил - обязательно бы помог!'
И тут ему стало стыдно, причём вдвойне. Во-первых, что, если бы девушка не была красивой, он бы не стал ей помогать? Но тогда такая помощь - вовсе не доброе дело - а просто экзотический способ доставить себе положительные эмоции!
А, во-вторых, он, конечно торопится... Да разве лишние десять секунд что-нибудь изменят?
И, окончательно решившись, он подошёл к незнакомке, и, протянув руку к чемодану, вежливо спросил:
- Разрешите вам помочь!
Хозяйка чемодана растерянно посмотрела на него, и, смущённо улыбнувшись, сказала:
- Благодарю вас! Это было бы замечательно!
Тогда Анатолий осторожно подхватил чемодан. Для него он был достаточно лёгкий, так что его можно было не катить, а просто нести. Это было очень кстати: катить чемодан по лестнице очень неудобно.
Поскольку опаздывать Анатолий всё-таки не хотел, он почти бегом взбежал с чемоданом в руке вверх по длинной лестнице, ведущей к турникету. Так что ему даже пришлось секунд десять ждать девушку, которая даже налегке не могла подниматься так быстро.
Дождавшись хозяйку, он передал ей чемодан, и, улыбнувшись на прощанье, побежал через турникет к поезду, который вот-вот должен был отойти. И успел в самый последний момент! Только что Анатолий проскочил в двери - и они закрылись.
Так! Теперь надо было посмотреть, сколько у него времени.
Взглянув на часы, Анатолий увидел, что ещё может успеть. Если очень-очень повезёт!
Озабоченный своими проблемами, Анатолий ни разу не оглянулся назад. И не видел, что происходит у него за спиной.
Оля стояла у своего чемодана и задумчиво провожала глазами убегавшего Анатолия.
У нее сегодня был необычный день. Особенный. Ей нашли перспективную высокооплачиваемую работу в Москве - и теперь она летела на собеседование.
С самого утра Оля сделала глупость - загадала, что, если ей помогут поднести чемодан, то всё будет хорошо. А потом корила себя за легкомыслие. Что, она забыла, какое сейчас время? Помогать дамам вовсе не принято...
Но даже и тут ей повезло.
Оля улыбнулась. Какой замечательный парень! Не каждому придёт в голову помочь незнакомой девушке нести чемодан. И симпатичный! Жаль, что он куда-то так сильно торопился...
Тут она тряхнула головой. Да что это с ней. Она едет в Москву! Если повезёт, то и совсем переезжает! И заводить новые романтические знакомства в Петербурге ей совсем не с руки!
Пусть мимолетное знакомство с этим парнем останется как последний привет от родного города! Прощай, любимый Питер! Так получилось...
И Оля решительно покатила свой чемодан к багажному проходу через турникет.
Если бы она знала, что эта мимолётная встреча через полгода спасёт ей жизнь!
Казалось бы, пассажирам метро нет дела друг до друга - каждый спешит по своим делам. Но поступок Анатолия всё-таки кое у кого вызвал интерес.
За ним внимательно наблюдал мужчина средних лет. Когда Анатолий взялся помочь, губы незнакомца тронула одобрительная улыбка. А потом он долго стоял и смотрел в пространство, словно что-то просчитывая в уме.
Наконец, будто на что-то решившись, незнакомец вынул из кармана прибор, похожий на мобильный телефон, и нажал несколько кнопок. А потом, сунув прибор обратно, медленно пошёл к выходу. У него было лицо человека, только что решившего очень трудную задачу.
А что же Анатолий? Через полчаса он уже подъезжал к проходной родного НИИ. Ему повезло, и он успел! В общем, день начался нормально!
Молодой инженер даже не подозревал, какие необычные события ожидают его в самое ближайшее время...
Часть первая. Странные сны
Глава первая. Проблемы свои и чужие
Довольный, что успел на работу вовремя, Анатолий не стал зря терять времени. Включив компьютер, он вызвал на экран файл и начал с ним работать. Человек, далёкий от программирования, сказал бы, что на экране полнейшая бессмыслица. Тот, кто, с программированием знаком, сразу понял бы, что перед ним текст компьютерной программы на одном из языков высокого уровня. Может быть, даже узнал бы язык C++.
А сам Анатолий рассказал бы об этом файле много интересного. Что этот файл - модуль программы, которую он уже несколько дней пишет. И не просто модуль, а самый сложный и важный в большой программной системе.
И с которым - самое неприятное - уже несколько дней большие проблемы.
Анатолий как будто в стенку упёрся!
Нет, неудачное сравнение! Скорее в болото забрался! В самую трясину!
А ведь ещё несколько дней назад ничто не предвещало серьёзных трудностей! Он довольно резво принялся разрабатывать упомянутый модуль.
Сначала работа шла легко и просто. А потом программный текст стал запутываться - буквально не по дням, а по часам.
И очень быстро наступил момент, когда модуль буквально рассыпался. То есть с полученным программным кодом ничего сделать было нельзя - только переписать заново.
Анатолий тогда очень расстроился. Такие казусы случались с ним всего несколько раз в жизни - да и то, когда он был начинающим программистом. А сейчас, когда он приобрёл немалый опыт, это было даже как-то неудобно.
Но делать было нечего... Надо было отбрасывать старый вариант и начинать работу заново. А как не хотелось!
Второй вариант Анатолий начал писать очень осторожно, стараясь максимально учесть опыт, полученный при написании первого варианта. Но это не помогло: и второй вариант в конце концов развалился. А это уже не лезло ни в какие ворота!
Теперь Анатолий работал над третьим вариантом. Но с каждой минутой зрело понимание, что и этот вариант придётся выкидывать. Ну что же это такое, спрашивается?
Задумавшись над своими проблемами, Анатолий не заметил, как к его столу неожиданно кто-то подошёл.
А когда поднял голову, в глазах у него буквально помутилось.
'Нет, только не это!' - обречённо подумал он.
Перед ним стоял один из молодых программистов. Звали его Николай.
А знаменит он был тем, что при любых трудностях в работе умучивал окружающих его людей бесконечными вопросами. Конечно, нет ничего плохого в том, чтобы иногда попросить помощи у сослуживцев. Иногда... Но когда это происходит слишком часто...
В общем, Анатолий понял, что минут двадцать его времени сейчас будут безвозвратно потеряны. А, может быть, и больше...
В первый момент он даже хотел резко заявить, что у него совсем нет времени. Резко, потому что мягкие высказывания (и тем более намёки) Николай просто не понимал.
И уже нужные слова были готовы вот-вот сорваться с его языка. Но вдруг Анатолию стало неудобно. Он представил себя в аналогичной ситуации. Вот он оказался в тупике - а кто-то может ему помочь. Может - но не хочет.
В общем, Анатолий вздохнул - и жестом указал Николаю на стул рядом с собой. А потом попросил его рассказать, в чём проблема.
Самое смешное, что что проблема была примерно такая же, как у Анатолия. Николай тоже зашёл в тупик при написании программы. И тоже не знал, как в этой ситуации поступить.
Правда, его программа была гораздо проще, чем у Анатолия. Но ведь и опыта у него было гораздо меньше...
Но прежде чем кому-то советовать, надо разобраться в том, о чём тебя спрашивают. Так что теперь дело было за Николаем. Он должен был рассказать о том, как устроена его многострадальная программа.
Оказывается, ничего особо сложного в ней не было. Так что за десять минут Анатолий получил исчерпывающую информацию.
Ещё минут десять он задавал дополнительные вопросы. Пять минут думал, что нужно сделать. Пять минут объяснял Николаю, что он должен в своей программе поменять.
И ещё десять минут посидел рядом, наблюдая, как выданные рекомендации воплощаются в жизнь.
Убедившись, что проблема устранена, Анатолий, слушая вполуха восторженную благодарность Николая, вернулся на своё рабочее место.
Только что он потратил сорок минут на чужую работу. Считай, бесполезно. А собственная программа за это время не сдвинулась ни на миллиметр.
Да, грустно...
Впрочем, что случилось, то случилось. Надо было прекращать самоугрызения и вновь приниматься за работу. А если не хочется? Стиснуть зубы и всё равно продолжать работать!
Деваться-то некуда...
Поначалу дело шло очень тяжело. Переход от лёгкой задачи к трудной всегда непрост...
Стоп! А ведь задачи-то похожи! Может быть, и методы их решения тоже могут быть сходными?
Это была свежая и неожиданная идея, и её обязательно надо было проверить.
Так... Напрямую, конечно, ничего не получается. А если изменить тут... и тут... и тут? Вроде какой-то приемлемый вариант начинает вырисовываться...
И Анатолий воодушевлённо застучал по клавишам.
Примерно через два часа модуль был полностью переписан - и, судя по всему, удачно. Теперь его нужно отладить - и всё, работа сделана!
Отладка прошла на удивление быстро - так что к концу рабочего дня всё было готово!
Анатолий ехал домой и думал о жизни.
Ну... не совсем о жизни. Скорее о прошедшем рабочем дне.
Он прошёл явно удачно. Задача, которая фактически не двигалась два дня подряд, сегодня была решена 'влёт'. И это несмотря на то, что он отвлёкся на чужую работу.
Несмотря? Да нет, не надо себя обманывать. Именно помощь Николаю дала уму тот импульс, который позволил решить то, что до этого решению не поддавалось.
А если бы Анатолий отказал в помощи, сославшись на занятость? Тогда, скорее всего, так и просидел бы весь день, ничего толком не сделав!
Как интересно получилось! Он потерял сорок минут - а в результате приобрёл гораздо больше!
Прямо как в известной пословице: что отдашь - вернётся снова!