Результати пошуку за запитом: mvc 5
Чи замінить штучний інтелект розробників?
Автор: Влад Сверчков
Що таке ШІ?
Визначення та типи
Використання ШІ в ІТ
Нейронні мережі
Людський мозок vs Штучний інтелект
Український ринок ІТ після буму AI
Чи варто боятися розробникам: що думає про це сам штучний інтелект?
Майбутнє співробітництва ШІ та людини
Висновки
Сучасний технологічний ландшафт зазнає змін з неймовірною швидкістю, і штучний інтелект (ШІ, AI) сьогодні є одним з його Еверестів. Він вже допомагає нам в автоматизації різних завдань і процесів: спрощує написання текстів та програмного коду, генерує зображення та відеоряди, консультує нас із різних запитань, допомагає вчити іноземні мови.
Як відомо, більшість гір виникають на місці зіткнень тектонічних плит під супровід землетрусів – схожий процес маємо і з активним розвитком ШІ. Людство розділилося на два великі табори: перші захоплено спостерігають за процесом утворення технологічних Гімалаїв, а другі пророкують ряд катастроф – однією з найстрашніших вказують можливе безробіття, особливо серед розробників.
ITVDN – це освітня онлайн платформа для вивчення програмування та ІТ, тому ми не могли пройти осторонь теми перспективності професії розробника. Пропонуємо поринути в неї і разом розібратися, чия літосферна плита буде зверху та хто візьме гору в цій боротьбі – програмісти чи штучний інтелект?
Що таке ШІ?
Визначення та типи
Штучний інтелект означає здатність машин імітувати людські когнітивні функції, такі як навчання, вирішення проблем і прийняття рішень. Він охоплює широкий спектр технологій і застосунків, що дозволяють машинам виконувати завдання, які зазвичай вимагають людського інтелекту, як-от візуальне сприйняття, розпізнавання мови, прийняття рішень і мовний переклад.
Відповідно до відеоролику “The 7 Types of AI” з офіційного YouTube-каналу IBM Technology (IBM – один із найбільших в світі провайдерів ІТ-інфраструктури, ПЗ та консультаційних послуг), AI має щонайменше 7 типів, але реалізацію мають лише три з них.
Назва
Короткий опис
Artificial Narrow Intelligence або вузький AI (слабкий AI)
Призначений для виконання конкретного завдання або вузького кола завдань. Серед прикладів – сучасні сервіси Alexa, Siri, Cortana тощо.
Artificial General Intelligence або загальний AI (сильний AI)
Здатен розуміти, навчатися і застосовувати знання в широкому спектрі завдань – подібно до людини. Цей рівень ШІ все ще залишається здебільшого теоретичним і наразі існує хіба що в науковій фантастиці.
Artificial Super Intelligence або штучний суперінтелект
Гіпотетичний рівень ШІ, перевершує людський інтелект у всіх відношеннях і здатний перевершити найкращі людські розуми в кожній галузі.
Reactive Machines або реактивні машини
Штучний інтелект найпростішого типу, не має здатності формувати пам'ять або використовувати минулий досвід для прийняття обґрунтованих рішень. Працює виключно на основі поточних даних і не враховує контекст. Як приклад – Deep Blue від IBM, який може грати в шахи на рівні гросмейстера і прораховувати усі можливі сценарії.
Limited memory або обмежена пам’ять
На відміну від реактивних машин, ШІ з обмеженою пам'яттю може звертатися до минулого досвіду для прийняття рішень. Він може зберігати і згадувати попередні дані, що дозволяє йому адаптуватися до ситуації і відповідним чином реагувати. Приклади: самокеровані автомобілі, системи рекомендацій, спам-фільтри, чат-боти, пристрої розумного будинку тощо.
Theory of Mind або теорія розуму
Головна мета – зрозуміти і передбачити поведінку, емоції, відчуття людини, аби потім надати персоналізовані послуги. Цей тип ШІ враховує, що люди мають різні переконання, бажання та перспективи. Наразі Theory of Mind перебуває на стадії досліджень і розробок
Self-aware AI або самосвідомий ШІ
“Найстрашніший” вид штучного інтелекту, майбутнє ШІ, яке йому так пророкують. Володіє свідомістю і почуттям власної гідності. Він розуміє власне існування, емоції та процеси мислення, має власні потреби. Однак досягнення самосвідомості штучних систем все ще лежить в суто теоретичній площині.
Reactive Machines та Limited memory відносяться до Narrow AI, Theory of Mind – до General AI, а Self-aware – до суперінтелекту.
Використання ШІ в ІТ
В 2024 році штучний інтелект продовжує стрімко трансформувати різні сфери ІТ – ось декілька прикладів:
1. Кібербезпека
“Розумні” системи аналізують величезні потоки даних для проактивного виявлення загроз та їх мінімізації, вивчають моделі поведінки користувачів і позначають підозрілі дії, аналізують фінансові транзакції, допомагають у створенні звітів тощо.
2. DevOps і хмарні обчислення
ШІ автоматизує такі завдання, як виділення ресурсів, управління конфігурацією і масштабуванням, аналізує дані щодо продуктивності системи і пропонує оптимізацію для використання ресурсів і скорочення витрат. Також системи з інтелектом автоматично виявляють і усувають проблеми в хмарній інфраструктурі, підвищуючи відмовостійкість і час безвідмовної роботи системи.
3. Розроблення програмного забезпечення
Технологічні інновації в галузі AI дозволяють генерувати, рефакторити та пояснювати код для розробників, виявляти потенційні помилки, автоматизувати процеси тестування, прискорюючи розроблення, автоматично доповнювати код в реальному часі тощо.
4. Тестування і забезпечення якості
Інструменти тестування на основі ШІ здатні проводити аналіз коду, виявляти вразливості, вивчати результати попередніх тестів, автоматично генерувати тест-кейси тощо.
5. Управління даними та аналітика
Автоматизація завдань з опрацювання даних, виявлення та виправлення помилок, підготовка даних до аналізу, інтелектуальний аналіз даних, генерування звітів та презентацій, виявлення прихованих закономірностей, прогнозування майбутніх тенденцій та результатів, асистенція під час стратегічного планування та розподілу ресурсів – і це тільки загальні точки, в яких штучний інтелект впливає на домени Big Data, Data Science тощо.
6. Управління мережею
Машинний інтелект виявляє незвичайні шаблони мережевого трафіку, щоб запобігти кібератакам та/або перебоям у роботі мережі. Також він аналізує мережеві дані та автоматично налаштовує конфігурації для оптимальної продуктивності та використання ресурсів, прогнозує тенденції мережевого трафіку і динамічно розподіляє ресурси, щоб забезпечити безперебійну роботу і уникнути появи вузьких місць (так званих “bottlenecks”).
7. Управління ІТ-сервісами (ITSM)
Людино-машинна взаємодія із залученням ботів на основі ШІ сприяє автоматизації рутинних завдань як-от скидання паролів і вирішення інцидентів, зменшуючи навантаження на службу підтримки та підвищуючи її ефективність. Також ці системи аналізують дані ІТ-інфраструктури, щоб прогнозувати потенційні збої, вживати превентивні заходи, мінімізувати час простою, діагностувати першопричини проблем і пропонувати рішення, оптимізуючи процеси усунення несправностей.
І це тільки частина тих сфер, де штучний інтелект вже використовується і активно розвивається. До них можна додати:
ІТ-менеджмент;
інтернет речей (IoT) і робототехніка загалом (як цивільна, так і військова);
розроблення на основі NLP: віртуальні асистенти, чат-боти, інтерфейси, що активуються голосом;
електронна комерція: рекомендаційні, аналітичні системи;
віртуальна реальність, комп’ютерні ігри тощо.
Виходить, під загрозою “вимирання” не тільки розроблення, а й інші ІТ-галузі.
Нейронні мережі
Нейронна мережа – важливий фундамент в розумінні штучного інтелекту. Хоча це популярний та ефективний метод побудови штучних систем, існують й інші методи, наприклад системи на основі правил, дерева рішень, генетичні алгоритми, машини опорних векторів тощо. Ці методи часто використовують у поєднанні з нейромережами для створення більш складних інтелектуальних систем.
То яким чином нейронки пов’язані з розумними машинами?
Нейронні мережі складають кістяк алгоритмів глибокого навчання (Deep Learning, DL), глибоке навчання є підмножиною машинного навчання (Machine Learning, ML), а машинне становить підмножину AI. Окрім ML штучні системи можуть включати в себе оброблення природної мови (NLP), комп’ютерний зір, рух, озвучування тексту тощо. Картинка вище візуалізує ці моменти для кращого розуміння.
Якщо приклади AI навести досить просто (ChatGPT, Midjourney, GitHub Copilot і т. д.), то де в житті ми напряму зіштовхувалися з іншими трьома складовими? Ось деякі з них:
нейромережа може гарно розпізнавати голос, об’єкти на зображеннях та відео тощо;
Google Translate – яскравий приклад DL;
коли ви зайшли в інтернет-магазин, подивилися щось, а згодом отримали пропозиції з товарами, які “можуть вам сподобатися” – постаралося машинне навчання.
За своєю будовою штучні нейронні мережі дуже нагадують ті, що знаходяться в нашому мозку, але насправді навіть один людський нейрон більше нагадує велетенську нейромережу.
З чого складається типова нейронна мережа:
На картинці зображено глибоку нейромережу – це мережа, яка має більше трьох прихованих шарів (hidden layers) включно з вхідним (input) та вихідним (output). Якщо шари всього 3, маємо справу з найпростішою нейромережею. До речі, картинку вище можна розглядати як алгоритм глибокого навчання.
Зі схематичним зображенням познайомилися, а тепер нас цікавить робота нейронної мережі.
Кожен шар нейромережі складається з вузлів – штучних нейронів. Кожен вузол з'єднаний з нейронами наступного шару, причому кожен має свою вагу та поріг. На вхід вузла надходить певне значення, яке зазнає впливу ваги, і якщо потім це значення перевищує поріг, даний вузол “активується” за допомогою активаційної функції, і результуючі дані надсилаються до наступного шару мережі. Якщо вихідне значення вузла нижче за поріг, до наступного вузла воно не потрапляє.
Навчальні дані допомагають навчати нейронну мережу та покращувати її точність із часом. Коли алгоритми навчання якісно налаштовані, вони стають міцним фундаментом ШІ, оскільки можуть дуже швидко класифікувати та кластеризувати дані – це дозволяє суттєво прискорити різні операції. Класифікація нейронних мереж з прикладами реалізації тут наводитися не буде, але відмітимо пошуковий алгоритм Google – це, напевно, найвідоміша реалізація нейронки; саме завдяки їй пошуковик настільки швидкий та ефективний.
Людський мозок vs Штучний інтелект
Переваги мозку
Головний командний центр людини має низку сильних сторін, яким поки поступаються розумні системи:
Креативність та адаптивність. Мозок чудово генерує нові ідеї, вирішує проблеми нестандартними способами та адаптується до непередбачуваних ситуацій, в той час як ШІ та творчість – пара, яка потребує відпрацювання багатьох “па”.
Потужний інтелектуальний спектр. Під владою наших півкуль знаходяться складні міркування, абстрагування, емоційний інтелект тощо.
Когнітивна гнучкість та інтуїція. Люди можуть переносити досвід з інших сфер життя для адаптації до нових умов та вирішення нових проблем, з якими вони не стикалися, приймати судження та рішення на основі неповної інформації та інтуїції, з чим нейромережі мають проблеми.
Стійкість до “шуму” вхідних даних. Людський мозок легко проходить повз викривлення або невеликі збурення у вхідних даних, які в розумних системах можуть призвести до значних помилок або неправильних класифікацій.
Емоції та етичність. Етика в ШІ недостатньо розвинена: комп’ютери не настільки гарно працюють з людськими емоціями, емпатією та моральними нормами, в той час як для людини ці речі є фундаментально важливими та визначальними у прийнятті рішень.
Eco-friendly 💚 Людський мозок споживає до 20 Вт, що робить нас значно енергоефективнішими за штучні технології, які споживають великі об’єми електроенергії (особливо на етапі навчання) і не можуть існувати без живлення.
Переваги штучного інтелекту
Наші цифрові візаві також мають чим похизуватися:
Швидкість, об’ємність та ефективність. Машинне навчання дозволяє обробляти величезні обсяги даних, швидко аналізувати, робити висновки і виконувати конкретні завдання в рази швидше людини.
Розпізнавання та аналіз шаблонів. Штучні нейронні мережі чудово розпізнають закономірності та складні взаємозв'язки в даних, допомагаючи в таких завданнях, як розпізнавання зображень, переклад текстів і т. д.
Масштабованість і автоматизація. Системи штучного інтелекту можна масштабувати й автоматизувати, що дозволяє їм оперативно справлятися з великими робочими навантаженнями і репетативними задачами.
Налаштування та оптимізація. Алгоритми ШІ можна навчати і вдосконалювати під конкретні завдання, досягаючи високого рівня точності і результативності.
Доступність 24/7. Системи AI можуть працювати цілодобово, забезпечуючи безперебійне обслуговування, наприклад постійний моніторинг стану інфраструктури, відеоспостереження, регулювання температури в приміщенні тощо.
Відсутність деяких людських вад. Штучний інтелект не може забути про задачу, розлінитися, проспати, захворіти, мати похмілля, злякатися, бути не в настрої або просто не любити вас. Звісно, ніхто не застрахований від зникнення живлення, хакерських атак, проблем з програмно-апаратною начинкою абощо, але в плані працездатності, доступності і надійності комп’ютерні системи значно краще себе проявляють, ніж людина.
Зниження ризиків. ШІ можна застосовувати в умовах підвищеного ризику та небезпеки. Наприклад, роботи зі штучним інтелектом можуть виконувати небезпечні завдання на виробництві, брати участь у пошуково-рятувальних місіях і під час ліквідації наслідків стихійних лих, мінімізуючи загрозу для людей.
Український ринок ІТ після буму AI
Яким розробники бачать майбутнє ШІ?
Ще в 2017 році дослідники з Oak Ridge National Laboratory – американської лабораторії, яка займається науковою діяльністю і фінансується Міністерством енергетики США – опублікували статтю, в якій припускають, що до 2040 року більшість програмного коду будуть писати саме машини, і це радикально вплине на створення ПЗ як таке.
А зовсім нещодавно – 12-14 лютого 2024 року – на Всесвітньому урядовому саміті в Дубаї обговорювався штучний інтелект, і CEO компанії NVIDIA Дженсен Хуанг сказав, що якщо останні 10-15 років радили вчити програмування та комп’ютерні науки, то зараз ці поради неактуальні, адже ШІ перетворює кожну людину в програміста і дає можливість прокачати свої навички та суттєво підвищити продуктивність в інших затребуваних сферах, наприклад у цифровій біології, навчанні, виробництві, фермерстві тощо.
Також він додав, що якби міг почати все з початку, то фокусувався б на такому напрямку, як наука про життя (біонаука, цифрова біологія, біоінженерія), оскільки це надважлива комплексна галузь, розвиток якої в поєднанні з потужністю ШІ дозволить оптимізувати багато процесів, в тому числі пов’язані зі сталим розвитком.
Сучасні технологічні інновації дозволяють активно використовувати AI рішення, хоч і без ідеального результату. Давайте подивимось, як змінився ландшафт українського ІТ-ринку після “буму” ChatGPT та появи інших “штучних” гравців.
А зробимо ми це за допомогою аналітики від DOU – спільноти українських розробників. Точкою відліку візьмемо лютий 2023 року, коли “чат” став офіційно доступним в Україні і зникли блекаути.
Цьогоріч у лютому опубліковано аналітику, відповідно до якої кількість вакансій на DOU станом на січень 2024 року складає 5057. В лютому 2023 року ця цифра становила 3489, себто приріст на рівні 45%. Пам’ятаємо, що на минулорічну статистику могли вплинути блекаути, але в тому ж лютому енергетична ситуація почала значно покращуватися.
Порівняємо кількість технічних вакансій у лютому 2023 та в січні 2024 року:
Напрямок
Лютий 2023
Січень 2024
Java
138
119
QA
177
236
.NET
112
149
Front End
196
214
Android
44
36
Python
115
178
Node.js
107
153
PHP
141
177
DevOps
160
166
AI/ML
11
40
Big Data
19
18
Data Engineer
22
63
Data Science
29
58
React Native
25
33
Ruby
19
23
iOS/macOS
40
43
Як бачимо, в переважній більшості напрямків кількість вакансій зросла після того, як штучний інтелект вийшов на глобальний ринок, а в інших спостерігаємо несуттєве зменшення.
Яка ситуація на ринку початківців (0-3 роки досвіду)?
В усіх трьох категоріях маємо помітне зростання.
Що думає про це сам штучний інтелект?
Давайте послухаємо аргументи ШІ щодо того, чи зможуть нейромережі замінити розробників і зайняти їхнє місце.
ChatGPT
Відповідь ChatGPT версії 3.5:
“Розробники програмного забезпечення незамінні завдяки низці переваг:
Творче вирішення проблем: розробники застосовують креативне мислення для вирішення складних проблем, пропонуючи унікальні та ефективні розв’язки.
Навички критичного мислення: вони досягають успіху в розбитті складних проблем, їх аналізі та розробці ефективних рішень.
Адаптивність і здатність до навчання: розробники йдуть в ногу з часом, швидко адаптуючись до нових технологій та вивчаючи нові мови програмування, що дозволяє їм залишатися конкурентоспроможними в постійно мінливому середовищі розробки ПЗ.
Співпраця та комунікація: ефективна співпраця та комунікація дозволяють розробникам гармонійно співпрацювати з міжфункціональними командами, включаючи дизайнерів, Product менеджерів та тестувальників.
Етичні міркування: розробники повинні враховувати етичні аспекти у своїй роботі, забезпечуючи відповідність своїх творінь суспільним цінностям і нормам.
По суті, хоча ШІ може провести інтелектуальний аналіз даних та автоматизувати певні завдання, унікальне поєднання креативності, критичного мислення, адаптивності, співпраці та етичних міркувань розробників залишається незамінним для грамотного програмування та інших процесів розробки ПЗ”.
Gemini (Bard)
“Хоча я, Бард, велика мовна модель, володію вражаючими можливостями в розумінні та генеруванні тексту, повністю замінити розробників – це занадто, принаймні поки що. Ось чому:
Творчість та вирішення проблем. Хоча я можу писати рядки коду як програмісти, справжні інновації виникають завдяки здатності людського розуму уявляти унікальні рішення, що виходять за рамки усталених шаблонів.
Глибока експертиза в галузі. Хоча я маю доступ до величезного обсягу інформації та можу її обробляти, глибоке розуміння та контекст, якого розробники набувають завдяки багаторічному досвіду роботи в конкретних галузях, є незамінними.
Людські судження та етика в ШІ. Розробники привносять в роботу безцінні людські судження та етичні міркування, гарантуючи, що їхні творіння відповідають принципам відповідального використання. Орієнтування в етичних дилемах залишається поза межами сучасного ШІ.
Комунікація та співпраця. Розробка ПЗ процвітає завдяки командній роботі та ефективній комунікації. Хоча я можу обробляти інформацію та реагувати на неї, мені бракує навичок ефективної співпраці з різними командами, генерування ідей та орієнтації в складнощах людської взаємодії.
Адаптивність та здатність до навчання. Технологічні інновації носять досить динамічний характер, а розробники вміють постійно вчитися та опановувати нові технології. Хоча я також це можу, я обмежений в своїх параметрів, і моя здатність до навчання поступається людям-розробникам.
Майбутня співпраця, а не заміна.
Я уявляю собі майбутнє, в якому машинний розум розширює можливості розробників, слугуючи потужним інструментом для вирішення повторюваних завдань: автоматизація коду, пропозиції щодо його покращення та розширення, інші можливості для вирішення проблем. Ця співпраця відкриє шлях до більших інновацій та ефективності у сфері розробки ПЗ”.
Perplexity
Відповідь великої мовної моделі – розмовного пошуковика від Perplexity AI:
“Вплив штучного інтелекту на розробку ПЗ є безперечно трансформаційним, але він не може замінити унікальний людський підхід, який стимулює інновації та творчість. Штучний інтелект чудово справляється з автоматизацією повторюваних завдань, покращує якість коду та пропонує оптимізації. Однак йому бракує здатності мислити нестандартно, уявляти нові концепції чи розуміти нюанси складних систем.
Обмеження розумних систем полягають у їхній нездатності до справжньої творчості, яка є відмінною рисою розробників-людей. Вони навчаються на наявних даних, і хоча можуть генерувати код на основі шаблонів, але не можуть впроваджувати інновації чи створювати щось абсолютно нове.
В осяжному майбутньому програмісти будуть доповнені, а не замінені на ШІ. Він допоможе їм зосередитися на більш складних завданнях, підвищити ефективність і зменшити кількість помилок. У міру розвитку інтелектуальних машин розробникам потрібно буде адаптуватися і опановувати нові навички, щоб працювати разом з цими потужними інструментами.
Майбутнє розробки ПЗ – це людино-машинна взаємодія, симбіоз людини та AI, де другий розширює людські можливості, а розробники-люди продовжують стимулювати інновації”.
А довіряти цим відповідям, чи ні – вирішуйте самі, шановні читачі. Можливо, штучний інтелект вже зараз приховує від нас якісь плани і спеціально присипляє нашу увагу, аби в найбільш вдалий момент зробити з нас щось на кшталт сервісного персоналу або домашніх улюбленців?
Майбутнє співробітництва ШІ та людини
Сучасна людино-машинна взаємодія постає у вигляді ефективної кооперації, що спрощує рутинні задачі та оптимізує багато процесів, пов’язаних з ІТ, починаючи з інтерпретації, генерації та рефакторингу коду і закінчуючи повноцінними AI інструментами під кожну спеціальність.
Важко спрогнозувати точний рівень загрозливості штучних систем айтішним професіям у майбутньому, але зараз це корисний інструмент, який програмісти мають вивчати, аби з легкістю обходити рутину і більше часу приділяти дійсно важливим процесам.
Іншими словами, сучасні ШІ – це наші помічники, і в найближчому майбутньому вони не замінять нас, а органічно доповнять і переформатують наші ролі. Та хто знає, як буде в більш далекій перспективі.
Цілком ймовірно, що позиції розробників рівня Intern-Junior будуть зазнавати найбільших видозмін, оскільки робота нейронної мережі досить непогано заточена під генерування коду для нескладних задач. Але не забуваймо, що результат їхньої роботи все ще далекий від ідеалу.
Висновки
То чи замінить штучний інтелект розробників?
Вище ми проаналізували ситуацію на українському ринку ІТ, і зараз натяків на те, що програмісти залишатися без роботи, немає. Штучні системи поки що займають роль асистентів і спрощують рутинну та/або часовитратну роботу: написати шматок коду або частину документації, нагадати функціонал певного методу, дати пораду або пояснити код, провести його рефакторинг тощо.
Найрозумніший крок в даних умовах – вивчати AI. Навіть якщо деякі професії почнуть зникати, то досвідчені фахівці, котрі вміють делегувати рутину нейронкам і розробляти комплексні рішення, точно не залишаться осторонь. Тому фокусуйтеся на складних та креативних рішеннях, які нейромережа не осилить, масштабуйте знання та навички, отримуйте унікальний досвід, завжди слідкуйте за новинами світу ШІ, а також будьте відкриті до нових технологій та вмінь.
Бажаємо вам успіхів у розробці та вивченні AI інструментів! Ваші думки щодо майбутнього штучного інтелекту та його впливу на розробників пишіть у коментарях
Кар'єра в IT: хто такий Embedded-розробник, завдання та обов'язки
Автор: Влад Сверчков
Хто такий Embedded-розробник?
Сфери застосування Embedded-розробки.
Що має знати Embedded-розробник.
Як стати Embedded-розробником.
Де отримати знання.
М’які навички.
Ключові тренди в Embedded.
Кар’єрні перспективи та заробітна плата Embedded Engineer.
Кількість вакансій.
Конкуренція.
Заробітна плата.
Кар’єрні можливості.
Висновки.
Переважна більшість новачків в Україні обирає тестування або розробку із залученням C#./NET, Java, Python, JavaScript (фронтенд та Node.js). Ці напрямки мають найбільшу кількість вакансій в ІТ, низькі вимоги до вищої освіти, потужну розпіареність майже в усіх навчальних центрах, а також відносно простий перехід в ІТ з будь-якої не айтішної професії.
Спеціальність, яку ми сьогодні розглядатимемо, не є настільки популярною, трендовою. Однак вона є не менш важливою за інші ІТ-напрямки. Герой нашої статті займається розробленням вбудованих (embedded) систем, і його іменують Embedded-розробник.
Що це за спеціальність, наскільки вона важлива і де використовується, що потрібно вчити для її опанування, як виглядає день Embedded-ера, які кар’єрні перспективи та зарплати у фахівців цього напрямку – розбір цих та інших інтригуючих питань читайте нижче.
Хто такий Embedded-розробник?
Почнемо з поняття “Embedded система”. Трактування в різних джерелах відрізняється, але якщо звести все під один знаменник – це комп’ютеризована система, яка вбудована у механічну або електронну систему і виконує певну функціональність. Тобто, це система, в якій комп’ютер (як правило мікроконтролер або мікропроцесор) є невід’ємною частиною іншої системи.
Як приклад: мікроконтролер у вашій кавовій машині, мікрохвильовці або пральній машинці; пристрій, який забезпечує спрацювання подушок безпеки в автомобілі, контролер у літаку, який збирає певні дані про політ – навіть Bluetooth-навушники містять свою власну вбудовану систему.
Відповідно, Embedded-розробник – це спеціаліст, який займається розробкою подібних вбудованих систем, використовуючи програмування (software) та навички роботи із “залізом” (hardware).
Життєвий цикл продукту дуже тісно зав’язаний на розробнику вбудованих систем. Обов’язки Embedded-розробника можуть різнитися в залежності від мікроконтролерів / мікросхем / пристроїв тощо, з якими він працює, але основні фази, де відчутна роль цього спеціаліста, наступні:
Аналіз вимог. Комунікація з клієнтами, дизайнерами та інженерними командами для визначення функціональних і технічних вимог до вбудованої системи.
Проєктування системи. Розроблення архітектури та дизайну вбудованої системи, вибір апаратних та програмних компонентів.
Перевірка базової працездатності. Перед початком роботи Embedded розробник повинен перевірити функціонування плати, оновити драйвери за потреби і переконатися, що “залізо” справне.
Програмування. Написання програмного коду, вбудованих програм і системних протоколів.
Тестування та налагодження. Проведення тестів для перевірки працездатності embedded-системи.
Інтеграція. Забезпечення взаємодії вбудованої системи з апаратурою, зовнішніми пристроями та іншими складовими системи.
Оптимізація продуктивності. Вдосконалення ефективності та продуктивності вбудованої системи, враховуючи обмежені ресурси.
Документація. Формування діагностичних звітів, технічних інструкцій та документації щодо розроблення ПЗ. Також читання форумів, статей та інструкцій до плат та компонентів, з якими ведеться робота.
Співпраця з іншими командами. Взаємодія з hardware та software розробниками, участь в різних мітингах, обговореннях, комунікація з замовником тощо.
Безпека та надійність. Забезпечення високого рівня безпеки, надійності та працездатності вбудованої системи.
Типовий робочий день Embedded-розробника складається з усього потроху:
написання та налагодження коду, пошук багів;
робота з апаратною начинкою – інколи доводиться і паяльником почаклувати, і щось мультиметром виміряти, і осцилограф застосувати тощо;
читання документації, пошук інформації на форумах;
тестування вбудованих систем та їхніх складових;
код-рев’ю;
рефакторинг;
взаємодія з командою, керівництвом: мітинги, ділова переписка, зідзвони з певних питань (або живе спілкування) і т. д.
Сфери застосування Embedded-розробки
Embedded у XXI столітті має гарний приріст затребуваності у зв’язку з розвитком ІТ-індустрії, в особливості – мережевих технологій, операційних систем, мов програмування та внаслідок модернізації “заліза”. Наразі сфера застосування вбудованих систем досить об’ємна:
Побутова електроніка. Вбудовані системи є невід’ємними атрибутами затишного житла: це смарт-телевізори, холодильники, мультиварки та інша кухонна електроніка, пристрої безпеки, смарт-девайси для будинку.
Машинобудівна промисловість. Embedded технології є ключовими для сучасних транспортних засобів, починаючи від цивільного автопрому і закінчуючи потужними будівельними гуліверами. Вони входять до складу двигунів, навігаційних систем, клімат-контролю, розважальних блоків тощо.
Медицина. Сучасна медицина неможлива без комплексного цифрового обладнання, включаючи пристрої моніторингу пацієнтів, системи візуалізації, діагностичні інструменти тощо.
Промислова автоматизація. Вбудовані системи використовуються в промислових системах керування, програмованих логічних контролерах (PLC) і робототехніці для автоматизації та керування процесами.
Телекомунікації. Вбудовані системи – невід’ємна частина мережевого обладнання, маршрутизаторів, комутаторів і комунікаційних пристроїв для ефективної передачі даних.
Аерокосмічна промисловість. Сучасна авіоніка використовує ембедед для керування функціями літака, системами навігації та зв’язку. Якщо хтось хоче тераформувати Марс – без Embedded-у буде дуже важко.
Військова галузь. Вбудовані системи відіграють вирішальну роль у оборонних програмах як у мирний час (спостереження, аналіз, прогнозування, наведення тощо), так і під час війни (згадайте ті ж джавеліни, дрони, хаймарси, петріоти і т. д. – там дуже багато електроніки).
Розумні мережі. Розвиток розумних мереж (smart grid) підвищує ефективність і надійність розподілу електроенергії.
IoT (Інтернет речей). Пристрої IoT значною мірою залежать від вбудованих систем для збору, обробки та передачі даних для різних програм. Приклади: розумний будинок, автоматизовані системи поливу, розумні міста тощо.
Що має знати Embedded-розробник
В Embedded-і ціла палітра спеціальностей. Наприклад, приставки “Software”, “Firmware” вказують на фокус саме на створенні ПЗ, а "Hardware" та "Hardware Design" – на апаратній частині. Тайтл на кшталт "Embedded Systems Engineer" говорить про необхідність мати однаково гарні hardware та software знання. Також треба розуміти, що в різних компаніях один і той же тайтл може мати під капотом зовсім різні технології в залежності від апаратної начинки, різновиду вбудованої системи абощо.
Наш опис необхідних технологій буде охоплювати і апаратне, і програмне крило вимог, що робить його ближчим до тайтлу "Embedded Systems Engineer". Якщо ви хочете більше в software, вивчайте глибше технології, спрямовані на розроблення софту; якщо ж у hardware – більше уваги приділяйте апаратним навичкам.
Отже, ми проаналізували тематичні статті, думки популяризаторів ембедеду та вакансії українського ринку, і на виході отримали наступний технологічний стек Embedded девелопера.
Математика, фізика, електроніка
Найперше ембедед-розробники повинні гарно знати математику та фізику – особливо теми, пов’язані з електротехнічним напрямком, аби гарно розуміти принципи функціонування hardware: розбиратися в начинці плат, вміти правильно розводити всі сигнали на платі, правильно рахувати всі доріжки, перекриття сигналів, їхню цілісність тощо. Ці знання важливі як під час розроблення, так і на моменті проєктування, тестування, комунікування з іншими колегами і не тільки.
Які розділи потрібно знати:
базова математика та обчислення;
дискретна математика;
електричні кола;
основи електроніки;
цифрова та аналогова мікросхемотехніка;
цифрові та логічні схеми;
комп’ютерна архітектура.
Тестове обладнання
Перераховане нижче обладнання ви будете широко використовувати для перевірки працездатності мікросхем, пошуку несправностей тощо. Вам знадобляться наступні інструменти:
мультиметр;
логічний аналізатор;
осцилограф.
Мультиметр є досить відомим приладом серед “електротехнарів” – ним вимірюють низку фізичних величин, як-от сила струму, опір, напруга та інші.
Логічний аналізатор використовується для роботи з цифровими сигналами в електронних системах, а осцилограф – для візуалізації та дослідження електричних сигналів, а також відображення їхніх параметрів в режимі реального часу.
Мікроконтролери
Одні з головних об’єктів зацікавленості Embedded-розробників. Під них і пишеться код мовами C/C++ і не тільки. МК являє собою невеликий електронний пристрій з великою кількістю “ніжок”, якими відправляються/приймаються відповідні електричні сигнали.
Що важливо знати з цієї теми:
GPIO
ADC
DAC
Таймери
PWM
Переривання
Сторожовий таймер (watchdog)
Керування тактовою системою (clock management)
Кожна модель МК має свої особливості, з якими вам треба буде знайомитися через відповідну документацію. Також вам треба знати периферію обраного вами мікроконтролеру і бібліотеки для керування нею.
Найпопулярнішим сімейством МК наразі є STM32. Досвід роботи з Arduino також вітається.
RTOS
Real Time OS – операційна система реального часу. Надає середовище виконання для програм, які мають строгий графік виконання завдань. Embedded-розробники використовують RTOS для обробки завдань з високою точністю і низькими затримками.
Linux
Якщо ви плануєте працювати з вбудованими пристроями на базі Linux (а їх зараз дуже багато), вам слід гарно знати і цю операційну систему. Вона має відкритий вихідний код і є безкоштовною.
Говорячи про приклади проєктів, лінукс використовує велика кількість систем IoT, промисловий, мережевий, автомобільний, медичний Embedded тощо.
Паяльник
Так, в даній професії необхідно інколи й паяльником попрацювати. Якісь компоненти можуть потребувати пайки – десь щось вилучити/додати/замінити, поекспериментувати з макетом, зібрати проєкт тощо. Може виникнути будь-яка ситуація на “залізі”, і ембедед-фахівець має бути готовим до цього.
Основи програмування
Фундамент, який зробить ваш процес програмування продуктивним. Сюди віднесемо наступні теми:
алгоритми та структури даних – ембедерам потрібні сильні знання з алгоритміки;
шаблони проєктування – так, в ембедеді є свої патерни, які полегшують життя девелоперам, наприклад Opaque Pointer pattern;
UML (діаграма стану, state machine) – для моделювання та аналізу поведінки системи.
Програмування на C/C++
C/C++ – це потужні мастодонти у світі програмування. В порівнянні з іншими мовами є складнішими у вивченні, натомість дають можливість писати низькорівневий код з високим ступенем контролю “заліза”.
Також C/C++ дозволяють напряму керувати пам’яттю (а це дуже важливо при роботі з hard-елементами, які мають досить обмежений ресурс), контролювати велику кількість low-level процесів, а також підходять для програмування широкого спектру “заліза”. Обов’язковий інструмент в скарбничці Embedded-девелопера – можна вивчити або C, або C++, або обидві мови.
Інтерфейси та протоколи
Обмін інформацією між Embedded-елементами та їхніми складовими здійснюється через спеціальні інтерфейси та протоколи:
UART, I2C, SPI – базові, їх треба знати обов’язково;
Ethernet, USB – для роботи на високих швидкостях;
Bluetooth – дуже відома безпровідна технологія;
TCP/IP, UDP – для роботи з мережею;
CAN – система, яка використовується в транспортних засобах;
Modbus – для роботи на промислових об’єктах.
Git
Git – система керування версіями проєкту, дуже популярний інструмент під час написання будь-якого коду, оскільки дозволяє відслідковувати зміни в коді, створювати гілки для роботи над різними функціями, ділитися своїм кодом з іншими колегами і навпаки тощо.
Agile/Scrum
Agile – це сімейство гнучких (agile) методологій розроблення ПЗ, яке сприяє випуску продукту порціями, крок за кроком розширюючи та покращуючи його. Як результат – команда здійснює розроблення відносно невеликими інтервалами, сам продукт постійно покращується, якість коду – підвищується. Познайомитися з Agile вам допоможе відповідний маніфест з детальним описом основних принципів.
Scrum є однією з найпопулярніших реалізацій даного підходу, яка часто використовується в багатьох ІТ-командах, в тому числі і під час роботи з вбудованими пристроями.
Англійська мова
English на рівні вільного читання документації має бути у кожного Embedder-а, оскільки левова частка роботи припадає саме на вичитування матеріалів до тих чи інших мікроконтролерів та супутніх пристроїв. Якщо ж ви будете працювати в команді з іноземцями, то треба підтягнути ще й розмовну англійську.
Як стати Embedded-розробником
Де отримати знання
Є декілька опцій для вивчення розробки вбудованих пристроїв:
Можна вчитися самостійно за допомогою безкоштовних ресурсів у вільному доступі: YouTube, roadmap-и з посиланнями на GitHub-і, статті, тематичні форуми, безкоштовні курси та матеріали (MIT OpenCourseWare, embedded.com) тощо. На плати Arduino, паяльник, мультиметр і т. д., звісно, таки доведеться розщедритися.
Проходження відео курсів (платно) на Udemy, Coursera, edX, Pluralsight та інших платформах, придбання спеціалізованих книг.
Менторинг з боку діючого розробника – найефективніший спосіб навчання, оскільки у вас завжди буде допомога, наставництво, поради, чіткий напрямок руху та необхідні навчальні матеріали.
Проходження онлайн/офлайн навчання при компаніях. Такий формат пропонують, наприклад, GlobalLogic, Ajax Systems тощо. Мінуси: потрібна певна база знань перед стартом навчання, а головний плюс – можливість стажування і повноцінного працевлаштування в компанії.
Вища освіта в цій спеціальності не завадить, хоч і не є обов’язковою. Потрібну базу ви можете отримати у школі та вищих навчальних закладах на відповідних технічних спеціальностях – там же є і можливість потрапити на стажування, якщо кафедра таке практикує або має відповідні зв’язки з компаніями.
Soft skills
Вимоги до Embedded-розробників можуть різнитися в плані стеку, але що 100% знадобиться кожному, це наступні “м’які” навички:
критичне, алгоритмічне, аналітичне мислення;
навички problem-solving;
комунікативність, вміння працювати в команді;
організованість, зібраність, вміння ефективно розпоряджатися часом;
самомотивація;
увага до деталей;
терпіння та адаптивність;
пристрасть до Embedded;
бажання постійно розвиватися та вдосконалюватися.
Останні три пункти дуже важливі в професії, оскільки ембедед – це непроста галузь, і за 3-6 місяців “увійти в ІТ” не вийде. Потрібно більше зусиль, часу та витримки.
Ключові тренди в Embedded
ІТ-індустрія рухається вперед, і ембедед не відстає. Проаналізувавши низку ресурсів, ми визначили наступні тренди:
Інтеграція штучного інтелекту та машинного навчання в Embedded-системах стає все більш привабливою, що сприяє використанню вбудованими системами інтелектуальних алгоритмів та ML. Ця синергія дозволяє системам адаптуватися до змін в реальному часі, підвищуючи їхню ефективність.
Розвиток безпровідних технологій відкриває нові перспективи для вбудованих систем, особливо в областях Інтернету речей (IoT) та безпілотних систем, які керуються віддалено або за допомогою AI.
System-on-chip рішення. Інтеграція всіх ключових компонентів системи на одному чіпі (SoC) продовжує набирати оберти та використовуватися різними бізнесами. Їхня компактність в сукупності з високою продуктивністю, дешевизною, енергоефективністю та інтегральними мікросхемами спеціального призначення (ASIC), наприклад, вже успішно застосовується в гаджетах, які збирають та аналізують різні параметри здоров’я.
Більше уваги безпеці. Зростання кількості вбудованих систем, які мають вихід в Інтернет, призводить до збільшення кількості кіберзагроз, що підкреслює важливість удосконалення заходів безпеки для ембедед-пристроїв.
Оптимізація споживання енергії embedded-системами стає актуальною – на це впливають ідеї сталого розвитку, що сприяє поширенню більш енергоефективних рішень.
Розвиток AR та VR (доповнена та віртуальна реальності). Інтеграція вбудованих систем у AR та VR відкриває нові горизонти для інтерактивних інтерфейсів та розважальних застосунків. Embedded-розробники активно працюють над цими технологіями для створення вражаючого досвіду та візуальних ефектів.
Окремо зазначимо і розвиток вбудованих пристроїв у військовій сфері. Наразі зростає попит на ембеддерів, які здатні працювати з дронами (повітряними та морськими), БПЛА тощо. Сьогодні саме ці роботизовані системи дозволяють ефективно виявляти та ліквідовувати ворога, здійснювати розвідку, наводити та корегувати вогонь і – що найважливіше – берегти життя та здоров’я особового складу. Сьогодні це один з трендових напрямків конкретно в нашій державі.
Кар’єрні можливості в ІТ та заробітна плата Embedded Engineer
Кількість вакансій
Для визначення цього параметру використаємо дані з найвідоміших українських ресурсів для пошуку роботи в ІТ – DOU та Djinni – і порівняємо результати з найпопулярнішими спеціальностями.
Почнемо з DOU:
Embedded – 44 вакансії;
QA – 167;
FrontEnd – 160;
DevOps – 158;
PHP – 140;
Python – 138;
Java – 108;
.NET – 104;
Node.js – 101.
На Djinni пошук роботи кандидатами здійснюється анонімно. Кількість вакансій наступна:
C / C++ / Embedded – 170 вакансій;
JavaScript / FrontEnd – 354;
PHP – 295;
DevOps – 273;
Python – 208;
Node.js – 191;
C#/.NET – 166;
Java – 161;
QA Automation – 139;
QA Manual – 128.
Конкуренція
Для визначення конкуренції ембедерів на нашому ринку ІТ скористаємося співвідношенням кількості відгуків до кількості вакансій на DOU за листопад 2023 року (беремо найбільш відомі спеціальності). Ось що маємо:
Конкуренція у ембеддерів (від новачків до професіоналів) дуже низька: на 1 вакансію припадає приблизно 5 претендентів, що є дуже гарним результатом під час нинішньої ситуації на ринку ІТ.
Справжні “голодні ігри” традиційно у QA та FrontEnd: за 1 вакансією полюють в середньому 120.9 та 100.5 кандидатів відповідно.
Відповідно до ринкової статистики Djinni, для новачків конкуренція посилюється:
Зазначимо, що тут демонструється кількість кандидатів на вакансію, котрі зараз перебувають в “онлайні”. На Джині так позначаються ті кандидати, які знаходяться в активному пошуку роботи.
Бачимо, що в категорії “C / C++ / Embedded” без досвіду 27.75 шукачів на вакансію (окремої категорії для Embedded немає). Багатенько, але подивіться на аналогічну ситуацію в більш популярних напрямках:
JavaScript / FrontEnd – 426.55
C#/.NET – 200.5
Python – 185.6
Manual QA – 132.83
Node.js – 98
DevOps та FullStack – 83.5
Заробітна плата
Спершу розглянемо зарплатну статистику на Djinni для “C / C++ / Embedded” (за останні 6 місяців). Картина наступна:
Зарплатні вилки досить високі – 2300-4700 USD. При цьому зарплатні очікування кандидатів скромніші – від 700 USD до 4500 USD.
А скільки отримують Embedded за межами України? Звернімося до аналітики Stack Overflow Developer Survey 2023 (більше 90 000 респондентів із США, Індії, Німеччини, Сполученого Королівства, Канади тощо).
Деякі несуттєві для нашої статті спеціальності були прибрані з діаграми задля більшої компактності зображення.
Отже, медіанна зарплата Embedded-спеціалістів з різних країн складає 77 104 USD на рік, а це приблизно 6425 USD на місяць. Що цікаво, розробники вебу (FrontEnd, BackEnd, FullStack), ігор, мобільних та десктопних застосунків отримують меншу ЗП, хоча ці спеціальності більш поширені, а веб взагалі є найпопулярнішим в ІТ.
Вищу винагороду отримують ті, хто спеціалізується на базах даних, DevOps-процесах, великих даних, апаратній частині, блокчейні, безпеці тощо.
Кар’єрні перспективи
Embedded розробник – поняття досить розмите і обширне, оскільки фахівець цієї спеціалізації може працювати над:
створенням робототехнічних систем;
медичною апаратурою;
автомобільними системами;
аерокосмічними апаратами;
IoT-екосистемою;
AR та VR індустрією;
мережевими системами;
гаджетами для цивільних потреб;
безпекою embedded-пристроїв;
промисловими системами;
військовими розробками;
тощо.
В кожній із цих сфер будуть свої технологічні стеки, мікроконтролери, плати, інтерфейси, протоколи і т. д.
Ще не забувайте про ембедерський “фронтенд”, “бекенд” і “фулстек” – в кожній галузі ви можете концентруватися більше на програмній частині, апаратній, або ж на обох одразу.
Звісно, кожен напрямок може мати власну “кухню”, і щоб “скуштувати страву” в кожному із цих “ресторанів” цілого життя може не вистачити, але погодьтеся – список для самореалізації скромним не назвати.
Також ви можете в будь-який момент заглибитися в Software розробку і займатися написанням програмного коду (найпопулярніші стеки в Embedded-і – C/C++, Java, Python, Go), а можете піти у Hardware і більше уваги приділяти “залізу”. Якщо трохи підкачати знання, то можна перекваліфікуватися і в тестувальники, і в спеціаліста з безпеки, мережевого спеціаліста тощо. Можливості дуже широкі та дуже різноманітні.
Якщо ж говорити про вертикальний потенціал професії, розробник вбудованих систем стартує зі стандартної Intern/Trainee/Junior позиції. Далі – зі збільшенням досвіду, навичок та знань – отримує підвищення до Middle та Senior, а вище – керівні позиції на кшталт Team/Tech Lead, архітектор і т. д.
Висновки
Embedded – дуже цікава, незвична та багатогранна ІТ спеціалізація. Вона дозволяє відчути себе Архітектором, котрий вдихає життя в пристрої, дає їм все необхідне для їхнього руху, думок, аналізу навколишнього середовища, спілкування один з одним тощо. Так, для цього потрібно мати багато знань, але хто сказав, що бути Творцем – це так просто?)
Цей напрямок дає дуже важливий фундамент для інших ІТ-галузей, які сьогодні в зеніті популярності. Завдяки вбудованим системам ми можемо насолоджуватися безліччю автоматизованих процесів, починаючи ранковою свіжомеленою кавою та оглядом нашого сну у health-трекері, і закінчуючи автомобільною та медичною апаратурою.
Ембедед створений для справжніх любителів “заліза” та його програмування. При цьому він має багато нішевих розгалужень і щороку зростаючий попит. Сьогодні в Україні розробники вбудованих пристроїв мають великі можливості для реалізації, а в решті світу – тим більше.
Професія непроста, але вона щедро винагороджує сміливих, терплячих та цілеспрямованих, котрі не бояться складнощів та перешкод і готові на все, аби досягнути бажаного.
Бажаємо успіхів та натхнення всім, хто прагне розвиватися в напрямку Embedded!
Чи потрібна програмісту вища освіта?
Автор: Влад Сверчков
Статистика DOU та Stack Overflow
Що відбувається у технічних ВНЗ на “айтішних” напрямках?
Вага диплому
Чому навчають у вишах?
Чи потрібна математика в програмуванні?
Рейтинг українських ВНЗ
Вартість навчання у ВНЗ
Підсумки
Вітаємо вас, дорогі читачі блогу ITVDN!
Сьогодні ми розглянемо дуже важливу тему, яка має багато гострих кутів. Стосуватиметься вона вищої освіти, а саме – її необхідності для програмістів. Відразу зазначимо – тема наповнена багатьма нюансами. Ми намагатимемося охопити всі важливі моменти, які допоможуть скласти максимально цілісну картину та дати розгорнуту відповідь на головне питання цієї статті.
Давайте не зволікатимемо з ліричним відступом і відразу приступимо до пошуку інформації, а також до розстановки всіх точок над “i” в обговореннях “чи потрібна програмісту вища освіта?” і що потрібно для програміста у виші взагалі.
Статистика DOU та Stack Overflow
Насамперед дізнаємося, як справи з вищою освітою у тих, хто зараз займається розробкою. Для цього звернемося до опитування Stack Overflow Developer Survey 2022, яке цього року зібрало 70 000 анкет.
Якщо вірити цьому джерелу, 80% респондентів мають певну форму вищої освіти. Виходить, 4 з 5 розробників мають диплом. Що цікаво, 38% з тих людей, що тільки навчаються програмуванню і ще не мали досвід комерційної розробки, мають диплом. Це свідчить про те, що навчатися ніколи не пізно – навіть якщо у вас є наукова ступінь не за ІТ-фахом і ви тільки зараз почали вивчати кодинг.
Відповідно до опитування Stack Overflow Developer Survey 2020 (65 000 анкет), майже 85% опитаних з числа професійних розробників вважають, що формальна освіта хоча б більш-менш є важливою. Проте майже 16% вірять, що вища освіта і зовсім зайва.
Тепер звернемося до портрета IT-фахівця за підсумками 2020 року від DOU. Вся інфографіка складена на підставі 12419 анкет. Аналізуючи розділ “Освіта та саморозвиток”, можна сказати таке: хто б що не говорив про вищу освіту, але більшість IT-фахівців мають повну вищу освіту, а деякі — навіть дві. Дві вишки переважно у Senior PM, а максимальна кількість кандидатів наук у фахівців Data Science, яким потрібна сильна математична база для виконання посадових обов'язків (її вони й отримують у ВНЗ). Найменша кількість тих, хто закінчив вищий навчальний заклад, припадає на Junior розробників ПЗ. Це й не дивно — більшість отримують свою першу посаду в IT ще на студентській лаві.
Таким чином, як вітчизняна, так і зарубіжна статистики показують, що переважна кількість професійних розробників таки має диплом. Це зовсім не означає, що на роботу в галузі IT вони потрапили виключно завдяки знанням, отриманим у ВНЗ. Те ж опитування від Stack Overflow, тільки за 2019 рік (90 000 респондентів), показало, що понад 86% опитаних самостійно вивчали необхідну їм мову, фреймворк або інший інструмент розробки.
Хоча в опитуванні 2022 року не було такого ж пункту, ми впевнені, що статистика самоучок на поточний рік не сильно змінилася і плюс-мінус той же відсоток зберігся до сьогодні. Виходить цікава колізія: якщо переважна більшість закінчувала (або закінчує в даний момент) вузи, то чому ці студенти/випускники самостійно вивчають те, що їм треба в роботі? Чому навчають в університетах у такому разі? Давайте розбиратися.
Що відбувається у технічних ВНЗ на “айтішних” напрямках?
Сучасні вищі навчальні заклади несуть мало радості тим, хто має намір стати програмістом. Безумовно, студентська романтика та пригоди чекають на вас у будь-якому місці здобуття вищої освіти. Проте ми ведемо мову саме про цільове призначення цих закладів.
Відповідаємо на запитання цього розділу: в університетах досить неоднозначний стан речей. Усі суперечливі моменти ми представимо у вигляді списку:
З одного боку, у ВНЗ справді вивчається програмування, алгоритми, структури даних, дискретна математика та інші важливі для програмістів речі. З іншого боку, багато предметів є зайвими, або такими, які студентам не до душі.
Ми не порушуватимемо тему, які дисципліни справді важливі для програмістів, а які мають сумнівну цінність, проте факт залишається фактом: дуже часто студенти обурені наявністю філологічних предметів, таких, як історія, філософія, менеджмент, правознавство, історія культури та інші. Подібні ситуації виникають і з технічними напрямками. Припустимо, студент очікував вивчення програмування на C# та інших високорівневих мовах; насправді ж на "шарпи" припадає 3 семестри, а на наступних курсах доводиться працювати з низькорівневим Асемблером і писати програми під логічні контролери за допомогою ST, FBD і SFC, які часто використовуються для автоматизації виробничих процесів. Кожен університет має свої навчальні програми, але подібні розбіжності очікувань та реальності зустрічаються скрізь.
Окрему увагу варто приділити якості освіти. Вище ми говорили, що в університетах все ж таки викладають те, що необхідно програмісту, хоч і частково. Але і тут є кілька проблем.
Перше, що варто мати на увазі: у жодному вітчизняному ВНЗ із вас не зроблять, наприклад, сучасного .NET розробника, або DevOps інженера. Окрім того, що самі програми навчання застарілі років на 10 (у кращому випадку), їх іноді ведуть сивочолі старожили кафедр, які зачитують матеріал із книг епохи Горбачова. І вони не мають наміру оновлювати навчальну програму, оскільки вникати в нові технології для них не комільфо.
Також іноді буває, що такий викладач не проти повчити вас життя, або просто нівелювати вас як особистість. Чули історії про те, як студенти до ночі захищали свої лабораторні / розрахункові роботи? А про те, як деяким просто неможливо здати предмет, який навіть близько не потрібний програмістам?
Безумовно, зустрічаються і цілком лояльні, добрі та приємні викладачі, але на кожній кафедрі ви знайдете таку людину, від якої вас хапатиме Кіндратій. Чи хотіли б ви кілька семестрів (а то й весь термін навчання) провести в компанії такої людини і вимотати свої нерви?
Відносно молоді програмісти-викладачі, які займаються розробкою на комерційній основі, звичайно, зустрічаються, і з кожним роком їх все більше і більше, проте і серед них знайти тямущих лекторів — ще те завдання. Найчастіше такі викладачі просто сідають за ноут, включають проєктор, пишуть код (проєктуючи все на дошку) і щось коментують, поки інші сидять і півтори години дивляться. Так, це краще, ніж ті ж викладачі похилого віку з крейдою в руках. Але просто кодингу недостатньо. Студенти також люди; їм потрібна жвава подача матеріалу від цікавого лектора, який вміє приковувати до себе та свого коду увагу. Крутий програміст, який уміє кодити, але не вміє зрозуміло доносити до решти те, що він робить, далеко не найкращий варіант.
Якщо нас читають лектори-програмісти більш-менш відомих ВНЗ, які при цьому не користуються популярністю у своїх студентів, закликаємо їх замислитись над своїми методами подачі матеріалу. Гарний програміст – не те саме, що гарний викладач. Якщо людина вміє грамотно подавати матеріал, у неї буде менше проблем із відвідуваністю та дисципліною, а також більше позитивного фідбеку від студентів. Викладання (від слів “викладати”, “викласти”) – це навичка донесення інформації, і її необхідно розвивати, над нею треба працювати.
Обираючи навчання в університеті, варто враховувати, що він орієнтований на самостійну роботу самих студентів. Вважається, що 80% навчального часу студенти повинні приділяти самостійному вивченню предмета, а решта 20% покладаються на лекції викладачів.
Ті абітурієнти, котрі вважають, що в універі їх вивчать на програмістів, помиляються. Ніхто нікого вчити не збирається, адже це не школа. І студент повинен це усвідомлювати. Також часто буває так, що на лекціях вам розповідають одне, а на лабораторних ви робите зовсім інше.
Тонни лабораторних та розрахунково-графічних робіт — постійні супутники кожного студента-технаря, зокрема й студента-програміста.
Головні рушійні сили технічного університету – "корочка", яка необхідна для роботи, очікування та надії членів сім'ї, а також уникнення армії.
Щире бажання отримати професію, якою ти “палаєш”, є далеко не у всіх, оскільки у 17 років дуже складно визначити майбутній фах всього свого життя. А у щасливчиків таке щире бажання швидко згасає, коли вони зіштовхуються з реаліями і розуміють, що просто виконуючи навчальний план протягом 4-6 років в університеті особливо нічого не досягнеш на поприщі ІТ.
Хтось скаже, що така ситуація у ВНЗ — чудова школа життя. З одного боку, це справді так. Але якщо подивитися на систему навчання вітчизняних ВНЗ з точки зору "як має бути" і "як є насправді", ви помітите, що досвід та знання, з якими студенти закінчують навчання, отримуються не завдяки, а всупереч цим самим вишам. На жаль.
Вага диплому
Чи потрібна вища освіта у сфері IT для успішного працевлаштування? В українських IT-компаніях часто вимагають хоча б диплом незакінченої вищої освіти або щоб кандидат був на шляху до його отримання. Однак це не означає, що без диплому вас не приймуть до лав розробників – просто у кожної компанії своя політика, а чим більша компанія, тим солідніші запити щодо претендентів. Більше того, диплом на співбесіді – це формальність, галочка. Насправді ж ви будете проходити тестові завдання та відповідати на технічні запитання, тож навіть червона “корочка” фактично нічого не вирішує.
Якщо говорити про розвинені країни, то там все серйозніше. Навчання у вищих навчальних закладах важче і диплом справді відіграє більш значиму, ніж у нас, роль. На тих, хто закінчив виш, роботодавець і дивиться по-іншому – з повагою та визнанням. Досить часто іноземні компанії, незалежно від навичок та досвіду, вимагають наявність диплома бакалавра або, як мінімум, щоб ви на момент розгляду резюме перебували на старших курсах ВНЗ. Більше того, диплом спрощує процес отримання робочої візи, без якої ви не зможете вирушити працювати програмістом, наприклад, у європейські країни або США.
А ось на які посади вас із максимальною вірогідністю не візьмуть без диплому як у рідній країні, так і за кордоном — це керуючі позиції в ІТ. Їх займати має право лише людина з повною вищою освітою.
Маємо дві сторони медалі. Якщо глянути на аверс — диплом для “галочки”, який при цьому вистражданий потом, кров'ю та вашим часом. Але реверс говорить нам про зарубіжжя та керівні посади, а також про незабутню школу життя, зрештою.
Чому навчають у вишах?
У кожному вищому навчальному закладі є своя навчальна програма. Однак якщо підсумувати, то можна виділити такі дисципліни:
Алгоритми та структури даних
Алгоритмічне програмування
Програмування популярними мовами (C/C++, C#, Java, Python)
Вебпрограмування
Комп'ютерна графіка
Дискретна математика
Вища математика
Комп'ютерні мережі
Бази даних
Теорія інформації та кодування
Криптографія
Операційні системи
інші дисципліни
Крім цього, у вузах студентам також читають предмети, які напряму не пов'язані з програмуванням та інформаційними технологіями: економіка, правознавство, історія, психологія, охорона праці, філософія та інші. На стику філологічного та технічного розташуємо англійську мову, оскільки вона надважлива для успішної взаємодії із зарубіжними навчальними матеріалами, статтями, відеороликами, професійними книгами. Також вона знадобиться для вільного спілкування з іноземними колегами та роботодавцями. Інгліш знадобиться і для написання грамотного коду (без спотворених, “кривих” назв).
При всьому багатстві вибірки дисциплін, у вітчизняному виші ви можете розраховувати лише на ази будь-якої айтішної спеціальності. Вам дадуть все поверхнево – цих знань вистачить для розуміння того, що відбувається в тій чи іншій сфері. Все інше ви повинні будете доучувати, самостійно практикуватися, відвідувати відповідні курси, проходити інтернатуру в IT-компанії і таким чином добирати знання, яких вам бракує.
Звичайно, на Заході існують такі виші, де ви зможете пройти гарне профільне навчання. Наприклад, факультет Informatics, Games Engineering in Technical University Of Munich (Німеччина). За кордоном усвідомлюють важливість IT-індустрії та намагаються відповідати новим тенденціям, а не просто пхати у вас “вічну класику”. Тому факультет розробки комп'ютерних ігор – норма для розвинених країн.
Однак у таких державах і ставлення до вищої освіти зовсім інше. Наприклад, у Чехії випускників ВНЗ дійсно цінують роботодавці, оскільки і навчання складніше, і саме викладання на голову вище за вітчизняні аналоги. Іноземна освіта враховує технологічний прогрес і намагається йти нога в ногу з ним. Чого не скажеш без грудки у горлі про навчання у більшості вишів пострадянського простору.
Є один бонус від ВНЗ, про який ми мало не забули. Багато вітчизняних університетів мають програми співпраці із закордонними університетами. Таким чином, навчаючись на батьківщині, у вас є можливість стати учасником такої програми та перебратися за кордон заради здобуття європейської освіти. Круто, чи не так? =)
Чи потрібна математика в програмуванні та в якому обсязі?
Одна з головних переваг будь-якого технічного вишу — математична база. Зазвичай, лише у вищому навчальному закладі можна отримати гарні знання з вищої математики. Тут ми порушимо ще одне популярне питання, яке часто задається тими, хто хоче йти в IT: кому потрібна математика і чи потрібна вона взагалі для програміста?
Відповідь – потрібна. Однак є один приємний момент: кожному розробнику математика потрібна по-різному. Якщо ви хочете працювати у якості FrontEnd розробника (створення клієнтської сторони вебдодатків), то математика вам буде потрібна меншою мірою, ніж для C# / .NET розробника, який, наприклад, зайнятий розробкою корпоративних рішень. Вузівський матан незамінний для тих, хто збирається пов'язати свою професійну діяльність з наукою, шифруванням, Data Science, машинним навчанням, штучним інтелектом та всім, що пов'язано з великими обсягами даних.
Для криптографічних завдань вам знадобиться загальна та лінійна алгебра. У 3D-моделюванні не обійтися без геометрії та механіки. Для роботи з великими масивами даних необхідні статистика, теорія ймовірностей, лінійна алгебра. Біоінформатика потребує знань у галузі дискретної математики та статистики. Так можна перераховувати безліч IT-напрямків.
Однак переважна більшість людей бере не той орієнтир. У програмуванні важлива не стільки математика, скільки саме математичне мислення.
Найчастіше IT не вимагає глибоких знань, і необхідний мат. апарат обмежується початковими курсами університету (теорія множин, графів, автоматів, алгоритми, базова логіка) + стандартна шкільна програма (куди ж без неї?).
Василь Кобзар, викладач GeekBrains, який спеціалізується на адмініструванні Linux, має чудову відповідь на запитання "Наскільки програмісту потрібне знання математики в роботі?" (джерело):
“Якщо математика буде являтися предметною областю, то знати її потрібно настільки добре, наскільки це потрібно для вирішення завдання. Однак питання, мабуть, поставлене для загального випадку і пов'язане з існуючою думкою. Програмістові добре було б розібратися з логікою та абстрактною алгеброю, які не викладаються ні в школі, ні у більшості вишів. Також не завадять матстат і дискретка. Матан здебільшого марний, так само як і, скажімо, тригонометрія. Загалом, корисна та частина математики, що «розум у порядок приводить», а знання будь-яких формул напам'ять тільки забиває голову”.
Підводячи підсумки цього розділу, скажемо наступне. Математика в програмуванні – це насамперед про математичне та аналітичне мислення, які допомагають критично мислити, абстрагуватися та розв'язувати задачі, вміло використовуючи логіку. Саме раціональний підхід до вирішення завдань, що забезпечується мат. мисленням – головний інструмент програміста. З його розвитком вам допоможуть спеціалізовані книги, а також практичні вправи – написання коду, вирішення математичних завдань та інші вправи, які можна знайти на вебресурсах.
Рейтинг українських ВНЗ
Розглянемо рейтинг за 2019 рік від dou.ua. Чому саме за 2019? Бо рейтинг того року був максимально “народним” – окрім традиційної статистики він містив додаткові відповіді респондентів, які вже мають вищу освіту, на деякі і донині актуальні запитання: в якому виші краще вчитися (український/зарубіжний), чи корисним було навчання, чи радили б ви отримувати вищу освіту і т. д. У наступні роки ні dou.ua, ні інші українські інформаційні ресурси не робили подібного опитування, тому будемо вдовольнятися даним.
Отже, до першої десятки топових технічних освітніх закладів, в яких є IT-спеціальності, у 2019-му році потрапили:
Національний університет "Києво-Могилянська академія" (НаУКМА).
Український католицький університет.
Чорноморський національний університет імені П. Могили (ЧНУ ім. Петра Могили).
Харківський національний економічний університет імені С. Кузнеця (ХНЕУ ім. Кузнеця).
Донецький національний університет імені В. Стуса (ДонНУ ім. В. Стуса).
Харківський національний університет радіоелектроніки (ХНУРЕ).
Сумський державний університет (СумДУ).
Київський національний університет імені Т. Шевченка (КНУ ім. Шевченка).
Чернівецький національний університет імені Ю. Федьковича (ЧНУ ім. Федьковича).
Львівський національний університет імені І. Франка (ЛНУ ім. Франка).
В опитуванні взяло участь 3038 студентів та випускників українських вишів. Рейтинг був складений на основі різних аспектів навчання в університеті.
Відповідно до даної публікації, 69.2% опитаних все ж таки радять здобути вищу освіту в українському виші. З них майже 16% рекомендували б відучитися в іншому вітчизняному закладі, відмінному від того, де респонденти самі отримують/отримували вишку, а 12% воліли б обрати іншу спеціальність/факультет. При цьому майже кожен четвертий (24%) вважає, що отримувати диплом треба лише за кордоном. На думку цих респондентів, за межами країни якість освіти краща. Також їх приваблює досвід життя та роботи в іншій країні. При цьому 5.6% опитаних були категоричними і виступили проти здобуття вищої освіти в принципі.
Які предмети потрібно здавати на програміста у ВНЗ – в кожному закладі можуть бути свої критерії, проте зазвичай обов'язковими є рідна мова, математика, англійська, а іноді й фізика.
Вартість навчання у ВНЗ
Для з'ясування цього питання пройдемося найпрестижнішими українськими закладами, а потім вишами, які займають другорядні позиції.
Спочатку візьмемо вартість контрактного навчання в КПІ на IT-напрямках. Найдешевшими за ціною є спеціальності “Комп'ютерні науки”, “Системний аналіз” та “Кібербезпека” — 35 000 грн за рік очного навчання на бакалавраті. 42 000 грн коштує навчання за спеціальностями “Інформаційні системи та технології” і “Комп’ютерна інженерія”, а 45 000 доведеться віддати за “Інженерію програмного забезпечення”.
Візьмемо на розгляд НаУКМА. "Комп'ютерні науки" та "Інженерія програмного забезпечення" коштують по 55 000 грн за рік навчання на бакалавраті.
У КНУ ім. Шевченка ситуація така: ті самі спеціальності, що були перераховані вище, оцінюються у 38 000 грн за рік очного навчання на бакалавраті.
Перейдемо до вузів, які досягли менших висот, ніж розглянуті попередники. На черзі маємо НАУ. "Комп'ютерні науки", "Кібербезпека", “Інформаційні системи та технології” – 26 000 грн, "Інженерія програмного забезпечення" – 29 000 грн, "Комп'ютерна інженерія" – 28 000 грн.
Національний транспортний університет. За "Інженерію програмного забезпечення" та "Комп'ютерні науки" доведеться віддати 25 750 грн. Рік навчання на очному відділенні, звісно.
У СумДУ за "Кібербезпеку" та "Комп'ютерні науки" за перший рік навчання з вас візьмуть 13 440 грн. Наступні курси навчання коштуватимуть 15 365 грн, 20 370 грн та 23 660 грн відповідно.
Цінова вилка досить непогана — приблизно від 13 до 55 тисяч. Причому це не обов'язково граничні значення. Ми розглянули лише декілька університетів, адже їх сотні й у кожного свої особливості. Але навіть із цього списку можна робити відповідні висновки.
Якщо порівнювати вартість навчання у ВНЗ із курсами програмування, то виходить, що курси набагато вигідніші. На курсах ви витратите приблизно 15-25 тисяч на опанування IT-спеціальності, зате через півроку зможете працювати на посаді Junior розробника і з легкістю відіб'єте всю ту суму, яка була витрачена на навчання. В університеті ж ви витратите щонайменше 4 роки і на виході отримаєте такий набір знань, який недостатній для роботодавця. Все одно доведеться звертатися до сторонніх ресурсів (книги, курси, онлайн-ресурси тощо) і займатися самоосвітою, щоб дотягнутися до вимог тієї чи іншої компанії.
Підсумки
Отже, під час пошуків відповіді на питання “Чи потрібна програмісту вища освіта?” нам вдалося багато чого з'ясувати. Розіб'ємо головні тези на “за” та “проти”.
“За” навчання у ВНЗ:
більшість професійних програмістів мають вищу освіту, а також рекомендують іншим отримати диплом;
деякі компанії вимагають наявність диплома у кандидатів на обов'язковій основі; це ж стосується деяких видів IT-професій (біоінженерні розробки і т. д.);
ВНЗ з айтішних напрямів навчають основам майже всього, що пов'язано з IT;
вища математика у ВНЗ дуже важлива для тих, хто збирається пов'язати свою професійну діяльність з наукою, шифруванням, Data Science, Big Data, машинним навчанням, штучним інтелектом та всім, що пов'язано з великими обсягами даних;
диплом допомагає в отриманні візи та керівних посад в IT;
навчаючись у вітчизняному виші, можна стати учасником програми обміну студентами та виїхати на навчання до іншої країни;
навчання на курсах не можна назвати дешевим
відстрочка від армії
ВНЗ - непоганий вибір, якщо ви хочете йти в науку
наявність ярмарок вакансій, де ви можете познайомитися з різними роботодавцями – навіть з інших країн
мережа корисних знайомств у ІТ, яка сприятиме працевлаштуванню і зануренню в айті
"Проти" навчання у ВНЗ:
диплом швидше потрібен для “галочки”, все одно вас тестуватимуть на співбесіді та перевірятимуть ваші вміння та навички
головні рушійні сили технічного університету – не навички та знання, а необхідна для роботи "корочка", очікування та надії членів сім'ї, а також армія
багато навчальних програм в освітніх установах на IT-напрямках є застарілими
ВНЗ з айтішних напрямів навчають лише основам
за рік очного навчання у більш-менш пристойному виші треба буде заплатити не менше 25 тисяч
щоб влаштуватися програмістом в IT-компанію, вам необхідно доучуватися після університетської освіти
Нейтральне, але не менш корисне висловлювання: математичне та аналітичне мислення важливіше, ніж знання формул, проте варто враховувати, що знати математику потрібно настільки добре, наскільки це потрібно для вирішення робочих завдань.
Якщо заплющити очі на безліч суперечливих моментів, університет — це справді своєрідна школа життя. Найважливіше, що можна собі винести з вишу — це зв'язки, досвід від універу та досвід, отриманий під час проживання в гуртожитку. Ви можете отримати гарні знайомства і дізнатися дуже корисні поради щодо перспектив в IT з перших вуст. Через знайомих можна навіть рекомендацію на посаду в IT-компанії отримати.
Тож чи варто отримувати вищу освіту програмісту? На жаль, як засіб вивчення конкретного IT-ремесла університет не можна розглядати, зате все побічне, що пов'язано з ним, зроблено на пристойному рівні. Студентська романтика, незабутнє життя в гуртожитку, ярмарки вакансій, програми співпраці універів із престижними IT-компаніями (курси та інтернатури), програми співпраці з іноземними вузами, знайомства тощо. Саме ці плоди ви повинні збирати під час навчання у ВНЗ.
Якщо ви наважилися здобути вищу освіту, вам не завадить наступна порада. Більшість колишніх студентів рекомендують відучитися перші рік-два, а потім шукати роботу (проходити курси, влаштовуватися до інтернатури). Як підсумок — після закінчення бакалаврату ви маєте і університетську базу, і диплом, і досвід роботи. Час даремно не втратили і при цьому університетське життя скуштували.
Але якщо ви не готові витрачати стільки часу заради сумнівних привілеїв, робіть вибір у сторону курсів. Там вас не навчатимуть нічому зайвому і ви в максимально короткі терміни зможете опанувати бажану спеціальність, а потім отримати свою першу роботу на посаді програміста.
Якщо у вас виникли зауваження або побажання до статті, сміливо залишайте їх у коментарях.
Залишайтеся з ITVDN!