Низкий порог вхождения, одни из самых высоких зарплат, бесплатные курсы программирования с будущим трудоустройством, разнообразие специальностей на любой вкус — всё это делает профессию программиста очень популярной. А круче всего, что любой человек может самостоятельно изучить сферу и получить специальность программиста. Но главный вопрос — какому языку программирования учиться новичку, чтобы стать востребованным специалистом?
Как понять, какое направление стоит выбрать
Кто-то выбирает профессию, в которую легко войти, и которая не требует долгого обучения. Кто-то смотрит на уровень зарплат по городам. Кто-то готов работать за небольшие деньги, но на работе, которая приносит ему удовольствие. А как быть с программированием? Нельзя точно ответить, какие программисты наиболее востребованы — на каждую специальность найдётся своей заказчик. Зарплаты примерно одинаковые у специалистов разных сфер. Учиться придётся много и непрерывно, ведь технологии постоянно меняются. А ведь разнообразие в 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. В зависимости от вашего места работы могут пригодиться знания 1С.
- Для правильного соединения «фронта» и «бэка» понадобятся знания 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 или работы с базами данных. И не стоит забывать о том, что программировать без интереса вряд ли получится. Чтобы быть хорошим специалистом, придётся постоянно изучать новые технологии, углубляться в изученные сферы и знакомиться с новыми. А возможность индивидуального графика работы, высокий уровень зарплаты и знаменитые «чай с печеньками в офисе» — это отличный бонус к занятию любимым делом.