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

– Я не поняла, если честно, что ты там вычищал? Это ведь просто набор символов.

– Верно, но каждый символ составляет команду, которая реализует ту или иную задачу. Программный код – это вещь творческая, как, например, книга. Собственно, функция та же. Ты читаешь книгу, мозг обрабатывает информацию. Если эта книга – учебник, например, по математике, и в ней написано: «Выполните уравнение», ты берешь лист бумаги, ручку и начинаешь решать. Книга дала команду, ты выполняешь. Программа делает то же самое, только команды при ее запуске выполняет компьютер. Есть разные программы: одни сложнее, другие проще. Те, что совсем простые, устанавливаются на оборудовании, которое способно выполнять ограниченное число команд или вовсе не занимается вычислениями. Программа для СОРМ выполняет несколько простых функций – копирует трафик и передает его в хранилище или регистрирует трафик (например, оповещает, что абонент начал разговор) и осуществляет его ретрансляцию и запись. Так вот, когда программа разрабатывалась, у нее были задачи, и, исходя из них, писался код. Потом задачи становились другими: расширялись или сужались. Например, раньше программа позволяла только прослушать разговор, а теперь должна его записать и копию отправить в хранилище. Но ведь программист не переписывает программу целиком. Он влезает в конкретные области, которые запускали нужные механизмы, и дописывает то, что нужно для реализации новых функций. В результате там остаются ненужные ошметки и дубляжи, от этого программа тяжелее и неповоротливее, как любая вещь с мусором. Найти и вычистить – вот что я делал.

Я не думал, что Катю и в самом деле заинтересуют эти подробности. Одно дело – учеба: там много нового и интересного. Совсем другое – рабочие будни, где мало прекрасного, а больше рутины и нуднейших процессов. С той же очисткой кодов я умирал от тоски, потому что был вынужден читать коды, которые писались в 90-х, в самом начале пути, и никому из программистов не приходило в голову обновить те старые движки, которые исправно работали, но морально устарели. Чтобы не покоцать функционал, приходилось залезать в архивы и извлекать пыльные тома от руки написанных кодов, чтобы понять, что к чему относится.

Когда меня назначили владельцем нескольких программ, первое, что я сделал, – дал команду программистам обновить движки до современных и интегрировать в обновление все те фишки, которыми владела компания в других программах. Вау-эффекта поначалу не было, но потом мой подход переняли и другие: когда все продукты компании сконструированы под один шаблон, легче управлять обновлениями, да и сроки коррекции резко сокращаются, ведь больше не надо изучать историю создания ПО, не надо ворошить труху и рвать бобыль, которым там все заросло. Больше того, в обновлениях не надо строить мосты, чтобы новейший код мог успешно работать на старых движках.

– Я был шокирован, что никому до меня это не приходило в голову. Но теперь знаю – это золотой стандарт всех ИТ-компаний. Никто не занимается тем, чтобы приводить в порядок и регулярно модернизировать свои активы. Работают на том, что есть.

– Но ведь твое решение было правильным? – спросила Катя.

Я ответил:

– Конечно. Наверное, именно поэтому я стал ведущим разработчиком и руководителем целой продуктовой линейки. Теперь я не чищу мусор за другими.