Автор: Андрон Алексанян, практикующий Data Scientist и эксперт онлайн-университета SF Education

В современном мире оставаться конкурентоспособным на рынке труда все сложней: требования работодателей все более высокие, темп становится все интенсивней, а задачи все более и более амбициозные. Сейчас уже, наверно, никто не может себе представить ни одну серьезную техническую позицию в финансах, ритейле, услугах, медицине, да и любой другой сфере без хотя бы минимальных навыков программирования.

Но что делать, если получить хорошую должность и зарплату хочется уже сегодня, а в резюме из языков — только английский? Какой язык выбрать, чтобы быть максимально успешным на фоне конкурентов? 

Однозначного ответа нет. Точнее, он есть. Но вам он, скорее всего, не подходит. Язык программирования можно выбирать по его популярности и востребованности, вне зависимости от ваших собственных целей и планов, а можно выбирать его мудро!

Простой пример: JavaScript — один из самых популярных на текущий момент языков в IT-community, что объясняется активным развитием различных интернет-проектов. Вы можете овладеть этим языком в совершенстве, но скажите вы об этом во время собеседования на позицию в финансах, и вас засмеют. Можете негодовать, трясти дипломом и кидаться пачками бумаги с распечатанным кодом — это не произведет ни на кого впечатления.

Поздравляем, вы облажались!

В связи с этим, давайте не будем опираться на всевозможные рейтинги/статистические исследования/опросы программистов и прочую объективную информацию, так как она просто не рассматривает случаи, а лишь описывает ситуацию в общем.

Статистика — дело хорошее, но нам это не подходит.

Поэтому начнем!

1. Data Science & Анализ данных 

  • Python — чрезвычайно популярный и многопрофильный язык, возможности которого выходят далеко за рамки задач Data Science и Аналитики. Соответственно, в нем есть все, чтобы по полной программе заниматься проектами в этих областях: 
  • Работа с внешними источниками (файлы, базы данных, веб-сайты) и обработка данных встроенные алгоритмы машинного обучения и анализа данных:
  1. Большое количество библиотек для решения узкоспециализированных задач, например, Artificial Intelligence
  2. Специальные пакеты для визуализаций

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

  • R — еще один очень популярный язык для статистических исследований, анализа данных и машинного обучения. Богатый инструментарий R также позволяет решать много более сложных задач: например, анализировать тексты или создавать веб-сервисы. Основными плюсами этого языка являются: 
  1. Огромное количество пакетов, заточенных на эффективную работу с сырыми данными и последующую продвинутую аналитику
  2. Установка и последующее использование предельно просты — все основные модули включены уже с первичной установкой программы; а менее популярные пакеты легко скачиваются прямо из интерфейса
  3. Простота и наглядность синтаксиса также делает процесс обучения и использования языка крайне простым и приятным
  4. Возможность делать потрясные визуализации с помощью пакета ggplot2 и различных дополнений 

R чуть менее популярен, чем Python в силу своей специализации, но активно набирает рейтинг и прекрасно подойдет специалистам в области Анализа данных и Data Science.

Какой язык програмирвоания выбрать новичку

Все пакеты также хорошо задокументированы, а дружелюбные разработчики и профессиональная среда с радостью делятся опытом и помогают в социальных сетях!

  • SQL — узконаправленный язык для работы с базами данных, но в области аналитики без него никуда. В большинстве вакансий к соискателям будет предъявляться требование “Знание SQL”. Не будем обсуждать сейчас вопрос, какой диалект выбрать и в какой среде работать — это тема для отдельной статьи. Держите лучше 3 причины, почему SQL вам нужен (помимо того, что мы уже сказали): 
  1. Любая современная компания хранит бизнес-информацию в базах данных. Эти базы — хранилище инсайтов. Чтобы общаться с ними, нужен SQL 
  2. SQL позволяет быстро решать те задачи, которые стандартные инструменты (например, Excel) решать не могут/решают плохо. Проанализировать 20 строк (или даже 5000) можно и в Excel, а если строк миллионы?
  3. Базы данных используются почти везде: занимаетесь вы веб-проектами, аналитикой или компьютерным зрением — не важно, ваш навык все равно будет востребованным

Так же как и Python, практически во всех рейтингах SQL будет в топ-10 самых популярных языков программирования. Несмотря на свою востребованность, он достаточно логичен и прост в освоении, если изучать его грамотно (а желательно под руководством наставника).

Поэтому потратьте немного времени и сил — уделите их освоению SQL и ваши инвестиции в себя точно окупятся с лихвой!

2. Web — разработка

  • CSS/HTML — хотя это и не один язык, а сразу два, но они всегда идут в паре и являются двумя из трех основных языков в web — разработке (про третий поговорим дальше). Скорее всего, они пользуются такой популярностью, что даже самые далекие от программирования люди хоть раз, да слышали о них. Это неудивительно, ведь именно благодаря связке HTML — CSS мы можем пользоваться стильными и функциональными сайтами, а не тем кошмаром, который был на заре интернета. Не будем отдельно останавливаться на плюсах и минусах этих языков. И не потому что их нет, а потому что у HTML и CSS просто нет конкурентов! 
  • JavaScript — третий столп веб-разработки. Согласно всем последним рейтингам, этот язык находится не только в топ-10 самых востребованных языков, но и даже в топ-3! Это легко объяснимо, ведь именно JavaScript делает современные сайты не просто наборами красивых визуальных элементов, а реально функциональными сервисами. Он работает в разных браузерах и поддерживает всевозможные стили разработки. Одним словом, если Вы хотите заниматься web-разработкой, то JS для вас — must have. 
  • Ruby — высокоуровневый язык программирования для создания веб — приложений. Язык Ruby не настолько популярен, но тоже частенько попадает в разные топы. У него есть куча преимуществ: 
  1. Скорость разработки (считается, что КПД вырастает процентов на 30-40)
  2. Огромное количество уже готовых решений и дружное коммьюнити — люди разрабатывают что-то новое и выкладывают это в открытый доступ, остается только пользоваться
  3. Приятные инструменты, облегчающие жизнь разработчика: организация тестирования, роутинг и многое-многое другое. 

Считается, что порог входа в Ruby достаточно высок (т.е. нужно уже иметь некий опыт в программировании), но результаты не заставят себя ждать — хорошие программисты получают очень приличную зарплату, даже относительно рынка веб-разработки. 

Помимо упомянутых выше языков для web-разработки, Python и SQL, которые мы уже обсудили, тоже должны занимать уверенные позиции в этом списке. 

3. Классика программирования

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

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

  • C++ — крайне мощный язык программирования, который позволяет создать практически любой программный продукт. Несмотря на свою сложность, именно с C++ зачастую начинают знакомство с программированием многие новички. Правильно ли это? Скажем так, с точки зрения глубокого погружения в программирование, это хороший шаг: новичок сразу будет привыкать к правильным конструкциям и концепциям, а также “изнутри” сможет прочувствовать взаимодействие компьютера и написанного им кода. Но есть и обратная сторона медали: учить C++ с нуля — примерно тоже самое, что учиться водить 20-ти тонную фуру. Порог входа достаточно высок и желательно быть знакомым хотя бы с языком Pascal (сейчас его преподают почти во всех школах). Однако, не стоит забывать, что C++ — бессмертная классика и оно того стоит, можете не колебаться. 

А вот лишь одни из немногих сильных сторон этого языка, чтобы вам не было так страшно приступать к изучению: 

  1. Возможность создавать высокопроизводительные и отказоустойчивые приложения
  2. Возможность адаптировать программы под конкретное железо и задачи
  3. Огромное количество сторонних библиотек с готовыми реализациями и широкое коммьюнити разработчиков

Помимо всего прочего, специалисты в этой области всегда востребованы; их труд высоко оплачивается; а компании как Google и Facebook постоянно ищут толковых C++ — разработчиков по всему миру. Так что, дерзайте!

  • Java — второй аксакал в мире программирования. Его также можно использовать, чтобы написать почти все что угодно, так он еще и один из самых высокооплачиваемых уже многие годы! Порог входа в Java также достаточно высок — синтаксис языка очень непрост, но создатели и разработчики языка так грамотно планировали все свои модификации и изменения, что Java — само изящество, несмотря на внешнюю сложность. Структурность и строгая логика — это про Java. Не боитесь покорять вершины программирования? Да Вы смельчак! Значит, штурмуйте Java и вершины Вам покорятся!

А что по особенностям? 

  1. Создатели языка заложили идею простоты и понятности. На фоне таких языков как Python, естественно, Java не выглядит простым. Однако, за массивом кода скрываются конструкции, которые вы быстро поймете и привыкнете к ним. 
  2. Переносимость и кроссплатформенность – неважно, на чем вы программируете – ваш код будет работать! Именно это основная отличительная особенность Java, из этой задумки этот язык и появился.  

Заключение 

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

Тем не менее, общая идея такая: инструмент нужно выбирать под задачу. Не стоит всерьез обращать внимание на пороги входа, learning curve и прочие вещи. Если ваша деятельность предполагает знание C++, значит, работайте с ним.

Но если вы собираетесь работать в Data Science или Аналитике, то едва ли вам понадобится C#. Одним словом – не принимайте глупых решений, развивайтесь, не бойтесь учиться и постоянно повышайте свой профессиональный уровень.

Именно это и позволит вам выгодно выделяться среди конкурентов, завоевывать новые карьерные вершины и гордиться собой, как профессионалом!

Успехов!