Как стать программистом

Какой язык лучше? Какое направление выбрать начинающему IT-специалисту?

В предыдущей статье мы обсудили вопросы подготовки к началу карьеры в IT. Надеюсь, статья стала для Вас полезной и интересной. Продолжая рубрику «Как стать программистом» я бы хотел поговорить с Вами о выборе направления развития. Какой язык программирования выбрать? Какой тип разработки предпочесть?

В настоящее время существуют сотни различных языков программирования. Так какой из них выбрать, чтобы быть востребованным? Я поделюсь с Вами своими мыслями на этот счёт и подкреплю их теоретическими основами.

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

Огромное количество языков программирования делится на две группы — языки высокого и низкого уровня. Говоря простыми словами, языки низкого уровня работают напрямую с оборудованием компьютера, а языки высокого уровня работают с операционной системой. Низкоуровневые языки требуют понимания архитектуры процессоров, плат и прочего. На рынке более востребованы высокоуровневые языки, которые позволяют создавать то, чем пользуются миллионы людей ежедневно — приложения различного рода. Если речь идёт о том, чтобы построить карьеру, можно, разумеется, сделать ставку на низкоуровневое программирование контроллеров и стараться стать уникальным специалистом. Но проще и быстрее вырасти в мире программирования приложений. Поэтому в данной статье мы поговорим о высокоуровневых языках. Впрочем, если Вы хотите почитать про низкоуровневые языки, то напишите об этом в комментариях к этой статье.

Скорее всего, большинство из Вас уже ориентируется на высокоуровневые языки программирования. В поиске данной статьи Вы наверняка уже читали кучу статей тип «Язык A рулит» или «Язык Б — отстой». К сожалению, очень много подобных статей являются отражением сугубо личных мнений.

Я начинал свою карьеру с языка PHP. Тогда это был PHP 5.2, который по сравнению с современными его версиями был намного хуже. Именно тогда началось активное движение языка в сторону классического объектно-ориентированного программирования, и сейчас — в 2017 году, мы видим более взрослый и строгий PHP 7.1. Но многие разработчики, использующие другие языки до сих пор кричат на форумах о минусах языка, не зная, что эти минусы относятся к устаревшим версиям.

Сам по себе PHP позволяет создавать серьёзные приложения — я работал и с интеграцией, и с интернет-банкингом на PHP. И это были прекрасные приложения. Так почему же этот язык имеет так много противников?

Дело в том, что PHP имеет довольно низкий порог вхождения (помните, я писал об этом в своей предыдущей статье?). Это и плюс, и минус данного языка. С ним Вы можете очень быстро начать и влиться в разработку. Язык позволяет без больших трудозатрат создать динамический сайт или несложное приложение. Но многие разработчики, к сожалению, не хотят развивать свои навыки и знания, что приводит к появлению плохого и небезопасного кода, непрозрачной логики и прочего. Но почему-то в IT сообществе часто забывают о том, что на любом языке можно написать плохой код. И количество плохого кода в PHP обосновано не тем, что язык плохой, а тем, что разработчики ленятся. Легкость изучения позволяет оставаться при доходе выше среднего людям, которые не следят на современными тенденциями, не думают о высоких нагрузках и уровнях безопасности.

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

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

Что именно поможет Вам понять, стоит ли изучать тот или иной язык? Факторы следующие

  • Анализ рынка вакансий
  • Анализ развития языка
  • Порог вхождения
  • Размер сообщества

Давайте разберем эти факторы по отдельности.

Анализ рынка вакансий. Начать стоит с просмотра основных HR-ресурсов. Для IT-специалистов это HeadHunter, LinkedIn и с недавнего времени MoiKrug. Являясь профильным ресурсом, HH часто публикует результаты исследований, проведённых на их собственной поисковой базе. На их сайте даже есть специальный раздел исследований. Помимо этого Вы можете произвести самостоятельное исследование. Введите в поисковую строку «Программист», укажите вакансии с нужным уровнем опыта (желательно около 3 лет — это показательный срок, за который в среднем люди дорастают до опытного middle программиста). Дальше просто разложите вакансии по предлагаемым языкам и увидите, какой спрос существует на тот или иной язык и сколько за него платят. Про сам поиск первого места работы мы поговорим в отдельной статье.

На момент написания этой статьи (май 2017) на рынке РФ львиную долю вакансий занимают Java и JavaScript (пометка для новичков — это два совершенно разных языка).

Анализ развития языка. Новые языки программирования появляются каждый месяц. Особенно это заметно в области frontend web-разработки. Там нужно постоянно узнавать какие-то новые гипермодные инструменты. Нюанс в том, что их путь из гипермодных в забытые очень короток, поэтому тенденции там меняются весьма часто. Помните о том, что любой язык, о котором сегодня говорят все, завтра может «сдуться» и прекратить развитие. Подходите к вопросу выбора стратегически!

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

Мы строим качественную карьеру, поэтому надо ориентироваться на крупные и доверенные источники. За основу можно взять индекс TIOBE или статистические данные со StackOverflow. TIOBE показывают более академическую картину в мире языков программирования, делая упор на долгосрочное развитие языка. И состав их списка TOP-10 меняется довольно редко. В свою очередь StackOverflow показывают реальное использование языков на проектах. Это тоже полезная информация, ведь работу Вы ищете здесь и сейчас, а не через 5 лет. Таким образом, сопоставив полученные данные можно получить картину, иллюстрирующую область востребованности, которая будет содержать в себе пересечение множеств популярных языков по версиям различных источников.

Порог вхождения. Какими бы хорошими рейтингами не обладал язык, человек без подготовки может освоить далеко не каждую среду. К примеру, изучить с нуля Lisp будет сложнее, чем, например, PHP. Градация возрастания сложности связана с экосистемой языка. Язык JavaScript требует для своей работы только наличия браузера (если речь, конечно, не про Node.js), тогда как Java потребует установки специального окружения (JRE), понимания ООП, многопоточности. Каждый новый аспект языка отдаляет от новичка ту точку, в которой он перестаёт постоянно лазить в справочник при написании кода.

По уровню сложности, на мой взгляд, неплохими языками для новичков являются PHP, JavaScript, Python. Они помогают познакомиться с миром программирования, основными концепциями. Уже через несколько месяцев после старта обучения Вы захотите посмотреть, что же есть ещё вокруг Вас. И здесь уже можно присмотреться к Java, семейству C языков (C#, C++). А можно остаться и при том же JavaScript или PHP, изучая тонкости языка, популярные фреймворки. Как я говорил ранее, и хорошее, и плохое приложения можно написать на разных языках. Поэтому Вам нужно сосредотачиваться не только на знании языка программирования, но и на построении алгоритмов, их анализе и оптимизации. Впрочем, на первых порах это не будет Вашей главной задачей в отличии от изучения языка.

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

Размер сообщества. Моя практика работы в IT показывает, что большинство задач, которые ставятся перед программистами, уже решены. И потому, прежде чем создавать что-то своё, стоит поискать (не копировать, а просто поискать и ознакомиться!) решения других специалистов. Чем крупнее сообщество языка программирования, тем выше вероятность того, что Вы найдёте подходящее решение. Это касается не только языков, но и их фреймворков, но об этом мы поговорим в другой статье.

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

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

Разумеется, у каждого языка есть своя область применения. Например, приложения, запускающиеся локально в отдельном окне вряд ли написаны на PHP, тогда как микросервисы признанно удобно писать на Java. Расписывать области применения — долго и неинтересно, поэтому я приложу сюда схему-опросник, пройдя которую, Вы сможете получить общее представление о том, какой язык Вам нужен в зависимости от того, какие цели Вы преследуете. Можно кликнуть по картинке, чтобы посмотреть её в полном размере

Схема выбора языка программирования

Резюме aka TL;DR
В статье я постарался абстрагироваться от привычных мне языков программирования и дать Вам возможность получить общее представление о процессе выбора языка программирования. Выбор этот сложный, и Вас вероятно будет останавливать страх ошибиться и сделать неправильный выбор. Но не бойтесь. Вне зависимости от выбранного языка, Вы всегда сможете впоследствии сменить его. Только не делайте этого слишком быстро, а попытайтесь приложить усилия, не бросайте дело.

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

Ищите языки с небольшим уровнем вхождения. Это никоим образом не говорит об интеллектуальных способностях, а напротив — имеет стратегический подход. Вы не пытаетесь взять вершину с наскока (скорее всего, это закончится провалом, вызванным резкой демотивацией), а размеренно, шаг за шагом растите свои навыки. Ведь профессиональные спортсмены никогда не берут планки сразу — они день ото дня тренируются. Вооружитесь и Вы этим подходом, и он сослужит Вам отличную службу!

Какой язык лучше? Какое направление выбрать начинающему IT-специалисту?: 1 комментарий

  1. очень полезная статья, много полезного узнал, теперь мне проще выбрать язык и найти своё место в IT.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *