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