ЦЕЛЕОРИЕНТАЦИЯ РАЗРАБОТЧИКА НА КОНЕЧНЫЕ ТРЕБОВАНИЯ И ЗАПРОСЫ ПОЛЬЗОВАТЕЛЕЙ PLM-СИСТЕМЫ
PLM-заказчики исходят из функциональных задач своих производственных компаний (рис. 1). Для того чтобы создать специализированное программное обеспечение (ПО), надо сформировать требования о том, что должно делать ПО. Программная среда — это целая система, которая состоит из отдельных модулей, которые отвечают за разные функции системы и должны эффективно взаимодействовать: это важнейшая задача архитектуры ПО. Все это требует от разработчика знания предметной области, которую он автоматизирует, то есть быть по сути конструктором, технологом, метрологом, производственником, испытателем создаваемой техники и изделий.
Так, в случае с созданием 3D-моделей для инженеров нужно понимание принципов проектирования (mechanical engineering) и производства (manufacturing engineering). То есть инженер-программист должен думать и как инженер-машиностроитель, и как IT-разработчик ПО, который может реализовываться в двух ролях: разработчик ПО — Software Engineer, программист — Software Developer. Первый — Software Engineer — это тот, кто придумывает, как должно работать ПО в целом, как оно решает поставленные задачи, продумывает архитектуру на верхнем уровне и создает задачи по реализации компонентов для Software Developer'ов, а в определенных случаях сам же их и реализует. Также существуют другие роли: project manager, team lead, software architect, database administrator, devops, QA engineer, reliability engineer и др. Основная причина разделения компетенций — это большой объем работ по конкретным задачам.
Для PLM-разработки в области машиностроения нужна компьютерная (программная) инженерия. При этом имеются разные роли в жизненном цикле разработки. Так, например, инженер-программист имеет значительно больше компетенций и навыков, чем программист.
Инженер-программист проектирует программное обеспечение с инженерной точки зрения, учитывая требования конечных пользователей, клиентов и потребности бизнеса, использует свои знания в области компьютерных наук и программирования для проектирования и создания программных систем, контролирует весь жизненный цикл разработки (от первоначального проектирования до сопровождения), использует научный метод и лучшие инженерные практики для выработки аналитических решений, рассматривает целостно создаваемую виртуальную систему ПО и заботится о ее стабильности и взаимосвязях, обладает обширными знаниями в области высшей математики и сильным опытом программирования. Главные общие навыки для людей в этой области — умение работать с Go, Ruby on Rails, Scala, Ruby и React Native. Знание Amazon Web Services и Google Cloud Platform также является популярными навыками для инженеров-программистов на руководящих должностях.
Программист участвует в одном из этапов жизненного цикла разработки, рассматривает отдельные программы и заботится о функциональности и внешнем виде каждой из них, должен свободно владеть высшей математикой, несколькими языками программирования, а также уметь читать и писать алгоритмы. Другие важные навыки для программистов включают внимание к деталям, соблюдение сроков, творческое решение проблем и гармоничное общение между различными командами.
HR-проблема для PLM-разработки конвертировалась в задачу гармоничного комплексирования инженерии в цифровых и машиностроительных компетенциях исполнителей-разработчиков. Для разработки PLM-системы востребованы инженерные компетенции, которые концентрируются на программной инженерии и машиностроительных инженерных специальностях (CAD/CAE/CAM/CAPP). Носителями цифровых компетенций являются инженерные кадры, которые востребованы по следующим профессиям системной и IT-инженерии:
• программная и компьютерная инженерия в области прикладной математики, информатики и программирования, вычислительных технологий и моделирования, суперкомпьютеров и искусственного интеллекта, информационной безопасности;
• аэрокосмическая инженерия для высокотехнологичного машиностроения.
Специалисты-инженеры в IT-компетенциях позиционируются в следующих нишах: веб-разработчик; разработчик мобильных приложений; разработчик игр; тестировщик ПО; Data Scientist; Data Engineer; специалист по машинному обучению; Data Analyst и др.
Первый вопрос в этом аспекте: может ли вуз подготовить универсального специалиста, способного к эффективному участию в PLM-разработке? Достаточен ли выпускнику полученный в вузе комплекс знаний и умений для полноценной работы в профессиональной PLM-команде?
Приведем базовый перечень навыков и умений, которыми должен владеть PLM-разработчик: цифровые компетенции, управленческие навыки, коммуникативные навыки, адаптивность к изменениям. Кроме комплекса профильных (специальных) компетенций для инженера важно наличие креативного мышления, способности к самообучению новым технологиям. Умение работать в команде и управлять проектами становится еще одним важным направлением для современных специалистов, чтобы быть востребованными профессионалами в будущем. Изменения последних лет очень сильно повлияли на рынок труда и дали серьезный старт такому явлению, как тимлансеры — специалисты, объединенные в удаленные команды под решение проектных задач. Тимлансеры, как и фрилансеры, уже есть в инжиниринге, так как проектные задачи требуют разных компетенций, которые весьма трудно объединить в одном человеке — для этого создаются проектные команды. Также активно начинает внедряться система менторства/наставничества: более опытные специалисты берут под свое шефство начинающих специалистов, повышая их универсальность.
Кроме того, для PLM-разработчика важно создать инфраструктуру и организационную среду проектного управления, которая замкнет в себе основные процессы взаимодействия заказчиков и исполнителей, а также минимизирует или полностью исключит риски, которые ранее несли каждая из сторон (рис. 2). Компании, которые занимаются разработкой ПО, управляют жизненным циклом разрабатываемых приложений (Application Lifecycle Management).
Ключевой задачей руководителя проекта IT-разработчика по PLM-профилю является формирование мультидисциплинарной команды исполнителей, что в нынешних условиях критично актуально. Какой подход к формированию команды является наиболее эффективным? Сравнительный анализ подходов приводит к выводу о том, что оптимальным с точки зрения трудозатрат является проблемно-ориентированный подход. Цель — определить, как персонал может использовать свои навыки для достижения цели в установленные сроки. Четкая цель команды может помочь мотивировать людей к действию, а руководство — к поиску новых способов управления. Здесь возможны два HR-подхода, реализующих мультидисциплинарность, назовем их ассоциативно «звездный» и «командный».