Обычно в программирование приходят после профильного университета или обучения на курсах. У студентов достаточно времени на знакомство с профессией – сложнее тем, кто решился сменить карьеру и стать разработчиком с нуля. Нужно определиться, какие технологии изучать, чтобы быстро вырасти в востребованного специалиста и остаться довольным новой работой.
Вместе с разработчиками Полиной Потребко и Евгением Паднюком мы подскажем, что следует учитывать при выборе языка программирования, сколько обычно уходит времени на обучение и нужно ли разработчику знать несколько языков.
Cодержание:
1. Ориентируйтесь на область применения языка
2. Оцените востребованность языка
3. Узнайте про особенности изучения языка
4. Зачем программистам знать несколько языков
В вузе погружение в программирование происходит постепенно и за время учебы можно познакомиться с несколькими языками. Но часто университеты не успевают за трендами и не преподают новые технологии, которые активно используются в разработке. Стажировки или курсы от IT-компаний помогают студентам лучше понять, что происходит в сфере IT, рассказывает Полина Потребко – SharePoint-разработчик:
Во время учебы у нас было больше лабораторных и лекций по C#, а по остальным языкам прошлись очень бегло. На 4-ом курсе для студентов был организован 3-х месячный курс от одной IT-компании по изучению .Net (прим. программная платформа, где один из языков C#). За это время этот язык стал уже своим. А в .Net нужно знать хотя бы базовый JavaScript. И чем больше я его использовала, тем лучше понимала, что мне интересен именно этот стек технологий.
Если вы решили сменить карьеру и начать изучать программирование с нуля, то сначала определитесь, чем конкретно вам было бы интересно заниматься. Любой язык программирования – это лишь инструмент для реализации задач. Начните с выбора направления в IT, которое пересекается с вашими интересами и способностями. Возможно, вы давно следите за какими-то технологиями или конкретной сферой. Может, вас больше привлекает разработка мобильных приложений, чем сайтов, или вы хотите создавать компьютерные игры.
Программирование применяют практически в любой сфере, поэтому сложно перечислить все варианты. Можно выделить основные направления разработки в зависимости от назначения программного обеспечения и устройств, для которых оно создается. В некоторых из них используют несколько языков программирования, а где-то превалирует конкретный набор технологий.
Системное и встроенное ПО
Чтобы написать драйвер, операционную систему или работать над устройствами умного дома, нужно изучать системное программирование. В основном в нем используют низкоуровневые языки, которые обращаются практически напрямую к компьютерному железу. Чаще всего – это C++, C.
Веб-приложения
Приложения, которые вы открываете через браузер, от соцсетей до интернет-магазинов, – пишут веб-программисты. Frontend-разработчики создают пользовательскую часть на языках JavaScript, HTML и CSS. Backend-разработчики отвечают за серверную часть и реализуют задуманную логику приложения. Среди самых распространенных языков для back-end – PHP, Python, С#, Ruby, Java, Go, Perl. Есть программисты, которые знают технологии для обеих частей приложения, – их называют fullstack-разработчиками.
Приложения для мобильных устройств
Мобильные устройства – это не только смартфоны и планшеты, а также носимая электроника. Но в разработке доминируют две операционные системы – Android и iOS. Для первой обычно используют языки – Objective-C и Swift, а для второй – Java и Kotlin. Также можно разрабатывать кроссплатформенные мобильные приложения, которые подходят для Android и iOS. Для этого нужно изучать специальные платформы, например, Cordova, Xamarin, Flutter.
Десктопные приложения
Microsoft Word, Excel – всем известные примеры десктопных приложений, которые работают без интернета за счет ресурсов операционной системы. Сегодня выпускают больше продуктов для работы в браузерах и на мобильных устройствах. Но в некоторых сферах десктоп-приложения по-прежнему актуальны и востребованы. Как правило, сложное научное программное обеспечение, инструменты для профессиональной обработки видео и аудио, многие компьютерные игры разрабатываются именно для десктопов. Для этого направления можно рассматривать языки Swift, C#, C, C++, Python, Ruby, а также JavaFX.
Когда вы определились со сферой применения языка, важно учитывать его перспективы на рынке труда. Если он востребован, то будет больше вакансий, а значит, и шансов быстрее устроиться на первую работу. Также популярность языка показывает, что есть активное комьюнити разработчиков, которые заинтересованы в его развитии и поддержке.
Cуществуют различные рейтинги, оценивающие популярность технологий программирования. Например, каждый месяц обновляется индекс TIOBE – список языков, которые чаще всего упоминаются в поисковых запросах. Топ-5 обычно делят C, Python, Java, C++, С#.
Рейтинг RedMonk формируется на основе данных из крупнейших сообществ разработчиков в GitHub и Stack Overflow. В августе 2021 года в Топ-5 вошли JavaScript, Python, Java, PHP, CSS.
В 2021 году сообщество Stack Overflow выпустило большое исследование Developer Survey, для которого опросили более 83 тысяч респондентов из 181 страны. Оказалось, что сами программисты больше всего любят язык Rust, а СOBOL считают наиболее пугающим.
В исследовании есть данные, что самые высокие зарплаты у программистов, которые пишут на Clojure, F#, Elixir, Erlang, Perl, Ruby, Scala, Rust, Go, LISP. Получается, что популярные технологии вовсе не самые высокооплачиваемые. Топ-5 из перечисленных языков применяют в узких сферах, и в целом спрос на таких программистов ниже, чем в веб- или мобильной разработке. Скорее всего, именно нехватка разработчиков и повышает конкуренцию за них и уровень зарплаты.
Между популярными и самыми высокооплачиваемыми языками не такая значительная разница в оплате, чтобы делать выбор исключительно из-за этого критерия. Как правило, программист зарабатывает больше с опытом, а на старте карьеры независимо от языка зарплаты будут примерно одинаковые.
Освоить программирование можно с любым бэкграундом, как техническим, так и гуманитарным. Но одним будет достаточно самостоятельного изучения, а кому-то больше подойдет обучение на курсах с ментором. Стоит проверить, какие есть варианты обучения по выбранному языку, считает Полина:
Хотя сейчас не сложно найти онлайн любой курс, мне кажется, что офлайн обучение будет более эффективным. Также рекомендую поискать в своем городе инкубаторы для разработчиков, где есть постоянная поддержка от менторов и можно оперативно получить помощь более опытных коллег.
Популярные языки, вроде, Java, Python, PHP в целом похожи. Чтобы изучить такой язык программирования и стать junior-разработчиком, уйдет около года. Большинство курсов рассчитано примерно на этот срок. Можно немного ускорить обучение, если ежедневно уделять программированию пару часов и перейти от теории к практике, начать самостоятельно делать какие-то проекты, хотя бы для личных целей.
Во время работы программисту понадобится не только сам язык, но и целая экосистема технологий. И после изучения основ лучше уделить время освоению фреймворков, библиотек, баз данных и других инструментов, говорит Евгений Паднюк – Senior PHP-разработчик:
Само по себе знание программирования никаких бенефитов не несет. Зная только язык программирования и больше ничего в экосистеме, ты не можешь что-то разработать. Ценится именно опыт работы со сторонними сервисами и интеграция их внутрь приложения.
На старте обучения можно попробовать разобраться в нескольких языках, чтобы выбрать для себя один. Но изучать параллельно несколько не стоит. Это не повысит шансы найти работу. Разработчиков ценят за актуальные и прикладные знания в своем стеке, а обширный технический кругозор приходит только с опытом.
Практикующим программистам проще выучить новый язык. Евгений рассказывает, что его знакомые, которые меняли язык или изучали еще один, руководствовались желанием развиваться в новом направлении. Он и сам сейчас углубляется в Python:
Я не собираюсь уходить со своего стека технологий, а хочу развиваться в двух направлениях. Так как Python – основной язык для таких хайповых направлений, как машинное обучение, data science, то вокруг него появилось большое комьюнити разработчиков. Они делают много проектов, различных инструментов, чтобы облегчить себе работу, и выкладывают их в открытый доступ. Благодаря этому язык развивается и в то же время становится более доступным для других.
Евгений говорит, что обычно переход с одного языка на другой сопровождается уменьшением в зарплате. Это связано с тем, что у программиста не будет опыта работы над коммерческими проектами в новом стеке, и ему придется претендовать на более низкую позицию, например, не senior, а middle или junior-разработчика. Без потери в деньгах такой переход возможен внутри одной компании, когда на проекте получается использовать обе технологии, чтобы прокачать навыки и получить опыт.
Кажется, что выбор первого языка программирования слишком ответственный шаг. Что если вы потратите год на изучение, а в итоге разочаруетесь в выборе? На самом деле, какой бы язык вы не выбрали, главное, что вы начнете изучать программирование. А если со временем вы и захотите сменить специализацию, то с опытом коммерческой разработки вам будет гораздо легче это сделать.