Как выбрать язык программирования: практическая логика для новичка

Новичок перед выбором пути в мире программирования
Новичок перед выбором пути в мире программирования

Один из самых частых вопросов, который задают новички: «Какой язык программирования выбрать?»

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

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

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

Для наглядности приведу небольшую аналогию из своей жизни. Каждый день передо мной стоит выбор:

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

2. Улучшать код своих продуктов, постоянных клиентов у которых пока нет.

3. Искать и привлекать новых клиентов для своих продуктов.

Для меня самым комфортным является вариант №1, ведь я чётко знаю, что за N затраченных часов получу оплату, равную K×N, а сами задачи - это уже пройденный путь.

Вариант №2 пока не приносит денег, но привычен, потому что программирую я давно.

А вот вариант №3 вызывает наибольший стресс: я никогда этим системно не занимался, для меня неочевидно, какое вознаграждение получу, нет чётких шагов, гарантирующих сумму K за N часов. Поэтому прежде чем приступить, мне приходится бороться с внутренними возражениями.

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

Мне начинать было проще: в университете уже составили практические задачи, выполнение которых давало конкретные баллы, складывающиеся в оценку за семестр. Значительную часть практики я получил на фрилансе, где 90% задач были незнакомыми, но вознаграждение измерялось деньгами. Поэтому сомнений в том, правильную ли практику я выбрал и приведёт ли она к результату, было меньше.

В интернете можно найти лабораторные работы любого университета по основам выбранного языка и выполнить 8–10 таких задач, если сложно проходить курсы на Stepik. Мотивацию придётся искать внутри, напоминая себе, что вы идёте стандартным путём, который прошли ваши будущие коллеги, обучавшиеся по этой специальности.

Все эти советы требуют отдельного обсуждения, но я обещал ответить на главный вопрос: «Какой язык программирования выбрать?»

Самый простой и очевидный ответ - тот, по которому больше вакансий и выше оплата.

Откройте hh.ru, выберите фильтр по своему городу или удалённой работе и посмотрите, сколько вакансий выдаётся по каждому языку. Просмотрите самые высокооплачиваемые предложения для разного уровня стажа и особенно обратите внимание на вакансии без опыта. Выпишите стек технологий, который там требуется - он будет повторяться.

Также можно сначала определиться с направлением: бэкенд, фронтенд, анализ данных, тестирование, мобильная разработка. Для этого придётся изучить их особенности хотя бы в общих чертах. Ещё проще, если у вас есть цель - например, работа в конкретной компании: тогда анализ её стека даст чёткое понимание.

Я советую начинать с конечной цели. Сначала понять специальность - это сузит выбор технологий, а затем выбор языка станет очевидным. Один язык закроет 80% фреймворков, используемых в этом направлении, и будет наиболее актуальным.

Например:

Front-end → React / Next.js / Angular / Vue.js → JavaScript

(очевидный лидер, потому что используется во всех этих инструментах)

Back-end → Django / Flask / FastAPI / ASP.NET Core / Laravel / Symfony / Gin / Fiber / Echo →

Python / C# / PHP / Go

(здесь выбор шире, но теперь остаётся лишь сравнить вакансии по этим языкам)

Спасибо за внимание. Не стесняйтесь участвовать в обсуждении и задавать вопросы: @pro_kod или в комментариях.

2 комментария