Мост в прошлое-1

Жизнь Андрея была проста и понятна. Он работал на крупном государственном предприятии и считался довольно перспективным сотрудником. И платили ему неплохо, и по служебной лестнице постепенно продвигался.
 
Однажды Надя спросила его, чем он занимается на работе. Он ответил правдиво, но уклончиво: разрабатывает программы для компьютеров, управляющих сложными техническими объектами. А когда он отказался рассказать более подробно, жена обозвала его перестраховщиком.

Что ж, какой есть... Программист и обязан быть перестраховщиком... Во всех отношениях...

Самое забавное, что начальник лаборатории тоже не раз звал Андрея перестраховщиком. Хотя совершенно по другой причине...

Дело в том, что Андрей был убеждён, что для компьютерных программ главное — надёжность. По крайней мере таких, какие разрабатывались у них в проектном .

Ведь «железки», которыми они управляют, - это не персональные компьютеры, которые при зависании или неправильной работе легко можно перезапустить. Даже небольшой сбой в её работе может иметь очень неприятные последствия. Вплоть до аварийных...

К сожалению, ничего даром не даётся. Чтобы сделать программу повышенной надёжности, нужны дополнительные усилия. Ну и дополнительное время, конечно...
   
Затраченные усилия — это личное дело самого работника. Нравится ему выламываться на работе — пусть выламывается. Нравится работать по вечерам — пусть работает. Тем более инженеру, в отличие от рабочего, никто лишние часы оплачивать не обязан...

А вот если из-за каких-то надуманных (с точки зрения начальства) проблем с надёжностью под угрозу ставятся сроки выполнения — это уже серьёзно...

Правда, совсем уж вопиющих срывов Андрей пока что не допускал. Он хорошо умел концентрировать свои усилия — и в последний момент всё-таки успевал. Ну или почти успевал — в таких случаях пару-тройку дней с грехом пополам могли простить...

Поэтому отношение к нему было всё-таки двойственное. С одной стороны, ему спокойно можно было поручить самую сложную работу, - и быть уверенным, что она в конце концом будет сделана. С другой стороны, многие боялись, что когда-нибудь он всё-таки не успеет...

* * *
 
К сожалению, так в конце концов и вышло. Даже ещё хуже...

Из их лаборатории уволился молодой сотрудник. Он сумел устроиться работать в частную фирму, где платили гораздо больше, чем на госпредприятии.

Уговаривать его передумать было бесполезно: когда он озвучил, сколько будет получать на новом рабочем месте, начальник лаборатории лишь горестно покачал головой. Таких денег здесь ему платить просто не могли...

Что ж, дело житейское... Такие случаи отнюдь не были редкостью.

 Но имелся в этой истории один неприятный момент. Ушедший сотрудник возглавлял довольно важный программный проект — и теперь его надо было кем-то заменить.

Занять его место предложили Андрею. И он почти не раздумывая согласился.

Ситуация облегчалась тем, что Андрей в этом проекте уже участвовал, разрабатывая в нём два достаточно сложных программных модуля. Казалось бы, новые обязанности не особенно его стеснят, - надо будет только дополнительно контролировать, как идёт работа ц остальных сотрудников. Даже задачу им ставить не надо — это было сделано уходящим руководителем.

Так, в принципе, Андрей и поступил. Сконцентрировавшись на разработке собственного программного обеспечения, он «краем глаза» наблюдал за работой остальных исполнителей.

Нет, нельзя сказать, что он совсем не участвовал в работе своих товарищей. Когда у них возникали серьёзные проблемы, он им помогал (всё-таки квалификация у него была повыше, чем у остальных). А вот по существу в их работу не вмешивался.

Такой стиль руководства всех устраивал.

Прошло несколько месяцев. Работа за письменными столами кончилась. Теперь предстояла работа на стенде, представлявшем из себя специальное помещение, где был смонтирован имитатор той «железки», которой требовалось управлять. Требовалось проверить совместную работу созданных программ с этим имитатором.

И только теперь Андрей понял, что стиль его руководства был, мягко говоря, не совсем правилен.    

* * *
 
Первые две недели работы на стенде Андрей посвятил отладке собственных программ. Остальные сотрудники появились на стенде чуть позже... Впрочем, об этих сотрудниках следовало рассказать чуть более подробно.

Все трое были молодыми — две девушки и один парень.

Про девушек Андрей не мог сказать ничего плохого: они имели неплохую подготовку и честно старались сделать всё как можно лучше. Единственное, чего им не хватало, - опыта. Но это дело наживное...

А вот с парнем были определённые проблемы... Усердия-то у него было немеряно, - но что-то объяснить ему было очень трудно. Не сразу он понимал, что ему говорили... В сочетании с невероятным упрямством это делало общение с ним довольно непростым...

Нет, в конце концов удавалось озадачить и его... Но в ходе работы у него возникала масса вопросов, на которые Андрею приходилось терпеливо отвечать.

В конце концов работа на стенде была выполнена. Но, к сожалению, не совсем вовремя...

За срыв сроков в этот раз наказали не очень сильно, так практически как отделы, изготавливавшие смежные проекты, тоже их сорвали. Внушение, конечно, сделали, - куда ж без этого?

Наступил следующий этап — отладка программ совместно с реальной аппаратурой. Для этого надо было ехать в другой город...

* * *

Поначалу всё шло неплохо. Андрей быстро отладил свои собственные модули и начал подключать к реальной аппаратуре то, что сделали остальные сотрудники.

А вот с этим были проблемы. Все эти программы содержали существенные изъяны, не заметные на стенде, но проявляющиеся при реальной работе.

Андрей не торопился их упрекать. Они работали под его руководством, и если он недостаточно проконтролировал их работу, то это была в первую очередь его вина. Тем более что в конце концов все программные модули были настроены.

И всё равно проблемы остались. При прогоне на реальных режимах периодически происходили с бои.

Андрей чуть не свихнулся. Он помногу раз проверил все программы — и те, что сделал сам, и те, что разработали остальные сотрудники. Каждая из них работала как часы — а вот всё вместе стабильно работать отказывалось.

Андрей отправил своих коллег домой — в этих поисках они не могли ему помочь.

И принялся решать самую трудную головоломку в своей жизни.

* * *

Задача была действительно трудная. Несколько часов нормальной работы — и вдруг сбой! И совершенно непонятно, что произошло...

В принципе, план его работы был понятен. Надо было найти хоть какой-то след возникающей ошибки. Хоть какую-то «ниточку», потянув за которую, можно найти причину возникающего безобразия.

Стандартный отладчик здесь не годился — он не рассчитан на встроенное программное обеспечение, работающее в режиме реального времени...

Но был ещё один способ — примитивный, но надёжный: расставить везде отладочную печать, выводящую в специальные файлы всё, что происходит в программе. А после очередного сбоя просмотреть выведенную информацию и узнать, что же там случилось.

Но ничего не выходило... Программа завершала свою работу слишком быстро, не успевая вывести причину возникшего сбоя.

В принципе понятно почему. Чтобы отладочная печать сработала, надо было поставить её в одном-единственном месте: там, где уже пошло что-то не так — но ещё не произошло ничего, приводящего к аварийному завершению программы. Какие-то ничтожные доли секунды... Несколько строк программного текста из тысяч других...
 
Расставить отладочную печать буквально везде? Это было нереально. Во-первых, это заняло бы слишком много времени. Даже страшно подумать, сколько... А во-вторых, «утяжелённая» таким образом программа просто не успевала бы делать то, что ей полагалось.

Оставалось одно — руководствуясь собственной интуицией, делать всё новые и новые попытки. Рассчитывая на то, что в конце концов повезёт... 

* * *

Его усилия не пропали даром: «ниточку» найти всё-таки удалось. «Потянуть» за неё и обнаружить саму ошибку после этого было делом техники...

Оказалось, что она притаилась в базовой части программы, которая была написана года два назад и считалась полностью отлаженной.

Вообще-то это было странным: базовая часть была задействована и в других проектах — а они работали без замечаний. Но, подумав, Андрей понял, в чём здесь дело: новый проект был гораздо сложнее предыдущих — значит и вероятность неправильной работы базовой части в нём была гораздо больше.

Значит, сбой возможен и в старых проектах... Только вероятность его очень мала...

Сбои стали реже, но не прекратились. Андрей предположил, что в базовой части есть ещё одна ошибка, - и оказался прав.

А когда он занимался поиском третьей ошибки, ситуация вдруг резко изменилась. И отнюдь не в лучшую сторону...

* * *

Трое сотрудников, вернувшихся в Петербург, озвучили совершенно другой вариант происходящего. Что в их программах практически не было ошибок — вот они и вернулись первые. А в программах Андрея ошибок было очень много — вот он и задержался.

Эта ситуация оказалась возможной потому, что Андрей не любил «катить бочку» на своих коллег. Он, конечно, проинформировал в своё время начальство, в каких именно программах было найдено наибольшее количество ошибок — но сделал это в максимально смягчённой форме. А те, кто охаивал его в Петербурге, как потом выяснилось, в выражениях не стеснялись.

Про ошибке в базовой части программного обеспечения Андрей сообщал, но в самой общей форме. Чтобы говорить об этом подробно, надо было разобраться в вопросе до конца. Вот сдаст проект, приедет домой, - и напишет подробный отчёт о возникших проблемах. И главное — даст чёткие рекомендации, как с этими проблемами бороться...

Но и тут Андрей ошибся. Начальство в Петербурге почему-то решило, что все разговоры о скрытых ошибках — это попытки уйти от ответственности.

В общем-то всё это было не так страшно — и происки сотрудников, и непонимание начальства. Фатальную роль сыграло ещё одно событие...

* * *

Дело в том, что проблемы были не только у того проектного института, где работал Андрей. Рядом трудились представители ещё нескольких предприятий. Каждое из них делало свой кусок работы.

К счастью, перестроечникам и реформаторам не удалось в своё время погубить российскую промышленность. Большинству предприятий всё-таки удалось пережить и перестройку, и «лихие девяностые», и «сонные нулевые». Но, конечно, с определёнными жертвами. К сожалению, их потенциал был уже не совсем тот, что в советские  времена.

Поэтому нет ничего удивительного, что намеченные сроки сдачи оказались слишком оптимистичными. Все понимали, что их надо немного отодвинуть. Потому что — если смотреть реально — сделать свою работу в срок никто не успевал.

Бюрократическая логика имеет свои законы. Все сразу виноваты быть не могут. Если сроки будут перенесены — значит, у такого безобразия должны быть виновники.

Чтобы их найти, решено было сделать масштабное испытание сделанной работы. Запустить несколько реальных рабочих режимов и посмотреть, у кого именно возникнут проблемы.

Так что момент был очень ответственный. Каждый из участников сдачи переживал, как бы виновником не назначили именно его предприятие.

* * *

Андрей тоже не находил себе места. Если бы этот запуск был хотя бы на недельку попозже! Тогда Андрей успел бы довести свою «чистку» программ до конца и уже не боялся бы никаких проверок.

Но нет, не повезло. Прогон состоялся — и программа Андрея всё-таки повела себя не так, как нужно. В самом конце.

И его питерское начальство решило, что пора принимать меры.

* * *

Руководителя проекта, место которого занял Андрей, удалось переманить обратно. Как именно, никто не знал. То ли у предприятия всё же нашлись нужные деньги, то ли новое место оказалось не таким хорошим, как ожидалось.

Вернувшийся сотрудник сразу же был восстановлен в статусе руководителя проекта. И в этом качестве послан в командировку — спасать ситуацию.

С одной стороны, это было немного обидно. Ведь Андрей решил почти все возникшие проблемы — и всё-таки его сумели сделать виноватым!

С другой стороны, положа руку на сердце, он действительно был во многом виноват. Если бы он лучше руководил трудовым процессом и не пускал работу сотрудников на самотёк, со стенда проект ушёл бы в гораздо лучшем состоянии. Первый этап работ, сделанных в командировке, был бы выполнен гораздо быстрее, - и было бы больше времени для поиска «головоломных» ошибок. Так что сейчас бы он был «на коне».

Эти рассуждения смирили Андрея с возникшей ситуацией — и он с головой погрузился в работу.

* * *

Впрочем, новый руководитель (или старый — с какой точки зрения посмотреть) был не только хорошим специалистом, но и очень тактичным человеком. Он высоко оценил всё сделанное Андреем.

В две головы они быстро завершили оставшуюся работу — и вернулись домой.

Андрею казалось, что в принципе ничего страшного не произошло. Никаких обвинений в адрес их института не прозвучало (нашлись более виноватые предприятия). Проект в конце концов предъявлен.

То, что Андрея отстранили от руководства проектом, было грустно, но не смертельно. Он надеялся, что уж второе-то место в коллективе исполнителей за ним останется. Он считал, что так будет даже лучше: больше времени останется на реализацию его идей по повышению надёжности программного обеспечения.

В реальности всё вышло не так. Андрей даже не представлял, насколько негативный образ был ему создан, пока он отсутствовал. Его полностью отстранили от этой работы. Не помогла даже положительная характеристика, данная новым руководителем: начальник отдела просто решил, что тот проявляет неуместную тактичность.

С реализацией идей тоже ничего не вышло. Начальство решило, что это надуманная проблема. И заниматься этим совершенно нет времени.

Так что Андрея загрузили текущей работой: мелкой, непрестижной и неинтересной.

Через два месяца судьба преподнесла ему ещё один «сюрприз» - во время очередной перетарификации его понизили в должности. Так что движение вверх кончилось. Началось движение вниз...

* * *

Андрей шёл домой. Шёл густой мокрый снег. И на душе было тоскливо-тоскливо.

«Вот если бы была возможность всё переиграть! - с тоской подумал он. - Теперь-то я знаю, как тогда следовало поступать! Знаю... Но что толку? Уже поздно...».

Тут Андрей почувствовал, что у него начинает кружиться голова. С большим трудом он дошёл до ближайшей скамейки около какого-то дома. Сел — и потерял сознание...
 


Рецензии