С какого языка программирования начать путь в IT?

Даниил Пилипенко, программный директор факультета backend-разработки направления «Программирование» Skillbox, директор центра подбора IT-специалистов SymbioWay, рассказывает, как нетехнарю выбрать первый язык программирования.

Сегодня люди нетехнических специальностей всё чаще задумываются о смене деятельности и задаются вопросом: «Кто тут в IT крайний?» Оно и неудивительно: сфера услуг подвергается роботизации, списки профессий будущего заполонили разработчики всех сортов, а HR-специалисты сетуют на дефицит программистов, особенно разработчиков веб-приложений.

Какие бывают языки программирования и для чего они нужны?

На данный момент существует несколько десятков языков программирования. Среди наиболее популярных — Java, PHP, Python, C++, C#, Ruby, Kotlin, Swift, JavaScript, TypeScript и Go. Они отличаются по синтаксису (правилам написания кода), концепциям, принципам работы и назначению. Разные языки предназначены для разработки разного программного обеспечения (ПО), программ и приложений (все эти три термина — синонимы). Приложения бывают следующих видов: веб-приложения, мобильные приложения, desktop-приложения, а также встроенное программное обеспечение.

Чаще всего пользователь имеет дело с веб-приложениями. К ним относятся как простые лендинги, интернет-магазины, новостные и информационные порталы, так и практически все онлайн-сервисы, LMS-, CMS-, CRM-системы, современные социальные сети и другое. Для их разработки требуются разные программисты.

Обычно веб-приложения состоят из двух частей — frontend и backend. Frontend — это составляющая, которая «работает» в браузере, а backend — на сервере.

Разберем простой пример работы веб-приложения. Пользователь вводит в адресную строку своего браузера vk.com и нажимает Enter. Если немного упростить, происходит следующее: после нажатия клавиши Enter браузер делает запрос к одному из серверов ВКонтакте. После этого на сервере формируется ответ в виде программного кода главной страницы социальной сети, который отправляется обратно. Получив этот код, браузер отобразит его как красивую веб-страницу. Это будет код, где используются три технологии — язык разметки HTML, технология CSS и язык программирования JavaScript.

Язык разметки HTML описывает, из каких элементов состоит веб-страница — изображений, ссылок, полей форм, кнопок, текстов и других элементов. Технология CSS отвечает за стили, задающие все аспекты внешнего вида этих элементов — размеры, отступы, расположение друг относительно друга, цвета текста, фона и границ, шрифты и другие свойства. Язык программирования JavaScript придаёт веб-странице «интерактивность»: делает так, что элементы на ней реагируют на действия пользователя. Например, пользователь вводит в поиске некий запрос. В процессе набора этого запроса появляется список наиболее подходящих результатов. Откуда берётся этот список? С сервера: код на языке JavaScript, работающий на веб-странице, при вводе очередного символа поискового запроса отправляет его на сервер и запрашивает список подсказок, который приходит обратно на веб-страницу и отображается браузером.

На backend, который работает на стороне сервера, в качестве основного языка тоже может использоваться JavaScript, но чаще — более популярные языки, такие как Java, Python, PHP, Go или C#. Backend любого известного вам продукта, скорее всего, разработан на одном из них.

А что с рынком труда?

Последние 25 лет спрос на программистов растёт быстрее, чем предложение. По данным компании SymbioWay и портала HeadHunter, количество вакансий в этой сфере повышается ежегодно на 15%, а специалистов становится больше всего на 5%. С начала пандемии (март 2020-го) потребность в разработчиках в России увеличилась в 2,5 раза. Растущий дефицит приводит к резкому росту зарплат. К примеру, начинающий разработчик в Москве, Санкт-Петербурге или на удаленке может устроиться на свою первую работу с зарплатой в диапазоне 60–90 тыс. рублей в месяц, а уже через год-два выйти на цифры 140–220 тыс. рублей в месяц.

Ниже приведена диаграмма, описывающая структуру спроса на backend-разработчиков в России, по консолидированным данным ресурса «Хабр.Карьера»:

Как сделать выбор?

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

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

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

Художники и дизайнеры. Больше склонны к работе с визуальной частью ПО, обычно любят формировать внешний вид продукта или влиять на него. Им проще всего начать работу в сфере frontend-разработки или разработки мобильных приложений. Здесь уже надо ориентироваться на собственные интересы — заниматься веб-сайтами и сервисами или мобильными приложениями. В случае последнего выбрать между Android и iOS очень просто: если телефон на Android, начинайте с программирования на языке Kotlin под Android, а если на iOS — то с языка Swift. Почему так? Потому что начинать лучше всего с того, что понятно и знакомо.

Маркетологи. Обычно работают с веб-сайтами и хорошо понимают их структуру. Для этих специалистов начать карьеру в IT было бы проще всего в сфере веб-разработки на языке PHP, поскольку большинство сайтов написаны именно на нём. Например, социальные сети ВКонтакте и Facebook. Если есть опыт работы с SEO (поисковой оптимизацией сайтов), то, скорее всего, понравится frontend-разработка (SEO-специалисты обычно хорошо знают язык HTML) или fullstack-разработка, в рамках которой вы сможете программировать не только frontend, но и backend на том же PHP.

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

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

Язык Java используется очень многими корпорациями: большинство банковских приложений («Альфа.Клик», PayPal, «Сбербанк.Онлайн») и другое программное обеспечение, связанное с финансами, разрабатывается на Java. Это один из самых безопасных языков программирования с точки зрения уязвимостей для хакерских атак. На Java также пишутся и многие другие системы и сервисы: «Яндекс.Маркет», «Яндекс.Музыка» или сервис «МойСклад» написаны на Java.

Для социальных и гуманитарных наук сегодня как никогда силен запрос на статистические методы и знание языков программирования, которые позволяют работать с большими массивами данных и автоматизировать те процессы, которые раньше выполнялись вручную. Я занимаюсь исследованиями в области политической науки и экономической истории и в своей работе использую Python и R. В мои задачи, которые я решаю с помощью языков программирования, входит сбор, обработка и анализ данных. В сбор данных входит, например, извлечение информации с сайтов (веб-скрейпинг), с картинок или текстов. Обработка данных подразумевает их преобразование для удобной последующей работы, например агрегирование индивидуальных данных. Анализ данных — это поиск закономерностей, проверка гипотез, ответ на содержательные исследовательские вопросы.

Я не считаю, что работа с языками программирования требует особого склада ума — например, такого, который позволяет переходить на высокий уровень абстракций и оперировать абстрактными объектами и, как мне кажется, присущ математикам. Так как в процессе программирования ты решаешь какие-то прикладные задачи, это требует навыка мыслить нестандартно, outside of the box, и ему можно научиться. Этот навык часто ограничивается школой, в которой мы привыкаем к мысли, что есть „правильный“ и „неправильный“ способы решения какой-либо задачи. Программирование, напротив, требует понимания, что существует множество правильных решений с разной степенью эффективности.

Наталья Василенок, PhD Стэнфордского университета

Я видела людей, не справившихся с освоением курса математики или программирования. Но причина не в том, что они были не способны усвоить такого рода информацию, им просто могли не нравиться точные науки. Уверена, при наличии мотивации любой „гуманитарий“ способен освоить написание кода.

Я начала изучать код примерно в 2013 году, не помню, чтобы у меня возникали какие-то сложности с этим. Python мы изучали по программе вуза, преподаватель посоветовал параллельно проходить курс от MIT на edx. Сложности возникали только по причине скромной по объему практики, приходилось самостоятельно занимать себя задачами, чтобы навыки не пропадали.

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

Татьяна Семина,

к. ф. н., разработчик-лингвист

0
52 комментария
Написать комментарий...
Alexey Fedorov

Главное не начинать со Skillbox.

Ответить
Развернуть ветку
memesismylife

Хорошие слова

Ответить
Развернуть ветку
Wlancer.ru

Все верно

Ответить
Развернуть ветку
Юлия Ткаченко

училась в EasyUM в Москве, классная школа, мне понравилась. подруга Avenue окончила. насчет Скиллбокс согласна - программа там нулевая, просто деньги на нас зарабатывают

Ответить
Развернуть ветку
Дмитрий Тенетович

с турбо паскаля же, ну!

Ответить
Развернуть ветку
VISAMARKT

Обычно все бросают это дело, после того как усвоили базу. Особо целеустремленные, доходят до практики. А дальше, что делать?! Куда податься?! Без опыта чтения "чужого" кода, разработки сложных приложений, работы в команде и других практических навыков, которые нужны в коммерческом программировании. А так, учи любой современный язык под ООП: php, Java, python, C# и т.п., не прогадаешь.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
ЖОПАчка

некоторое курсы это могу дать

Ответить
Развернуть ветку
Ксюша Цветикова

Проблема изучения ЯП не в математическом или гуманитарном складе ума — а в усидчивости) Всех привлекают зп в 200-300 к, но новички не учитывают, что придется знатно попотеть, чтобы хоть до уровня джуна дойти когда-нибуь.

Ответить
Развернуть ветку
Тоска

По-моему, java лучший вариант. Тут вы учите сразу и язык и паттерны программирования, потому как они в этот язык "вшиты" и вариантов использования гораздо больше чем у javascripta, например. Последний тоже обещает и фронт и бэк, но по факту, как выше написали, js - это набор не связанных друг с другом постоянно устаревающих самопальных костылей, которые по отдельности кажутся простыми, но их дохрена - вы просто убьете время на их освоение, а в конце вам скажут, что так кодить уже не модно.

Ответить
Развернуть ветку
Александр Черкашин

Какая феерическая чушь. В попытке завлечь народу на свои говнокурсы пишется такая дичь. А потом люди тратят время и деньги, а после понимают что их гдето обманули. Без технического "склада ума" - который конечно же миф, ага - интересс к этому делу не возникнет, потому что сама рутина работы такова, что грамотно работать и получать удовольствие от работы может только технарь. И никто вайтишникам и даже джунам деньги платить особые не будет. А значит и денежная мотивация здесь не работает особо. Нельзя "не любить точные науки" - и любить программирование. Это из серии это что-то из серии пчёл против мёда.

Ответить
Развернуть ветку
VISAMARKT

Так основная аудитория курса, которые спрашивают , "а с телефона программировать можно". Чем не компетентнее аудитория, тем легче запудрить мозги.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
4 комментария
VISAMARKT

А лучше сначала Python, а уже в довесок к нему JS

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
10 комментариев
Farid Agaev

Что такое бекэнд и фронэнд?

Ответить
Развернуть ветку
1 комментарий
ArtemRE2

Мне сейчас 40, бизнес перестаёт приносить положительные эмоции, да и изрядно просел. С детства программировал для себя. В 90тые Assembler, потом PHP, сейчас посматриваю на GO. 90% своих задач решал сам. В принципе готов потратить год или два на глубокое погружение в язык и алгоритмы. Но как быть с корпоративной средой, как научиться разговаривать с работодателем и коллегами на одном языке. Это самая большая проблема. Как донести до работодателя, что я что-то из себя представляю. Я даже в сленге не ориентируюсь. Или нечего даже и думать, а рассматривать перспективу принеси-подай?

Ответить
Развернуть ветку
Александр

год-два? это уровень джуниора.
вы готовы лет 5-7 учиться кодить за 40 тысяч?
будете бегать за сеньором которому 25 и учиться, учиться, учиться

Ответить
Развернуть ветку
7 комментариев
Павел Петрухин

Я вот журфак закончил, прочитал 1000 книг, не могу найти работу — с какого языка мне начать путь в IT?

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
2 комментария
Alexey Fedorov

С любого ООП языка.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Slevin Holmes

С английского.

Ответить
Развернуть ветку
ne01100001001

Не с того который в Skillbox.

Ответить
Развернуть ветку
Босько Людмила

С JS, как по мне

Ответить
Развернуть ветку
VISAMARKT

Вот пристали то к JS. Если проводить аналогию, то к примеру Java это Ёлка (как основная конструкция программы), а JS это гирлянда, игрушки, и прочая мишура, как украшение или дополнение к конструкции .

Ответить
Развернуть ветку
49 комментариев
Раскрывать всегда