Сфера комп`ютерних наук зараз є однією з найбільш популярних. Кваліфікованих спеціалістів гостро не вистачає. Про те, якими навичками слід володіти, аби стати одним з таких фахівців, ми вирішили дізнатися в експертів.
Гарний, а головне, якісний спеціаліст інженерії програмного забезпечення, перш за все має враховувати потреби бізнесу. Розуміти, що працює з високою часткою надійності та дає мінімум 90-95% точності.
Зараз у світі вельми поширений тренд на Deep Learning, комп'ютерний зір, нейромережі. Нейромережі можна використовувати для передбачення попиту, рекомендації товару, персоналізованого маркетингу.
Проте, аби якісно налаштувати технології, слід мати поглиблені знання у сфері методів класичного машинного навчання — матричного розкладання.
Останнім часом швидко розвивається тренд на Generative Adversarial Networks (GANs). Ці алгоритми дозволяють на підставі вхідних даних генерувати нові дані, які дуже схожі на справжні.
Візьмемо, наприклад, картинку, де машина їде по пустелі, і картинку середньої смуги Росії. Накладаємо одне на інше, і ось уже машина їде полем.
Основним недоліком таких методів прогнозування є відсутність достатньої кількості даних для навчання. За допомогою GANs можна створювати більше даних і більш точно навчати моделі. Але для того, аби використовувати ці розробки для бізнесу, варто провести якомога більше академічних досліджень.
Популярний зараз напрямок Reinforcement Learning (навчання з підкріпленням) активно застосовується в автопілотованих автомобілях, інтернет-рекламі.
Потенційно подібну технологію можна впроваджувати, наприклад, на нафтохімічних заводах. В такому випадку все виробництво могло б керуватися з більшою ефективністю без втручання людей.
За останні 5 років сформувався стандартний набір вимог до фахівця, що працює у сфері програмної інженерії. Серед них відзначають:
Достатньо часто для проведення попереднього аналізу, доробку, а також безпосереднього запуску однієї моделі, обчислювальних потужностей однієї машини не вистачає. Саме тому весь процес побудови моделі відбувається на кластері з розподіленим зберіганням і обчисленням даних.
Для аналізу найчастіше використовуються Spark, HiveQL або інші внутрішні фреймворки сховищ. Більш того, фахівець повинен вміти працювати з технологіями й розуміти, як писати алгоритми для розподілених обчислень, а також оцінювати їх ресурсомісткість і ефективність.
Крім цього, фахівцеві, який хоче залишатися в тренді, необхідно постійно опановувати нову літературу і наукові роботи, вміти швидко занурюватися в нову сферу, володіти термінологією.
Він має бути готовим знову почати працювати над виконаною роботою, якщо не вдалося досягти очікуваного ефекту.
Драгуцан Андрій, кафедра АПЕПС, ТЕФ.