Створення Engineering Software часто асоціюють із чимось складним. Здається, якщо робиш софт, наприклад, для архітекторів, то і сам маєш розбиратись в архітектурі, будівництві, виробничих процесах. Ми поговорили з фахівцями і з’ясували, чи це справді так.
Публікуємо чотири історії розробників, які створюють Engineering Software у компанії AMC Bridge. Дехто з них працює у галузі роками, дехто — розпочав нещодавно. На що спрямовані їхні проєкти, які знання потрібні новачкам і чи справді все дуже складно — про все це нижче.
Олександр Короп
Senior Full Stack Developer. Один рік в AMC Bridge, 6 років у розробці. Чернівці.
Як веб-розробник я працюю над створенням клієнтської та серверної частини веб-застосунків на JavaScript. Це досить типовий процес: відмінності зазвичай стосуються технологічного стека, методології розробки та бізнес-сфери, для якої створюється продукт.
Зараз я працюю над розробкою веб-частини ПЗ для друку металевих виробів на 3D-принтері. Наприклад, користувач хоче надрукувати металеву деталь. Він завантажує файли з її кресленням, обирає потрібний матеріал та вказує налаштування для друку.
Після цього отримує вже не креслення, а 3D-модель і може змінювати її розмір, розташування у просторі тощо. Потім — друк, термічна обробка, і деталь готова до використання.
Друк металевих елементів на 3D-принтері швидший і дешевший, ніж їх виготовлення у традиційний спосіб. Такі принтери можуть друкувати як один-декілька виробів, так і багато елементів для збірки промислових товарів.
Що найскладніше в такій роботі?
На початку мені було непросто із розробкою 3D-складової інженерного ПЗ, бо я не мав попереднього досвіду в цьому напрямку. Необхідно було ознайомитись з аспектами розробки й основними бібліотеками, які для цього використовуються у веб-розробці.
Решта завдань мало відрізнялась від розробки будь-якого сучасного SPA веб-продукту Enterprise рівня. Ми так само займались розробкою клієнтської та серверної частини застосунку, системами авторизації та автентифікації, роботою з базами даних, імплементацією інтерфейсу користувача тощо.
На мою думку, складність та новизна — найкращі стимули до розвитку. Цим розробка інженерного софту мене і зацікавила.
Наприклад, тут складним може виявитись те, що потрібно розбиратись із певними розділами математики, суміжними дисциплінами та комп'ютерною 3D-графікою. Але існує багато онлайн-курсів, посібників та інших матеріалів, які допомагають у цьому. Наприклад, якщо ти JS-розробник, можна ознайомитись із Three.js — 3D-бібліотекою: подивитись відео, прочитати книгу або переглянути документацію.
Андрій Данкевич
Engineering Software Department, Director. Працює в галузі та AMC Bridge 12 років. Львів.
До роботи в AMC Bridge я не мав серйозного досвіду розробки софту. Так, під час навчання писав макроси для AutoCAD та SOLIDWORKS для автоматизації якихось обчислень чи креслень. І трішки фрилансив як програміст 1С.
Коли я прийшов у AMC Bridge, то одразу пошкодував, що не так уважно слухав лекції з вищої математики. Тут я вперше зіткнувся з галуззю обчислюваної геометрії — Computational Geometry. До цього я навіть не здогадувався, на чому базуються всі ці програми для проєктування. Але за допомогою книжок та колег я почав «лупати цю скалу».
Чи складно це? Так. Чи складніше за написання програмного забезпечення для банку? Не думаю.
Складність продуктів, котрі ми розробляємо, дуже відрізняється. Зрештою, навіть в межах одного проєкту бувають легкі, а бувають складні завдання. Тому є робота і для експертів, і для початківців. Головне — це бажання. А далі вже справа часу та докладених зусиль.
Один із наших проєктів — ми розробляємо софт для симуляції аеродинамічної труби. Це програма, яка дає можливість проводити дослідження віртуальної, а не фізичної деталі.
Інженер може завантажити 3D-модель та проаналізувати її: поглянути на аеродинамічні характеристики, гравітацію, турбулентність. Також він має можливість подивитись, як рухаються потоки рідини, повітря та інше. З таким ПЗ виробникам автомобілів для тестування вже не потрібна фізична аеродинамічна труба (яка ще й дуже дорога).
Над цим проєктом у нас працює три команди:
Перша займається ядром розрахунків, які більше орієнтовані на геометрію: вони розробляють геометричні алгоритми. Це так званий pre-processing, коли триває підготовка моделі до симуляції. Тут потрібні навички програмування та обчислювальної геометрії (Computational Geometry). Також бажано розуміти доменну область симуляції.
Друга команда займається 2D- та 3D-візуалізацією цих розрахунків. Розробники малюють модель аеродинамічної труби, враховуючи технічні параметри. Відповідно, тут алгоритми більше пов’язані з графікою.
Третя — компонує це все у десктопну програму: розміщує візуалізаційні компоненти, додає графіку та інше.
Ці три команди — типовий приклад проєктів у нашій галузі. Де, з одного боку, ми займаємось розрахунками, з іншого — візуалізацією даних, а потім переносимо все у фінальну програму.
І навіть у наших командах не усі щодня пишуть алгоритми. Так, це важливо, як і досвід у доменній галузі. Але ці знання не застосовуються завжди, тому для початку інколи може вистачити більш загальних знань.
Також цікавий проєкт — ми створюємо застосунок віртуальної реальності, яким користуються виробники автомобілів для проєктування нової моделі. З його допомогою дизайнери-інженери оцінюють, наскільки просторий чи тісний салон цієї моделі, який вигляд має панель приладів, де вона розташована, які кольори чи текстури більше пасують тощо. І це все не у 2D-моделі на моніторі, а у 3D-середовищі, вдягнувши окуляри.
Наша експертиза виходить далеко за межі інженерії. Наприклад, один із наших клієнтів думає застосовувати симуляцію газових потоків для аналізу потоку крові — щоб спрогнозувати можливу кровотечу під час операції абощо.
Діана Туріна
Junior C++ Developer. Працює в галузі та AMC Bridge 1 рік. Дніпро.
З якими навичками та знаннями можна починати роботу у галузі Engineering Software?
Я прийшла в AMC Bridge студенткою, до цього працювала лише над університетськими завданнями. Зазвичай це були невеликі консольні проєкти на C++ та нескладні веб-сайти з використанням стандартних HTML, CSS та JavaScript. Окрім цього, цікавилась MS SQL та пробувала будувати віконні застосунки у C++ Builder.
У мене не було якихось вподобань щодо конкретно цієї галузі. Я просто розуміла, що вже хочу працювати, а коли дізналася про можливість стажування у компанії — вирішила спробувати. Саму роботу я ніяк не уявляла, якщо чесно. Лише точно знала, що буде багато нового та математики. Так і виявилося.
Коли ти почала працювати, якими були перші робочі дні, що здавалося найскладнішим?
Було трішки страшно: я хвилювалась, що не зможу потоваришувати з колективом. Це ніби переходиш до нової школи, де всі одне одного знають, а тебе не знає ніхто. Але досить швидко я звикла до нових людей, а вони до мене. Найважче — це почати.
Спочатку все видавалось мені складним: здавалось, що дуже багато математичних обчислень. Але університетських знань з математики для старту виявилось достатньо. Також я завжди могла і можу звернутись за порадою до колег.
Тепер я вже адаптувалась. І розумію, що просто потрібно далі розвиватися та навчатись — програмуванню та математиці.
Зараз я працюю в інженерному департаменті. Не можу сказати, що робочий процес якось сильно змінився, все так само: дають завдання, а я їх виконую. Кожен новий проєкт — це нові технології. Наприклад, раніше я працювала з C++, а зараз здебільшого з JavaScript. Окрім цього, вивчаю нові бібліотеки та фреймворки.
Для розробки інженерного софту потрібно добре знати математику. Якщо з нею труднощів немає — то, думаю, це не складніше, ніж розробка в інших галузях. Можливо, навіть простіше.
Така робота ніби змінює спосіб мислення і ти починаєш дивитись на світ інакше. Наприклад, бачиш механізм, а у голові виникає схема, як можна побудувати його цифровий аналог для симуляції або аналізу. Кожен із цих проєктів для мене — це виклик та спосіб вийти за власні межі.
Олег Янчук
Junior С++ Developer. Працює в AMC Bridge майже 2 роки. В галузі 2+ роки. Львів.
Я працював у GameDev-і, де створював ігри під Mobile-платформи. Це була розробка з нуля, яка дала мені розуміння повного життєвого циклу проєкту та того, що програмування — це однозначно «моє».
Звісно, на початку роботи в AMC Bridge виникали труднощі, але вони не були пов’язані з галуззю. Наприклад, до того я працював із 2D. А тут потрібно було швидко перекваліфікуватись у 3D. Мені допомогло те, що, працюючи у GameDev, я цікавився 3D-рушіями, а в університеті уважно слухав курс математики.
Друга складність також не стосувалась спеціалізації: я не мав досвіду роботи з іноземними замовниками. Але тепер, коли його отримав, це теж не проблема.
Я не вважаю ці проєкти складними. Для мене «складно» — це якщо думаєш, як би то швидше піти додому. Взагалі вважаю, що складні завдання — це просто ті, над розв’язанням яких потрібно подумати трішки довше.
Наприклад, розробка нового функціоналу алгоритму. Коли немає конкретного розв’язку, і ти стаєш дослідником: шукаєш наукові матеріали й отримуєш із них 30-40% приблизного розв’язання проблеми. Далі ти вже стикаєшся з реальністю: імплементуєш, натикаєшся на граблі, вносиш зміни, і знову імплементуєш. Поки не знайдеш правильне рішення. Але ти його знаходиш і кайфуєш від того.
Зараз я пишу софт для 3D-принтингу. І хоча я не можу відчути результат конкретно свого проєкту, я знаю, що мій код та мої рішення мають значення. Тривимірні принтери друкують деталі для автомобілів та літаків, для виробництва та будівництва; є багато розробок у медицині та харчовій промисловості.
3D-друк економить світові ресурси та змінює підхід роботи у найбільших галузях. І я причетний до цих змін.
Джерело: codeguida.com
0 комментариев
Добавить комментарий