Яку мову програмування обрати початківцю. Поради досвідчених розробників
Яку мову програмування вибрати початківцю, щоб увійти в ІТ? Це питання ми поставили розробникам, які вже давно у сфері. Головна порада — обрати ту мову, для вивчення якої є достатньо матеріалів у відкритому доступі та яка має попит на ринку. Погляньмо, який є вибір, та як визначитися.
Що можна знайти в аналітиці DOU
Згідно з результатами щорічного опитування щодо мов програмування, усе більше розробників першою мовою програмування обирають JavaScript, Python, Basic та PHP.
За результатами літнього опитування українських ІТ-спеціалістів щодо їхньої роботи та зарплат, найпопулярнішою мовою програмування є JavaScript. Нею користуються 60% розробників: 22% використовують її як основну мову, а ще 38% як додаткову. На другому місці серед основних мов залишаються C# / .NET та Java. Їх використовують 16% та 15% спеціалістів відповідно. Серед додаткових мов на другому місці TypeScript та SQL — ними послуговуються 24% та 29% респондентів, хоча як основні мови їх обирають менше як 10% фахівців.
Про те, скільки заробляють українські програмісти відповідно до мови, якою вони пишуть, можна довідатися з цих графіків. А тут можна побачити, скільки вакансій та відгуків на них було за категоріями за певний час.
Що радять досвідчені розробники
Серед мов, які респонденти найчастіше радять вивчати початківцям — JavaScript, Python, Java, C/C++, PHP та Ruby. Подробиці читайте далі.
«Для старту у веброзробці я однозначно рекомендую JavaScript»
Іван Шевченко, Tech Lead в Mailchimp
На мій погляд, під час вибору мови програмування розробнику-початківцю варто взяти до уваги два моменти: як почати кар’єру і куди вона буде розвиватися в майбутньому.
Я зазвичай раджу починати з вебтехнологій, оскільки ця сфера є великою, а поріг входу низький. У такому середовищі легко знайти першу роботу та здобути перший досвід.
Для старту у веброзробці я однозначно рекомендую JavaScript. Ось головні причини:
- це індустріальний стандарт розробки Front-end/UI;
- її можна використовувати для бекенд-програмування, що дуже зручно;
- є багато фреймворків і бібліотек для різного рівня підготовки;
- на Stack Overflow зазвичай легко знайти відповіді, поради та підказки, як розвʼязати ту чи іншу задачу.
Але я не раджу обмежуватися лише JavaScript. Зверніть увагу на Python як другу мову для вивчення. Python є більш серйозною мовою бекенд-розробки й не тільки.
Як і JS, ця мова має більше, ніж одну функцію. Python є мовою загального призначення і може використовуватися не тільки для серверного програмування, а й для розробки десктоп-застосунків, а також у Data Science і Machine Learning.
«В контексті пошуку першої роботи Java відкриває чи не найбільше можливостей»
Богдан Шияк, Lead Software Engineer/Solutions Architect в EPAM Systems
Java досі залишається оптимальним вибором для входу в ІТ. Цю мову використовують у різних сферах, таких як розробка серверної частини різних типів систем від e-commerce до IoT, мобільна розробка (Android), автоматизація QA, BigData. Тому в контексті пошуку першої роботи Java відкриває чи не найбільше можливостей.
Звісно, є сфери, де доцільніше обрати іншу мову. Наприклад, C/C++ для Embedded (тут є проєкти на Java, але використовувати її не типово) чи низькорівневе програмування або Python для тих, хто вирішив розвиватися в Data Science.
Однією з переваг Java для вивчення програмування є зрілість спільноти та велика кількість напрацьованих найкращих практик. А ще велика кількість концепцій та підходів, з якими досить легко ознайомитися, вони не заховані глибоко в мові чи її стандартній бібліотеці.
Наприклад, популярні структури легкодоступні зі стандартної бібліотеки, водночас в інших мовах не завжди очевидно, яка структура даних схована за абстрактним типом даних, і не завжди є можливість її змінити. Окрім того, в Java легко вивчити різні підходи до багатопотоковості та розподілених обчислень, які в Java реалізовані на різних рівнях (мова, стандартна бібліотека, сторонні бібліотеки).
Звісно, треба розуміти, що оптимальний не означає найкращий, бо визначення «найкращого» залежить від контексту. Умовно, якщо ваше завдання — максимально швидко влаштуватися на роботу, то, можливо, Python чи JavaScript стануть кращою альтернативою. Якщо завдання «осягнути дзен» (тобто максимізувати якість навчання, ігноруючи витрати часу), то шлях C, Lisp, Smalltalk, C++, можливо, буде цікавішим, але явно довшим.
«Ruby — це зріла та сформована технологія з власним набором найкращих практик»
Володимир Свередюк, Software Development Engineer в SPsoft
Я вважаю, що першою мовою початківці можуть обирати Ruby. Це зріла та сформована технологія з власним набором найкращих практик. Навчальних матеріалів більш ніж достатньо, а гугл знає відповіді на всі запитання, що починаються з «how in ruby...»
Також варто згадати про дружню спільноту, котра славиться своєю взаємодопомогою та ввічливістю. Хто бував чи хоча б чув про Pivorak, знає, про що я.
На ринку праці рубістів готові з руками виривати. Проєктів чимало, а спеціалістів сильно бракує. За останні 20 років тисячі проєктів з Ruby успішно запустили в продакшн, і їх треба комусь підтримувати та розвивати.
З погляду зручності для бізнесу та ефективного використання коштів Ruby on Rails — найзручніший фреймворк для старту. З правильною командою та вибором найкращих практик Rails-проєкти за
Pivorak уже п’ять років поспіль проводить безкоштовні курси для всіх охочих займатися веброзробкою на Ruby on Rails. На YouTube можна знайти відеозаписи усіх сезонів українською мовою. Я навіть не знаю, чи можна ще простіше почати це вчити. З власного досвіду скажу, що все завжди залежить тільки від бажання. Раджу передусім знайти собі ментора. Людину, котра буде на власному досвіді показувати вам правильний вектор розвитку.
«Розвиватися можна з будь-якою популярною мовою»
Ігор Янішевський, Software Engineer в eyeo
Розгляньмо популярні мови програмування і подивимось, які є опції.
PHP
- Поріг входу низький.
- Популярність висока.
- Компенсація (або рейт) низька.
- Вас будуть тролити. Це точно.
Мова вже 10 років помирає в конвульсіях, і так ще років 20 продовжуватиметься. Але якщо вже вчити щось із вебу, то краще JavaScript, він більш стрімко розвивається і поступово витісняє PHP звідусіль.
Python
- Поріг входу низький/середній.
- Популярність середня.
- Рейт високий (але не найвищий).
Мова широко вживана, але використовується як допоміжна (крім науки та ML). Тому, крім самої мови, вам треба буде знати ще щось типу DevOps, і там вже складніше.
Java
- Поріг входу високий (але не занадто).
- Популярність висока.
- Рейт найвищий серед популярних.
- Можна «скотитися» до розробника застосунків на Android.
Якщо маєте хист, можна починати з Java. Завдяки їй ви зрозумієте одразу кількох основних принципів у сучасних технологічних стеках: ООП, віртуальна машина, garbage collecting. Зі всіма цими штуками вам доведеться стикнутися, вивчаючи мову. Є шанс вразити когось на співбесіді. Однак є ризик, що Java стане наступною PHP, тобто почне занепадати.
C#
- Не дуже відрізняється від Java.
- Поріг входу високий (але не занадто).
- Популярність висока (але не така, як у Java).
- Рейт високий.
- Мінус: це .NET, тому будете дружити тільки з продуктами Microsoft, у вас буде Windows на лептопі, костюм, краватка і багато нарад у конференц-румі (жартую).
- Плюс: мова цілісна і приємна у вжитку, немає вагона legacy, який тягне її вниз.
Теж непоганий вибір, але якщо на офіс MS у Редмонді впаде метеорит, то доведеться знову писати в LinkedIn «Junior Java шукає роботу» і проходити тридцять співбесід за хвилину. Ну й, мабуть, знайти першу роботу з Java теж складніше, ніж з більш популярними мовами.
JavaScript
- Поріг входу низький.
- Популярність висока.
- Рейт порівняно високий.
Вау, ідеально, де мої курси «JS за три дні з працевлаштуванням»? Проблема в тому, що, найімовірніше, вивчити лише мову буде недостатньо. Вам ще треба опанувати якийсь фронтенд-, а може і бекенд-фреймворк на кшталт React / Vue / Angular. З рештою мов ситуація схожа, але з JS це досягло неймовірного розмаху. У React / Vue / Angular є свої підмови-розмітки та іноді складні для розуміння концепції.
З JS є ще такий нюанс: ті, хто вчив тільки цю мову, погано розуміють, що взагалі відбувається «під капотом» написаної програми. Заради справедливості скажу, це може статися незалежно від того, яку мову вивчаєш, але JS дуже цьому сприяє. JS видається дуже простим, але рушій у нього хитрий і розумний. І рано чи пізно вам доведеться розбиратися і з C++, якою написаний рушій JavaScript (V8, наприклад), а ще з алгоритмами та багатопотоковістю. Інакше поняття «скляна стеля» стане для вас реальністю.
C++
- Поріг входу височенний.
- Популярність висока.
- Рейт високий.
Підходить, якщо у вас, крім вас, немає нікого, навіть кота. Складність цієї мови корелює зі складністю імені та прізвища її автора (Б’ярн Страуструп), а також книги про неї, яку він же й написав (Б’ярн, ви велика людина, вибачте за такий жарт). Якщо серйозно, то я трохи залякую, мову можна вчити поступово, тоді не буде так складно. Вона досить логічна і зрозуміла на початку, а потім ви втягнетесь.
Але все ж я б не радив більшості починати з неї, краще обрати чистий С, це ідеально для розуміння того, як працює пам’ять і загалом процесор.
Про Go / Rust / Haskell / все інше. Круто, але не як перша мова. Бо непросто буде знайти стажування.
То яку мову обрати?
Отже, щоб швиденько увійти в ІТ, більшість радить опанувати JavaScript. Але це квиток в один кінець, якщо ви не схаменетеся потім. Дуже зручно застрягти у цьому вогкому болоті без правил та помилок: мова разом з рушіями (наприклад, V8), які її виконують, пробачає помилки, сама конвертує типи даних, дозволяє перевизначити системні об’єкти і функції тощо. До цього швидко звикають, і потім цей стиль зберігається під час використання інших мов і стеків.
Але якщо ви працюєте по триста годин на тиждень і замість обіду та двох годин сну вчите програмування, почніть з JS + React. Коли отримаєте своє стажування, довчіться нормально :)
JS з нами на віки вічні, це ми бачимо на прикладі PHP. Нею написано стільки софту в банкінгу та різних ризикових сферах, що його потрібно буде підтримувати століття.
Взагалі поняттями мов ми оперуємо тільки тому, що ними оперують HR-департаменти. Спеціаліст у Computer Science має мати базові знання, а мова — це інструмент. Але це в теорії, а на практиці ми бачимо «набираємо інтернів JS/React, конкурс сто тисяч людей на місце», який там Computer Science.
Тому розвиватися можна з будь-якою мовою (особливо з тими, про які ми згадували). Ще варто прокачувати свої софт-скіли та вчити англійську. Уже починайте!
У CS50 (курс програмування для початківців від Гарварду) технології вчать ось у такому порядку:
- Scratch (візуальне програмування);
- C;
- Python;
- SQL (бази даних);
- HTML, CSS, JavaScript (веб);
- Flask (фреймворк на Python).
Ось так би я і радив вчити.
Що ще почитати
Після того, як ви визначилися з мовою, з якої хочете починати навчання, радимо звернути увагу на нашу рубрику «Поради сеньйорів». Там є багато корисних статей про те, як прокачати свої знання спеціалістам різних напрямів.
А в цій статті ми детально розповідали про те, хто такий фронтенд-розробник, якою мовою він пише, які фреймворки використовує, де мешкає та скільки заробляє.