Яку мову програмування обрати початківцю. Поради досвідчених розробників

Яку мову програмування вибрати початківцю, щоб увійти в ІТ? Це питання ми поставили розробникам, які вже давно у сфері. Головна порада — обрати ту мову, для вивчення якої є достатньо матеріалів у відкритому доступі та яка має попит на ринку. Погляньмо, який є вибір, та як визначитися.

Що можна знайти в аналітиці 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-проєкти за 3–5 років після старту доволі легко підтримувати та масштабувати.

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).

Ось так би я і радив вчити.

Що ще почитати

Після того, як ви визначилися з мовою, з якої хочете починати навчання, радимо звернути увагу на нашу рубрику «Поради сеньйорів». Там є багато корисних статей про те, як прокачати свої знання спеціалістам різних напрямів.

А в цій статті ми детально розповідали про те, хто такий фронтенд-розробник, якою мовою він пише, які фреймворки використовує, де мешкає та скільки заробляє.

Маєте важливу новину про українське ІТ? Розкажіть спільноті. Це анонімно.І підписуйтеся на Telegram-канал редакції DOU

👍ПодобаєтьсяСподобалось8
До обраногоВ обраному5
Підписатись на автора
LinkedIn



37 коментарів

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

Я б радив починати з Scheme. Потім познайомитись з типами, SML. Потім щось доросліше та з ООП, OCaml. Й після цього можно щось промислове накшталт того ж Haskell.

& TAPL.

Раньше в универах учили C, Pascal не знаю как сейчас. Стоит отталкиваться от того что нравится, делать интернет-магазины или энтерпрайз, unix или .net. Например сайты используют больше людей чем корпоративные внутренние системы. Кому что нравится, вплоть до синтаксиса и соглашений о длине переменных. Мои первые языки были Basic, Pascal, C++, C#, PHP и веб, Haskel, R, Python

JavaScript. На ньому можна писати компактний і зрозумілий код в С-подібному синтаксисі. Середовище Node.js досить мало важить. Інтерпретатор JavaScript є всюди. Поверх розвивається TypeScript, де-факто стандарт опису типізації

Але все ж я б не радив більшості починати з неї, краще обрати чистий С, це ідеально для розуміння того, як працює пам’ять і загалом процесор.

Чувак с ассемблером, случайно, не перепутал?

Ну, во-первых, то как работает процессор не будет понятно ни на си, ни на ассемблере. Работать с регистрами, кешем проца и прочим можно и в дотнет, но только никакого понимания не придет, если пытаться освоить эту теорию только через практику. Во-вторых, это как бы от разраба для мобилок мнение, и судя по всему он вообще не в курсе про другие языки программирования просто набор стереотипов выдал, причем актуальный мб лет 5-8 назад, видимо тогда он и прекратил развиваться как программист.
Забавно что для своей джавы он не упомянул стереотип про брейн демедж, а над пхп не забыл посмеяться :)

Честно говоря на счет асма не совсем согласен.
Писал на асм х86 еще в универе, по учебнику Юрова, могу сказать, что без понимания хотя бы основ х86 архитектуры в программирование на асме вообще можно не суваться.

ну на асме никто и не пишет в промышленных масштабах, а чтобы лабу сделать можно обойтись и без знаний

Про процесор це я справді шось пропустив. Прошу панів і панянок коментаторів ігнорувати фразу «і загалом процесор».

Знову про .нет і віндовс. Та почитайте ж ви нарешті що таке .нет і .нет фреймворк

Я в курсі що це таке, дякую :)

Саме «фреймворк»?

Стара порада актуальна й досі: не знаєш яку мову вчити — вчи англійську.

Яку мову вибрати продакту?

Яку мову вибрати продакту?

Для чого?

Для деяких проектів це дуже корисно.

Для деяких проектів це дуже корисно.

1) Хіба що, якщо робите тул для девелоперів :)
2) Подумайте, як ваша відповідь наближає ваших співрозмовників до того щоб дати вам відповідь на ваше перше запитання

кнута и пряника?)

Можна вибрати ту, яка вже використовується в існуючому робочому проекті

Це як раз те, що треба.

Можна «скотитися» до розробника застосунків на Android

По этой логике разработка под андроид — это что-то подзаборное?
И «скатиться» туда не получится, потому что в андроид мире несколько лет как котлин рулит...

Мінус: це .NET, тому будете дружити тільки з продуктами Microsoft, у вас буде Windows на лептопі, костюм, краватка і багато нарад у конференц-румі (жартую).

Колега працює з .net core, в нього на жодній робочій або домашній машині нема ні windows, ні Visual Studio (він взагалі linux-фан, навіть грає тільки під linux). Що він робить не так?

Типу так, але ні. Це як бути андроїд апп девелопером і мати (тільки) макбук, айпед і айфон. І ненавидіти андроїд телефони (що важливо). В теорії це можливо і такі люди є, але .. ви вибираєте собі шлях.

Що він робить не так — все так. Але для мене вибір технології це частково також вибір ідеології. Тому вашого колегу я просто не розумію :)

Та то стандартні байки і страх джавістів перед .нетом)

Как по мне, первый язык должен быть тот, на котором собираешься зарабатывать. От этого и стоит отталкиваться.

Як його вибрати?

Пайтон зараз учать всі, навіть діти, джаваскріпт потрохи витісняється тайпскриптом, а в бекенді стійко тримаються джава, с шарп, джава скрипт і пайтон
Тому перша мова має бути щось типу паскаля, фортрана (або якщо подобається взаємодіяти з пам’яттю напряму то чистий с), а потім по вакансіях дивитися, які спеціалісти затребувані, відповідно ті технології і вчити

BASIC, Assembler, Forth, Pascal, C...

Що я робив не так?...

в ІТ немає поняття як робити саме так :) більшість з нас, можна сказати, самоучки в тому ділі :)

Пайтон зараз учать всі, навіть діти

А в итоге 90% вакансий это датасаенс, где пайтон юзается не как язык программирования, а как статистический пакет типа экселя или R

Изи.
Нравится фронтенд — джаваскрипт. Не путать с джава.
Нравится бэкэнд — джава. Не путать с джаваскрипт.

Підписатись на коментарі