Кто такой инженер-программист в авиакосмической отрасли? Обзор
О профессии рассказывает Алексей Ткаченко, начальник отдела программирования наземных систем научно-конструкторского управления «Космос» в ОАО «Пеленг». В компании с февраля 2007 года, на позиции — с момента создания отдела.
Чем занимается инженер-программист?
В «Пеленге» программист — обширное понятие. Есть отделы, где они работают только по специальности, а есть отделы, где выполняют функции системотехников.
Возьмем для примера отдел программирования наземных систем. В нем работает 27 человек, разбитых на команды: разработчики ПО, разработчики автотестов, devops-ы. Есть также те, кто обеспечивает административную жизнедеятельность отдела.
Инженеры-программисты подразделения разрабатывают подсистемы, которые становятся частью космических аппаратов и уходят заказчикам как из СНГ, так и в страны дальнего зарубежья. Задачи у программистов отдела можно разделить на два направления:
Разработка ПО бортовой техники, которая в будущем полетит в космос. Так, например, они разрабатывали ПО для Белорусского Космического Аппарата.
Подготовка наземной части, которая требуется для подготовки бортовой.
Программисты-”наземщики» пишут код для имитатора космического аппарата, чтобы с помощью этого устройства можно было отладить штатную полезную нагрузку спутника.
Круг обязанностей включает реализацию программного кода, ревью кода коллег, поставку обслуживания внутренних клиентов, создание руководств по эксплуатации для внешних клиентов и т. д.
Получается, что, в отличие от продуктовых компаний, создание ПО в аэрокосмической отрасли — часть программно-аппаратного комплекса, а не конечная цель.
С кем взаимодействует инженер-программист?
У разработчиков широкий круг контактов. Разработчики бортового ПО выполняют задачи вместе с создателями аппаратной платформы, на которой это ПО будет применяться.
Либо другой случай. «Пеленг» производит оборудование, содержащие внешние интерфейсы, через которые наша полезная нагрузка взаимодействует с внешним миром, то есть космическим аппаратом. В них есть информационные и программно-логические протоколы. Они должны быть согласованы с разработчиками космического аппарата. Обычно этим занимаются менеджеры, но случается, что подключаются и программисты. Ведь создание аппаратуры связано с большим количеством разнообразных аспектов: конструкцией, электроникой, оптикой, тепловым и энергетическим балансом, ПО и многим другим. Главному конструктору физически невозможно вести все этапы производства. Поэтому детали реализации ПО часто спускаются как минимум до ведущих разработчиков, а иногда и дальше — до специализированных команд разработки.
Это происходит следующим образом. Аппаратура доставляется на территорию заказчика и начинается ее сборка. С большой долей вероятности у заказчика появятся вопросы по части ПО, особенно если его родной язык и культурные паттерны далеки от наших или у него трудности с техническим английским. Тогда в дело вступают программисты «Пеленга»: решают проблемы либо на месте, либо дорабатывают и выкатывают следующую версию. И так до тех пор, пока все не заработает должным образом.
После приемки работы заказчиком аппаратура отправляется на космодром. Затем тесты на орбите, финальная тонкая настройка и калибровка — то, что называется летными испытаниями.
Еще специалисты могут сотрудничать с оптиками, когда появляется задача, связанная с объективом, который проецирует изображение на фотоприемник. Они контактируют с исследователями по поводу внешнего вида систем. Программисты-бортовики общаются с программистами-наземщиками и так далее.
На каком стеке работают?
Стек технологий зависит от направления, которым занимается специалист.
Разработчики ПО для бортовых процессоров пишут в основном на C и C++. Компиляторы — начиная с достаточно древних вроде GCC 4.8 и вплоть до современных с поддержкой новейших стандартов С++, в зависимости от активного проекта.
Если говорить о наземной разработке, то драйверы пишут на C, остальной код — на C++ и C#.
UI у нас будет работать на обычном десктопе — здесь у нас C# и WPF, но смотрим в сторону кроссплатформенных решений вроде AvaloniaUI.
Иногда приходится комбинировать подходы, как, например, в стендах, где нужно одновременно и обслуживать оборудование, и иметь пользовательский интерфейс.
Для имитации космического аппарата есть фреймворк, на базе которого модули управления, и набор библиотек для пользовательского интерфейса.
Особенности работы
Горизонт планирования отличается от продуктовых компаний и аутсорса. В «Пеленге» сложно построить работу по спринтам, потому что дедлайны далеко в будущем. Это позволяет планировать работу внутри отдела более гибко, основываясь на доверии и условии, что проект будет сделан в срок.
Нечастые переработки. Программисты — одни из последних, к кому попадает проект. Поэтому если в него закладывалось дополнительное время для доработок, то очень вероятно оно будет «съедено» на более ранних стадиях подготовки. К тому моменту, когда оборудование попадает к программистам, процессы могут отставать от графика. Специалистам приходится догонять сроки, которые сорвались из-за коллег и перерабатывать. С одной стороны, это путь к переработкам, но с другой — мы ожидаем таких ситуаций и в какой-то мере можем к ним подготовиться.
Разная нагрузка во время работы над проектом. В начале и в конце проекта она отличается, потому что часто по завершении нужно что-то в срочном порядке переделать. Для команд это не новость, они готовятся к авралам заранее.
Требования к специалисту и карьера
Требуемые hard skills
знание языка программирования;
знание библиотеки, которая язык предоставляет;
владение типовыми методами и подходами для технологического стека;
владение предметной областью, в которой работает специалист;
Набор soft skills
креативность, чтобы решать нестандартные задачи;
стремление к самообразованию;
стрессоустойчивость;
навыки командной работы и ведения переговоров;
умение организовывать свое рабочее время;
проактивность.
Для быстрого роста важно выйти из сферы электроники на любительском уровне или с дипломом о высшем образовании. Алексей окончил факультет радиоэлектроники БГУИР и попал в «Пеленг» сразу после окончания вуза.
Карьерный рост может идти по технической ветке — прокачать хард скиллы, и по менеджерской линии — стать управленцем. В первом случае в «Пеленге» можно дорасти до ведущего программиста, который отвечает за целые системы. Во втором — до замдиректора по программному обеспечению.
Что почитать?
Чтобы погрузиться в отрасль, рекомендую серию книг Б. Е. Чертока «Ракеты и люди» о развитии ракетной техники от истоков до практически наших дней.
Сориентироваться поможет еще одна книга от энтузиаста космонавтики Виталия Егорова (a.k.a. Zelenyikot) под названием «Делай космос».
Следите за белорусскими профессиональными комьюнити: