«Что учить, Java или C#?» Востребованность и перспективы популярных языков

Чтобы ответить на популярные вопросы начинающих программистов о том, стоит ли учить такой-то язык и связывать с ним карьеру, мы задали разработчикам на Java, JavaScript, PHP, C#, C++, Python и Swift/Objective-C три вопроса:

  1. Посоветовали ли бы вы новичкам начать изучение программирования с вашего языка?
  2. Насколько сейчас востребован этот язык? Легко ли найти работу?
  3. Какие он имеет перспективы? Будут ли расти количество вакансий и зарплаты?

Ниже представляем их ответы.

Дмитрий Думанский — про Java

[Дмитрий Думанский — Co-Founder в Blynk, колумнист на DOU]

1) Java идеально подходит как первый язык в связи с большим количеством вакансий и культурой кодописания вокруг этого языка: я имею в виду build tools, continuous integration, style checkings и т. д.

2) Из того, что я сейчас наблюдаю: интерес к Java ослабевает в связи с появлением новых, простых и удобных инструментов на любой вкус и под любую задачу. Условно говоря, любой язык, в котором проще запустить «Hello, World!», чем в Java, имеет определенные шансы.

Я бы выделил 4 языка, на которые переходят с Java.

Во-первых, начал активно развиваться и обрастать библиотеками Go — быстрый, простой и эффективный инструмент. Это идеальный инструмент для быстрого создания простого API или микросервиса.

Во-вторых, все так же активно развивается и набирает популярность NodeJS, особенно за счет full-stack разработчиков. Когда пишешь много UI, довольно логично писать и Back-end на JavaScript.

В-третьих, медленно, но уверенно набирает популярность Kotlin с большим количеством приятных фишек и улучшений по сравнению с Java. Если армия Android разработчиков на него перейдет, то у Kotlin есть большое будущее именно как у языка под Android.

И, наконец, Scala, судя по всему, вышла на плато и будет по чуть-чуть сдавать позиции Kotlin. Хотя ядро из функциональщиков будет поддерживать в ней жизнь еще довольно долго.

Если бы мне пришлось выбирать сейчас, то вместо Java я бы сделал ставку на Go (так как мне нравится его простота) или NodeJs (так как это JavaScript, который есть на всех проектах так или иначе). У Kotlin мало шансов стать мейнстримом, так как рано или поздно, через 3-5 лет, в Java перекочуют все его фичи: некоторые уже в todo-листе 10-й версии. Тем более, что после релиза 9-ки цикл мажорных релизов в Java должен сократиться.

На Stack Overflow довольно часто можно увидеть, как разработчики Java объясняют, почему в ней нет той или иной фичи или конструкции. То есть ребята в курсе всех проблем, прекрасно понимают, что происходит в трендах и почему Java все еще очень далек от идеального языка. Пока что основной и главный враг Java — это скорость релиза новых версий и потеря позиций в связи с этим. Но, думаю, Oracle со временем решит и эту проблему.

3) Java на сегодняшний день все еще язык номер один. Это значит, что если Java завтра умрет, то даже через 30 лет будет огромное количество проектов, которые будут требовать доработки, улучшений и даже багфиксов. Так что, если вас волнует пенсия, Java — ваш выбор :)

Александр Литвиненко — про JavaScript

[Александр Литвиненко — Full-stack Web Developer, Team Lead в Pro Code, преподаватель курсов Pro Code]

1) Что касается обучения, требования к новичкам повысились за последнее время. Учить JavaScript стоит — это по-прежнему самая легкодоступная область веб-программирования для новичков. Однако на голой теории уже трудоустроиться не выйдет.

Бум инициативы уже поутих, и фреймворки уже не сменяют друг друга так хаотично — что есть явным плюсом для начинающих. У нас есть три основных лидера: это React с обвесом, Vue и Angular. Говорить, что из них лучше, я бы не стал, но обучение стоит начать с React, даже если вы нацелены на Angular или Vue.

Почему? Сам по себе React — не фреймворк, а просто очень хороший шаблонизатор. Настолько хороший, что его можно применять и в ванильном коде без каких-либо библиотек, но так делают редко. В любом случае вам понадобятся некоторые вещи для работы с поставщиками данных — это то, что в Angular зовется provider, factory и service. Потому React соединяют с библиотекой, дающей такие возможности (например, Redux).

2) Сейчас React используется чаще других. У React больше, чем у Angular, звезд на GitHub (70 против 56 — это говорит о личном отношении разработчиков к продукту), больше скачиваний на сайте пакетного менеджера npm (4,8 млн против 950 тыс. за последний месяц).

Надо сказать, что Angular тоже неплох, однако он уступает React+Redux по удобству и функционалу. Всплески его активности сезоны — это хорошо видно, если смотреть статистику по годам. Это может быть связано с рекламной кампанией после выхода каждой новой версии. У Angular есть определенная ниша, которая будет существовать достаточно долго. Говорить о ее перспективах сложно — нет никаких предпосылок делать положительные или отрицательные выводы. Но советую не отказываться, если вам предложат работу на Angular — после React+Redux вы изучите его достаточно быстро.

В данный момент в Украине количество вакансий Angular и React примерно одинаково.

3) Если говорить о перспективах JavaScript, нельзя не упомянуть о Node.js. Технология появилась в 2009 году благодаря Райану Далу. Спустя 3 года о Node знали все, это очень повысило популярность и спрос на JavaScript. Начали появляться новые библиотеки, фреймворки, вышло 2 новых стандарта ES5 и ES6. Сейчас на Node делают все: от мобильных приложений до редакторов кода для программистов. Хороший пример — известный редактор Atom.io.

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

Юрій Савка — про PHP

[Юрій Савка — Senior Software Engineer в ResearchGate GmbH, колумніст на DOU]

1) Я скептично ставлюся до телегонії і тому не вірю в магічне значення «першої мови». Умовний оператор, цикли, функції і класи у всіх нормальних мовах практично однакові. Навіть перша глава Страуструпа читається достатньо жваво.

Інша справа, що порожнє нанизування коду на компілятор зрештою набридає, а для захоплення олімпіадними задачками потрібен своєрідний стиль мислення. Тому найголовнішим кроком є не перша написана програма, а перший проект, який робить щось корисне. В ідеалі — щось, за що заплатять гроші. Або нагодують. Або погодяться піти на побачення. Та хай навіть скажуть: «Вау!», це вже хліб. Зворотній зв’язок і перехід від безглуздих рядочків коду до чогось живого, рухомого і потрібного людям — запорука нескінченного потоку мотивації. А вона на початках ой як потрібна.

PHP в цьому сенсі трохи відлякує переліком побічних технологій, які доведеться тягнути (в основному SQL, CSS і JavaScript), але в той же час приваблює набором готових рішень на кшталт WordPress, які можна видати за програмування і таким чином заробити першу копійку. Є в цьому і свої недоліки: захопившись легкими грошима можна втратити мотивацію розвиватися і залишитися на рівні «вебмайстра» назавжди. Але, зрештою, навіть «вебмайстер», думаю, краще, ніж «менеджер із продажів, який вміє вивести „Hello, World!“ на Java».

2) Вакансій не просто багато — їх навалом. Єдине, що якість проектів, особливо на аутсорсі, залишає бажати кращого.

Найкраще живеться джунам, яким влаштуватися на нову роботу або знайти проект на фрілансі раз плюнути, і архітекторам, які вже ні від мови, ні від технологічного стеку особливо не залежать і оперують радше загальними концепціями ООП і системного дизайну.

Посередині — студії веб-дизайну «Тяп-ляп і в продакшн», древні CMS на глиняних костилях десятирічного сапорту, інтернет-магазини, банерні мережі. Навіть, збав Боже, Бітрікс! Якщо не проскочити свій період мідлування десь у відносно безпечній конторці, лишається два шляхи: або міняти мову і йти з нуля на Java, Python чи всілякі новомодні Go, або відключати мозок і проводити шість із восьми годин за приставкою і настільним тенісом.

Якщо ж перетерпіти і додати собі скілів у паралельних секторах, тут уже починаються золоті роки. Можна влаштуватися архітектором і ганяти бідних джунів, попиваючи чай, можна влаштуватися у стартап, які на 90 % починають на PHP, бо MVP через місяць, а не за рік, як у джавістів. Можна релокейтнутися у Європу: німці тягнуть більше PHP-програмістів, ніж будь-кого іншого. Та що там, можна і в ААА-компанії подаватися, там зазвичай індиферентні до мов і технологій, якими користувався, а важливо, щоб системний дизайн був на рівні. Головне, не застрягнути на забутому богом проекті за чотири штуки і личку тімліда. Але це ж не тільки для PHP вірно, чи не так?

3) В Україну загальносвітові тенденції доходять трохи пізніше, коли стартапи починають віддавати своє легасі на аутсорс. Враховуючи бум на Symfony серед теперішніх стартапів, недостачі в проектах чекати не доведеться. Java-сервлети, ASP.NET, навіть Ruby/Rails давно і безповоротно мертві, бекендівський JavaScript лишається вузьконішевою забавкою для обраних, тому нові сайти в абсолютній більшості будуть писатися на PHP.

Після виходу сімки стало зрозуміло, що PHP — чи не єдина мова, яка рухається в адекватному напрямку, і поки що тенденції доста оптимістичні. Шаленими кроками рухається екосистема Symfony, на хвості вперто сидить Laravel. Drupal і Zend радше мертві, ніж живі, але я би не списував старичків із рахунків. Це вам не Ruby, де окрім Rails — випалений ліс, і перші проблеми фреймворка практично викосили усю екосистему.

Зарплати PHP-програмістів традиційно відстають від Java-розробниців того ж рівня відсотків на десять. Проте, починаючи з певного рівня, розрив поволі стирається. Та і якщо чесно, починаючи з певного рівня, знати всього одну мову програмування — шалений моветон.

Андрей Губский — про C#

[Андрей Губский — CTO в Торф ТВ, автор статей на DOU]

1) Безусловно, я бы посоветовал новичкам изучать C#. На мой взгляд, это идеально сбалансированный ООП язык, который позволяет достаточно легко начать с ним работать, используя простые и лаконичные конструкции в начале, и в будущем постепенно перейти к таким мощным инструментам, как Linq и лямбда-выражения.

Человек, который начинает изучение программирования с этого языка, изначально получит правильные навыки при написании кода.

В этом плане у C# есть ряд преимуществ:

  • Это строго типизированный язык, что означает, что программисту, который начинает свое обучение на этом языке, гораздо проще понять, что такое тип данных и какие типы данных бывают. Это выгодно отличает его от Python и JavaScript.
  • Это .NET-язык, что означает, что программист будет работать в рамках управляемой среды CLR, и ему не придется работать с выделением памяти и освобождением памяти. Он сможет сосредоточиться непосредственно над решением алгоритмических и бизнес-задач, не отвлекаясь на поиск причин утечек памяти и внезапных исключений.
  • Это С-подобный язык (что очевидно уже из его названия). Его синтаксис гораздо изящнее и лаконичнее Pascal, который долгое время был основным языком, использующимся для обучения программированию. При этом человек, знакомый с одним С-подобным языком, с легкостью сможет понимать и читать код других языков этого семейства.

2) Сегодня C# безусловно востребован. Вакансий очень много, причем как на крупные энтерпрайз-проекты с консервативным стеком, так и в компании, стартующие новые проекты, где используются самые передовые наработки и инструменты.

При этом очень важно понимать, что сферы применения этого языка очень широки:

  • разработка REST API и веб-сервисов — ASP.NET MVC, ASP.NET Web API;
  • разработка игр — Unity;
  • разработка мобильных приложений — Xamarin;
  • разработка десктопных приложений — WPF, Windows Forms;
  • разработка кроссплатформенных приложений и сервисов — .NET Core, Mono;
  • разработка облачных сервисов — под C# имеются SDK от всех крупных облачных платформ;
  • разработка хранимых процедур для SQL Server.

Поэтому в рамках одного языка можно совмещать специализацию по нескольким направлениям и при этом использовать знакомые инструменты и библиотеки.

Грамотный специалист может найти работу где-то за неделю-две.

3) С учётом того, что Microsoft активно развивает платформу .NET Core, я думаю, что в ближайшее время увеличится количество вакансий именно в этом направлении. Рынок же по классической версии .NET уже сформирован, и каких-то глобальных изменений на нем, скорее всего, в ближайшее время происходить не будет. Большого роста или падения зарплат ожидать не стоит. Но не следует забывать также и то, что С# входит в десятку самых «высокооплачиваемых» языков программирования. В целом же можно с уверенность сказать, что этот язык успешно завоевал себе крепкие позиции на годы вперед и перспективы у него исключительно позитивные.

Ростислав Дзинько — про C++

[Ростислав Дзинько — Technical Director в Frag Lab, автор C++ дайджестів на DOU]

1) Якщо говорити саме про C++, то як першу мову його можна порадити у випадку, коли метою є відбити будь-яке бажання вчитися програмування.

А якщо серйозно, то тут я б розділив цільову аудиторію на дві великі групи:

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

В першому випадку, на мою думку, варто починати з чистого С і завершувати на С++.

Що стосується самонавчання, тут часто на передній план виходить проблема мотивації. Людина зазвичай, чимось займаючись, хоче якомога швидше побачити реальні результати своєї роботи, а цього набагато легше досягнути на C#, Python чи JavaScript, ніж на C++. На своєму невеликому досвіді викладання C та C++ в КПІ прийшов до того, щоб пропонувати виконання лабораторних робіт у вигляді класичних 2D-ігор на базі фреймворка Qt 5. Такий підхід дещо згладжує цю проблему, проте повністю не вирішує.

Зрештою, своїм студентам я мотивую вивчення C++ як знання uber-мови програмування, після якої значно легше освоїти будь-яку іншу мову чи технологію.

2) Якщо відкрити розділ «Робота» на DOU, бачимо, що проблем з вакансіями, де основною вимогою є знання C++, немає. Єдине, що зазвичай на C++ легше знайти роботу досвідченим спеціалістам, ніж молодшим. І тим більше складно знайти першу роботу на C++. Якщо провідні IT-компанії пропонують безліч курсів на Java, C#, PHP, JavaScript, то з C++ тут тугіше, рівно як і вакансій для Junior.

3) Перспективи C++ я оцінюю в розрізі історії цієї мови програмування. У 80-х роках C++ був фактично єдиною популярною мовою програмування, займаючи істотну частку практично у всіх предметних областях. З часом з’являлись мови, які відбирали свої ніші: наприклад, Java та C# практично повністю поглинули корпоративний сектор, а PHP, Python та Ruby — web.

Проте на сьогодні C++ продовжує домінувати в ігровій індустрії, системному програмному забезпеченню, а також в настільних, серверних та мобільних додатках, де є підвищені вимоги до швидкодії та використання системних ресурсів. Проекти з останніх областей є зазвичай більш наукоємними, але в той же час слабше представленими на українському ринку. В цих галузях, думаю, C++ ще довго залишатиметься дієвим до витіснення його новими перспективними мовами програмування, серед яких цілком можуть виявитись Rust чи/та Nim.

Що ж до кількості вакансій, думаю, що вона буде змінюватись рівненько разом зі зміною розміру ринку, але навряд чи буде якийсь значимий ріст чи падіння, пов’язані з іншими факторами. В той же час зарплати на C++ проектах сильно залежать від предметних сфер (які досить різняться за специфікою і вимогами), тут я б не став прив’язуватись саме до C++ як мови. Наприклад, С++ спеціалісти в VR/AR коштуватимуть дорожче, ніж розробники інтерфейсів прикладних програм і т. д.

Илья Батозский — про Python

[Илья Батозский — Python developer в CHI Software, автор статьи на DOU]

1) Понимаю, что каждый разработчик хвалит свой язык программирования, но, тем не менее, постараюсь быть максимально объективным в оценках и суждениях. Итак, стоит ли новичкам изучать Python и подходит ли он для первого языка? Однозначно да, на оба вопроса. И тут я основываюсь не на теоретических догадках, а на практическом опыте. Достаточно долгое время я работал в школе и там проводил, скажем так, эксперименты с разными языками программирования и могу с уверенностью сказать, что Python в этом вопросе показал себя очень хорошо. Старшеклассники осваивали его легко: гораздо быстрее, чем Javascript и, не к ночи будет упомянуто, Pascal.

Python имеет невысокий порог вхождения, крайне прост как в написании кода, так и в чтении/понимании чужого кода (в плане читабельности его часто сравнивают с псевдокодом, на котором описываются различные алгоритмы для упрощения их понимания), что тоже немаловажно. Как известно, мало написать код, который работает, нужно написать, код который смогут понять другие.

И при всем при этом Python является достаточно мощным языком для реализации практически любых идей, а также окружен весьма многочисленным, отзывчивым и дружелюбным комьюнити.

2) На данный момент Python более чем востребован. Если посмотреть любые исследования на GitHub, StackOverflow etc, то вы всегда найдете его в первых строчках рейтинга популярности. И эта популярность продолжает расти. Если обратиться все к тем же исследования, то Python один из немногих языков программирования, который не снижает темпов роста популярности за последние годы.

Поэтому с трудоустройством, на мой взгляд, тоже проблем быть не должно. Мне сложно судить про весь рынок труда в целом, но в той части, которую наблюдаю я, спрос на Python-разработчиков превышает предложение. И спрос продолжает расти.

3) Перспективы самые радужные. Сейчас набирают все большую популярность машинное обучение и обработка больших данных — в этих сферах Python практически не имеет конкурентов. Он может вам пригодиться, даже если вы не планируете стать разработчиком: любая автоматизация в области DevOps в большинстве случаев также пишется на Python. Плюс в области web-разработки он уже давно и прочно занял свою нишу и не планирует сдавать свои позиции.

Единственное, где Python не особо востребован — это разработка мобильных и десктоп приложений, но и это может вскоре измениться.

Так что я вижу все предпосылки к тому, что запросов на Python-разработчиков будет становиться все больше. А если обратиться к законам экономики: когда спрос растет быстрее, чем предложение, то цены тоже растут. Значит, и зарплаты не будут стоять на месте.

Дмитро Скороход — про Objective-C та Swift

[Дмитро Скороход — iOS Developer в Perfectial, автор iOS дайджестів та статей на DOU]

1) Програмування під техніку Apple включає, по-перше, розробку Desktop-аплікацій під macOS, по-друге, розробку під iOS, watchOS (годинник Apple Watch) та tvOS (приставка Apple TV). Нативними є дві мови програмування — Swift та Objective-C. Більшість вакансій вимагає знати саме їх, хоча під Apple можна розробляти й з використанням інших мов.

Я раджу новачкам починати з мови програмування Swift. Вона є інтуїтивно зрозумілою та перспективною. Swift існує усього 3 роки, але вже встиг обігнати Objective-C за використанням в якості основної мови.

2) Попит на програмістів macOS та iOS стабільно високий, адже техніка Apple має віддану та забезпечену аудиторію. Крім того, власники пристроїв Apple частіше платять за аплікації, ніж користувачі інших ОС.

Дороговизна техніки є вхідним бар’єром, що захищає програмістів під Apple від напливу конкурентів. Саме тому зарплати iOS розробників на 10-20 % вище компенсацій їхніх колег, що програмують під Android. Однак той, хто дуже хоче, може стартувати, і не маючи техніки Apple. Я знаю розробника, що починав з віртуалки, а тепер став CTO в стартапі.

3) Як правило, на Swift пишуть нові проекти, а Objective-C використовується у підтримці старих. Хоча є виключення: деякі замовники досі просять робити нові проекти на Objective-C. Це пов’язано з тим, що щороку виходить нова версія Swift, і необхідно виділяти додаткові ресурси на оновлення проектів. Не всіх це влаштовує.

Тим не менше, тенденція на ринку праці така: Swift росте, Objective-C падає. Тому більше шансів знайти роботу мають спеціалісти зі знанням Swift. Objective-C можна вивчати по мірі необхідності його використання на проекті: проект на Swift може, наприклад, використовувати бібліотеки, написані на Objective-C. Знаючи Swift, вчити Objective-C буде нескладно: обидві мови використовують одні й ті самі фреймворки, отже все зведеться до вивчення синтаксису.

Зарплати Objective-C розробників наразі дещо перевищують зарплати їхніх колег, що пишуть на Swift. Це пов’язано з тим, що успішні старі проекти мають більше грошей, ніж нові стартапи. А також із тим, що в Swift більше новачків. Однак мова іде про різницю в $100-200, це не аргумент проти старту саме зі Swift.

Похожие статьи:
В этой статье хочу поделиться принципами, которые сформулировала на основе теории нейрообразования (наука о взаимодействии между...
Привет! Этот дайджест мы решили посвятить Ruby/Rails Gems, собрав гемы для решения типичных задач: от тестирования до безопасности...
20 червня видання TechCrunch повідомило, що маркетплейс OLX Group скорочує близько 800 фахівців по всьому світу через проблеми...
Ссылки What I learned about programmers by reading 200+ programming jokes (+ part 2). Rada Invaders. cube composer game. Guide to software developer job advertisements. So a Foo walks into...
Японский оператор мобильной связи NTT DOCOMO представил новую зимнюю коллекцию мобильных терминалов и планшетов...
Яндекс.Метрика