Готуємось до майбутнього з Automotive: які навички будуть потрібні розробникам
Привіт! Меня звати Олександр Сивашенко, я Senior Project Manager. Ось уже понад 7 років я працюю у сфері розробки програмного забезпечення для напрямку автомотів, останні 2,5 роки роблю це в компанії GlobalLogic.
Я в дитинстві завжди мріяв отримати супер силу бачити майбутнє. Зараз мені майже 34 рочки — і нічого в цьому напрямі особливо не змінилось.
Знайдіть вільну хвилинку подумати: як це прикольно, мати можливість зазирнути в майбутнє. Коли переможе Україна? Хто виграє Лігу Чемпіонів у 2023 чи навіть у 2025 році?
Або які скіли качати зараз, щоб в майбутньому бути ТОП (цур-цур, не ТОП менеджерами, а мати найбільший попит на ринку і обирати, в який продукт інвестувати свій час).
В цій статті я спробую поділитись виключно своїми думками стосовно трендів, які я зараз бачу у світі розробки програмного забезпечення для Automotive SW development industry і що може змінитись в найближчі
Що повинен знати Automotive SW developer
Ні для кого не буде новиною, що Автомотів — це частина Embedded світу, в якому розробка ПЗ вже років 20 тісно пов’язана з наступними мовами програмування: С, С++ та Python. Нікого не здивую, якщо скажу, що наступні 10 років воно і далі буде тісно пов’язано з цими мовами.
Варто додати що в останні 10 років з’явилась потреба в знаннях Android, Java і скоріш за все потреба в цих скілах буде зростати, але для Automotive applications (Infotainment) напрямків. Тож, дозволю собі узагальнити і створити універсальний профайл hard та soft skills для Automotive SW developer’a:
- практичний досвід з мовами програмування С/С++/Python/Java;
- практичний досвід з операційними системами Linux та/або Windows, Android AOSP (QNX — nice to have);
- практичний досвід з системами керування версіями: GitHub, Gitlab, etc;
- інструменти безперервної інтеграції: Jenkins, etc;
- розуміння основ SDLC;
- практичний досвід з Agile-методологіями;
- English Upper-intermediate;
- вміння ефективної комунікації.
В цьому переліку може бути велика кількість уточнень, бо кожний проєкт це «Власний Всесвіт», але нагадую, я намагався створити узагальнений перелік.
І в цьому переліку все необхідне є: операційні системи, знання мов програмування, вміння працювати з системами контролю версій, розуміння взаємозв’язків вимог-архітектури-коду-тест сценаріїв-тест кейсів та Agile, в сучасному світі він подобається переважній більшості.
Цей перелік завжди працював і буде працювати для всіх розробок, що пов’язані з hardware (є українські варіанти цього слова — обладнання або «залізо», але я дуже сильно люблю англіцизми).
Технології, потрібні для розвитку Automotive
Мій досвід в автомотиві не великий, але й не мізерно малий, тож можу стверджувати, що зараз Автомотів виробники стикаються з проблемами, які вони не можуть вирішити застарілими методами і їм потрібно буде знаходити нетривіальні рішення для успішної розробки програмного забезпечення в майбутньому.
Припустимо, в майбутньому, виробники чіпів та напівпровідників скоротили своє виробництво через брак компонентів в тисячі разів... Ні, давайте навіть реалістичніший кейс: ціна на hardware виросла в десятки або навіть сотні разів... Чи будете ви мати змогу розробляти embedded софт, як і раніше?
Я думаю один embedded device на команду з
Я прошу зрозуміти мене правильно, я не намагаюсь залякати, я хочу проактивно підготуватись до такого розвитку подій. Для того, щоб бути підготовленими, нам в пригоді можуть стати приклади з розробок NASA, наприклад, такі як:
Digital twins. Новий аналог Google дає дуже прикольний опис цієї технології, але для тих, в кого «немає часу»: концепція цифрових двійників полягає в створенні віртуальної копії фізичного об’єкта (такого як машини, споруди, процеси або системи) з використанням симуляції даних з сенсорів, аналізу та алгоритмів машинного навчання. Ця віртуальна копія може використовуватися для тестування та оптимізації фізичного об’єкта, передбачення можливих проблем та моделювання різних сценаріїв ©.
Поміркуймо, як Digital twin’и можуть допомогти в розробці програмного забезпечення. Наприклад, ви розробляєте софт для автоматичної платформи, яка допомагає сортувати посилки Нової пошти на їхніх складах, і для того, щоб вам правильно запланувати переміщення посилки з точки вивантаження до відповідного складу, вам потрібно мати діджитал копію приміщень складів і шляхів, якими можуть рухатись платформи в залежності від їх розмірів.
Тепер розглянемо менший приклад Digital twin’a: у вас є компонент А, який залежить від роботи компонента Б, а саме від сигналів або інформації, яка надходить з компоненту Б в компонент А. І ось ми вже ведемо мову про створення цифрових копій для software та/ або hardware: де це можна було б зробити? Можна спробувати на Python і додати його в CI/CD... А чи можна його перенести в Cloud?
І дуже багато автовиробників вже поставили собі це питання, як результат — ми бачимо концепт під назвою Software Defined Vehicle (SDV).
Останні конференції AWS хостили дуже багато доповідей, які пояснювали ідею концепту і як він працюватиме в майбутньому. Описувати переваги SDV, в цій статті повністю не стану, лише ключові:
- зміна архітектур з Доменних на Зональні;
- створення СІ-пайплайнів, які будуть давати змогу тестувати патчі з найактуальнішою версію код бейзу залежних компонентів;
- легша збірка референс-системи для тестування (все буде в клауді);
- виявлення багів на ранніх етапах розробки;
- зменшення циклу верифікації і валідації нового функціоналу.
Ще немає жодного реалізованого комерційного проєкту від Автовиробників, але за моїми відчуттями, цей концепт може скоротити час розробки програмного забезпечення для автомобілів десь на 30%. В «грошах» це буде залежати від розмірів проєктів, але це точно від десятків тисяч до сотень мільйонів доларів.
Як бачите, фінансове обґрунтування цих змін скоріш за все вирахують, і ці зміни поступово будуть інтегруватись в проєкти. Це не станеться завтра, і не післязавтра, але цей процес, як на мене, вже невідворотній.
Ви скажете: ну, і як це на мене вплине? «Це буде знов „бум“ для DevOps’ів», але хочу нагадати, що всім подобається Agile (я і сам його дуже високо ціную, але він не «лікує всі хвороби»). В Agile є поняття cross functional teams і трактуватись воно може по різному:
- наймати команду, яка може виконувати різні типи задач;
- наймати людей в команду, які можуть виконувати різні типи задач.
І той, і другий варіант працює в реальному світі, але з’являється проблема, яку дуже не люблять РМ проектів — це bus factor.
Спочатку індустрія вимушена буде (через брак необхідних cross functional людей) керувати bus factor’ом. Але надалі я бачу, що компанії в яких є бюджети на навчання та необхідна експертиза, намагатимуться створювати буткемпи, які будуть поєднувати automotive embedded + cloud і створювати необхідних «універсальних» людей.
Знову ж, це лише суто мої думки, проте я бачу хоч і не велику, але суттєву зміну універсального профайлу Automotive SW developer’a, обов’язково додадуться навички — Сloud expertise: AWS / MS Azure/ GCP (code commit, code built + інші сервіси).
Але найбільша зміна повинна відбутись в нашому усвідомленні, що навіть Automotive SW development вже є можливою в клауді і буде туди «переходити», і що навички девопсів стануть частиною профілю розробника програмного забезпечення.
Практика показує, що більше грошей платять працівникам, які мають комбінацію навичок і працюють на стику різних сфер знань, і саме до цього може призвести перехід в Cloud. Втім, хто зна, як на це відреагує ринок праці.
З точки зору бізнесу, за час повномасштабної війни я бачив зростання лише в тих напрямах, де Українці володіють унікальними навичками, і тому вважаю критичним розвинути цю галузь теж щоб створювати нові робочі місця, попри геополітичні ризики.
Soft skills для майбутнього
Я спробував описати зміни hard-скілів для інженерів, але є ще декілька важливих речей, яких ми повинні навчитись, — це вже з «м’яких» навичок співробітників.
Перший така навичка — розуміти, як результат вашої роботи буде створювати додаткову цінність для кінцевого користувача. Виконувати таски навчились майже всі — проактивно пропонувати ідеї і створювати додаткову цінність вміють одиниці.
Друга навичка — вміння працювати з невизначеністю або невідомістю. Як часто ви стикались з ситуацією, коли вимоги для розробки функціоналу описані так, що до них виникає більше питань, ніж відповідей? Я думаю, в кожного така ситуація була:)
І ця ситуація надалі може траплятись все частіше і частіше, бо буде відбуватись зміна підходів до розробки embedded програмного забезпечення і очевидних відповідей не буде, потрібно буде вмикати мозок і знаходити ці рішення.
З простих прикладів незрозумілих задач:
- Як тестувати інфраструктуру клауда, щоб впевнитись, що ця інфраструктура має такі ж властивості, як локальний білд з підключеним до ноутбука пристроєм?
Відповіді на ці питання, може, вже й є в когось, але я цих людей поки не знаю:) Майбутнє — воно цікаве, і вимагатиме від мене і вас бути зацікавленими й допитливим, шукати нові варіації використання того досвіду, що ми вже здобули.
На завершення, я хотів би процитувати віцепрезидента однієї компанії з виробників мап для навігаційних систем. Я почув від нього це у 2018 році, це цитата Чарльза Хенді, й вона буде актуальною завжди:
"We have learned that...the past will be a poor guide to the future and what we shall forever be dealing with unanticipated events. Given that scenario, organizations... will need individuals who delight in the unknown"© Charles Handy
63 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів