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

Как понять, какое направление стоит выбрать

Кто-то выбирает профессию, в которую легко войти, и которая не требует долгого обучения. Кто-то смотрит на уровень зарплат по городам. Кто-то готов работать за небольшие деньги, но на работе, которая приносит ему удовольствие. А как быть с программированием? Нельзя точно ответить, какие программисты наиболее востребованы — на каждую специальность найдётся своей заказчик. Зарплаты примерно одинаковые у специалистов разных сфер. Учиться придётся много и непрерывно, ведь технологии постоянно меняются. А ведь разнообразие в IT очень широкое: от создания прошивок для бытовых приборов до разработки игр.

Не стоит ориентироваться на сложность языка, который придётся изучать для работы. Освоив один (даже если это Pascal на втором курсе вуза), вы с лёгкостью изучите и другой. А до того, как вы вплотную подойдёте к изучению, тонкости и различия языков всё равно понять не удастся. Если у вас не получилось изучить язык самостоятельно, всегда можно обратиться к наставникам: курсы программистов на Python, Javascript и PHP смогут существенно подтянуть ваш уровень.

Разумнее всего обратить внимание на сферу, которая вам интересна. Если вам нравится вечерами сидеть за видеоиграми, ваш выбор — геймдев, а не программирование микроконтроллеров. И наоборот: если вам нравится решать сложные низкоуровневые задачи, стоит идти в серверную часть веба или прошивку оборудования.

Обратите внимание и на то, с кем вам придётся работать. Так, разработчик frontend или мобильных приложений будет вынужден взаимодействовать с дизайнерами, SEO-специалистами, менеджерами и зачастую самими клиентами. А специалист в сфере Data Science будет работать разве что с коллегами и маркетологами. Если вам больше нравится выполнять задачи в одиночестве, без общения с клиентами и специалистами других сфер, выбирайте более низкий (то есть машинный, а не визуальный) уровень программирования.

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

  • Чем сложнее и ответственнее область, тем меньше в ней вакансий для новичков. Много джуниоров — то есть начинающих программистов — ищут, к примеру, во frontend-разработке и создании приложений.
  • В IT не смотрят на наличие диплома. Важный показатель — это знания, портфолио и способность выполнить тестовое задание. Поэтому можно получить работу по специальности программиста даже после 9 класса, не поступая в университет.
  • Если вы живёте в небольшом городке, проще всего войти в IT через web. Из-за пандемии компании по всему миру начали активно набирать удалённых сотрудников. При этом нужно понимать, что ваш уровень заработной платы всё равно будет ниже, чем если бы вы переехали в областной центр или, тем более, Москву.
  • Если вы изучили очень редкий язык (например, Rust или Erlang), вам будет сложно найти подходящую вакансию. Но, если найдёте — сразу сможете рассчитывать на очень высокую зарплату.
  • В небольших компаниях вы будете «и швец, и жнец», то есть придётся развиваться горизонтально, изучая новые языки и технологии, за счёт чего и будет происходить рост зарплаты. А в крупных корпорациях из-за большой команды разработчиков будет сделан упор на одно или два направления, которое вам придётся развить до совершенства.
  • Не все компании ищут крутых профессионалов. Практически в каждый коллектив нужен «хорошист», который более-менее разбирается в теме и способен каждый рабочий день выполнять мелкие текущие задачки, не стремясь к карьерному росту и большим проектам. Если вам нравится программировать, но вы не готовы посвятить этому всё свободное время — для вас всё равно найдётся работа.

Необходимые навыки для web-программиста

Пожалуй, веб — самый простой способ познакомиться с программированием и сразу же начать работать. Не случайно курсы frontend и backend разработчиков стали так популярны. Причём вариантов работы в web-программировании сразу несколько: и визуальное оформление, и серверная часть, и работа с базами данных. Можно стать как специалистом в одном из направлений, так и освоить всё сразу.

Frontend

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

  • HTML и CSS на высоком уровне. Обязательно освойте кроссбраузерность и адаптивную вёрстку.
  • JavaScript обязателен для каждой вакансии. А фреймворк — React, Vue, Angular — можно выбрать один, а не изучать их все. Например, React по количеству вакансий сейчас является самым популярным в России фреймворком.

Познакомьтесь с методологией БЭМ, препроцессорами SASS и LESS и системами контроля версий. Необходимое условие для работы frontend-разработчиком — умение работать с графическими редакторами. Отдельный плюс — знание различных CMS на уровне работы с контентом и примерное понимание работы сервера.

Backend

Бэкенд-программист — это человек, который отвечает за корректную работу сайта, развёртывание сервера, взаимодействие с базами данных, алгоритмы, подписки — всё, что пользователь не видит в браузере. Изучение backend — типичное развитие для верстальщиков, которые хотят лучше разбираться в сфере проектирования сайтов. Придётся изучить очень многое перед тем, как стать backend разработчиком:

  • Серверные языки программирования: PHP или Python. Учить оба не обязательно, достаточно освоить только один из них. Может понадобится C++.

    Знание PHP сразу откроют для вас множество вакансий. Практически все предприятия и магазины нашей страны работают с программами семейства 1С. Поэтому для сайтов они вынуждены использовать CMS Bitrix, которая написана на PHP и известна своей проблемной работой. Поэтому вакансий программистов PHP среднего уровня очень много в любом городе. А вот специалистам по Питону придётся искать работу в столице или на удалёнке.

  • Навыки работы с базами данных: MySQL, PostgreSQL и Java. В зависимости от вашего места работы могут пригодиться знания .
  • Для правильного соединения «фронта» и «бэка» понадобятся знания JavaScript. И придётся разобраться в логике языков HTML и CSS.

Кроме языков придётся освоить настройки Nginx и Apache и работу с API. Именно backend-разработчику придётся устанавливать CMS на сайты, так что стоит изучить самые популярные системы (WordPress, Bitrix, OpenCart). Разумеется, необходимо уметь работать через Git и систему контроля версий.

Что нужно изучать, чтобы создавать мобильные приложения

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

Прошла эра многочисленных операционных систем для телефонов и смартфонов. На плаву остались только iOS и Android. И логично, что для этих ОС различаются языки и среды разработки. Можно выбрать одно направление и развиваться в нём. Но в небольших компаниях с маленьким IT-отделом вам, скорее всего, придётся работать над приложением для обеих систем.

Разработка под iOS

У Apple очень строгие стандарты для приложений (особенно в плане дизайна). И, хоть фактически программы можно писать на чём угодно, традиционно используются языки Swift или Objective-C. При этом первый является стандартом для приложений на iOS и достаточно популярен. А вот Objective-C становится всё менее востребованным. Кроме того, нужно быть знакомыми со средами разработки (XCode, AppCode). А использование фреймворков сможет упростить и ускорить вашу работу.

Разработка для Android

Несмотря на схожесть сферы, разработчики приложений под Android вынуждены использовать совершенно другие инструменты. Стандартными языками разработки являются Java и Kotlin. Кроме того, придётся изучить работу с базами данных (различные диалекты SQL). Весомый плюс обучения разработки для Android, а не iOS — возможность использование бесплатного софта.

Изучаем GameDev

Работа над играми намного обширнее, чем кажется на первый взгляд. Проработка архитектуры игры, внутренние настройки, поведение персонажей, разветвления сюжета, обмен данными с другими игроками… специфика работы меняется и от варианта выбранного устройства: компьютер, консоль или смартфон. При словосочетании «создание игр» почему-то первым делом всегда вспоминают дизайнеров и художников 3D-графики. Но ведь баги и вылеты игры при попытке сохранения раздражают куда больше, чем плохо анимированные предметы. Так что у программистов чуть ли не ведущая роль в геймдеве. Чтобы работать в этой сфере, потребуются обширные знания:

  • языки C# или C++;
  • знание игровых движков Unreal Engine или Unity;
  • знания различных направлений математики: тригонометрии, алгебры, теории вероятностей, механике.

Также стоит разобраться в принципах 3D-моделирования, чтобы правильно понимать поставленные дизайнерами задачи. А ещё стоит подобрать для себя удобную среду разработки (впрочем, это касается и программистов других направлений).

Программное обеспечение, Embedded-разработка и другие направления программирования

Desktop-программист занимается создание программного обеспечения для Windows, Linux и macOS. Это могут быть программы для работы с текстом или графикой, аудио-плееры, обработчики медиа-файлов и даже новые среды разработки для других программистов.

Разнообразие операционных систем и тематики программ позволяют выбирать технологии, которые будут использоваться для работы. Например, для написания ПО для Windows подойдут сразу несколько языков программирования: Python, C++, Java. Они отличаются сложностью написания и производительностью готового продукта: лучше всего будет познакомиться с ними всеми и выбирать под конкретный проект. Ну а для macOS необходимо знание Swift и Objective-C (как и для приложений на айфоны).

Data Science — это составление прогнозов, машинное обучение, составление алгоритмов, а также сбор и анализ поступающих данных. Специалист в сфере Data Science в первую очередь должен понимать законы математической статистики и теории вероятности. Языки, используемые в этой сфере: Python, SAS и R. Первый требует знания дополнительных библиотек (Scikit-learn и Pandas) для полноценной работы с данными, а SAS и R используются как раз для анализа и визуализации различного рода данных и исследований.

Не стоит забывать о разработке программного обеспечения для более простых устройств. Сейчас всё больше набирают обороты «умные» бытовые приборы. В производстве, медицине и автомобилестроении активно внедряются новейшие технологии. Для всего этого оборудования тоже нужно писать программы, и этим занимается Embedded-разработчик. Ему необходимо хорошо знать C, C++ и язык ассемблера. Кроме этого, специалист должен разбираться в схемотехнике, микроконтроллерах и микропроцессорах. Особым плюсом будет умение самостоятельной сборки приборов.

Automation QA программист занимается автоматизацией тестирования программного обеспечения. Тестировщики — очень важное направление в IT-сфере,ведь они помогают выпустить подготовленный к работе продукт. Однако далеко не все операции целесообразно выполнять вручную: на некоторые уйдут часы работы. Специалист в сфере Automation QA готовит сценарии и интегрирует тесты с помощью языков Java, Python и JavaScript. Для него важнее не писать чистый код с первого раза, а правильно понимать алгоритмы и теорию тестирования.

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

Идём «от противного»: сначала выбираем язык, а затем — сферу деятельности

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

Итак, если вы изучите…

  • Python: это Backend-разработка, создание программного обеспечения, Data Science и Automation QA;
  • Java (кстати, не стоит путать его с JavaScript — они не связаны ничем, кроме названия): Automation QA, ПО для компьютеров, приложения на Android и Backend;
  • JavaScript: это Frontend и Backend разработка сайтов и автоматизация;
  • C++, C#: Desktop-приложения, Embedded-разработка, Game Dev и немножко Backend;
  • Swift, Objective-C: приложения для iOS и macOS;
  • PHP: Backend-разработка сайтов;
  • C: Embedded-разработка;
  • R, SAS: Data Science;
  • Kotlin: разработка приложений под Android.

Как видно, самые распространённые языки — это Python, Java, C++ и JavaScript. Курсы по изучению этих языков сразу же дадут вам возможность устроиться на работу и развиваться в более конкретном направлении. Если вас привлекает веб и вы хотите начать обучение программированию с нуля, стоит сначала обратить внимание на языки HTML и CSS. Без них не имеет смысла изучать тонкости JavaScript или работы с базами данных. И не стоит забывать о том, что программировать без интереса вряд ли получится. Чтобы быть хорошим специалистом, придётся постоянно изучать новые технологии, углубляться в изученные сферы и знакомиться с новыми. А возможность индивидуального графика работы, высокий уровень зарплаты и знаменитые «чай с печеньками в офисе» — это отличный бонус к занятию любимым делом.