В 2017 год украинский IT-рынок продемонстрировал рост, количество занятых в отрасли увеличилось на 27%, согласно данным DOU. Но при этом количество открытых вакансий увеличилось на 50%. Рынку не хватает людей, — пишет AIN.UA.
Компании могут предлагать более высокую компенсацию и заманивать всяческими бонусами, но это лишь больше подогревает рынок. Еще один выход из ситуации — работа с профильными вузами и курсами. Но, как правило, квалификация их выпускников не позволяет сразу брать людей на серьезные проекты.
Есть третий источников кадров для конкретных проектов компании — разработчики и технические специалисты с опытом, работающие в другой сфере или технологии.
Языков программирования — десятки, а парадигм разработки выделяют всего шесть (императивное, декларативное, структурное, функциональное, логическое и объектно-ориентированное).
Поэтому разработчику, который уже знает одну из технологий, перейти на другую из той же парадигмы достаточно просто. Сменить парадигму сложнее, а выучить программирование как дисциплину с нуля — еще более непростая задача.
Поэтому переквалификация специалиста приносит пользу и компании, и разработчику. Первый получает хорошего программиста на открытый проект. Последнему такой шаг приносит интересные задачи в новой сфере, что является вторым по важности фактором выбора работы для большинства украинских IT-специалистов.
За какие языки платят больше?
Ключевым фактором для выбора работы все-таки является зарплата. Если взглянуть на графики того, как менялась компенсация за последние 7 лет для разных технологий у Intermediate- и Junior-разработчиков (они больше склонны сменить язык), то за последний год ситуация выровнялась.
По данным DOU на декабрь 2017 года, начинающие программисты в большинстве технологий (Java, JavaScript, C#/.NET, C++, Python, Ruby/Rails, Objective-C) получают от $600 до $700 в месяц. Выбивается из группы только PHP, где компенсация последний год колеблется на уровне $450.
Для Middle-разработчиков ситуация немного другая. Явными лидерами выглядят C++ и Ruby, которые состоянием на прошлый декабрь закрепились на отметке в $2000 в месяц. Далее идет плотная группа из JavaScript, Python, C#/.NET, Objective-C и Java — от $1700 до $1815 в месяц. PHP отстает и тут — разработчику среднего уровня в обычно платят $1400.
Вне зависимости от уровня разработчика, оплата для разных языков программирования в последние годы достаточно стабильна. Устойчиво рос в 2016-2017 году только JavaScript, комьюнити которого активно развивается. На этой технологии и остановимся подробнее.
JavaScript vs другие технологии
При выборе языка программирования нужно также разобраться, что именно человеку интересно создавать. JavaScript начинался исключительно как скриптовый язык со слабой типизацией. Область его применения сперва заканчивалась на работе с визуальными эффектами в браузере. Но язык сумел выйти за пределы UI и стал активно развиваться. В первую очередь этому способствует огромное сообщество разработчиков и новых идей, которые они привносят.
В первой области специализации — front-end-разработке — JavaScript стал единственным и неоспоримым лидером. Именно он превратил веб-страницы в динамичные, постоянно изменяющиеся ресурсы.
Back-end
Back-end — работа с данными пользователей, которая происходит за кулисами веб-страниц, более конкурентная среда. Хотя JavaScript здесь занимает ключевые позиции благодаря платформе Node.js. Ее появление в 2009 году вывело JS за рамки браузера, превратив в язык общего пользования с растущим сообществом разработчиков.
Конкуренцию в back-end ему могут составить прежде всего Ruby (on Rails), .NET (ASP), PHP (Laravel), Python (Django) и Java. Каждый из них имеет свои преимущества.
Так PHP используют основные мировые CMS, включая WordPress, Drupal и Joomla. Но трудно назвать действительно крупный проект, построенный на этом языке.
На Ruby on Rails и Python Django напротив работают многие крупные ресурсы. Node.js, несмотря на относительную молодость фреймворка, сумел переманить на свою сторону некоторых крупных пользователей Ruby on Rails.
Python, например, хорош тем, что это основной язык для аналитики данных, big data и научного сообщества, что дает большое преимущество в интеграции различных систем. Ruby on Rails — гибкий и удобный, имеет согласованную структуру и методологию, а логику приложения легко выразить интуитивно. Но в сравнении с Node.js он фантастически медленный.
Большой плюс Node.js — скорость разработки и низкий порог вхождения. Если вы работали с RoR, то начать писать на Express.js под Node совсем не трудно. Node.js, среди прочего, позволяет использовать один язык как со стороны клиента, так и сервера. Это серьезно изменило рынок разработки и превратило единичных Full-Stack разработчиков в достаточно многочисленный вид.
Мобильные приложения
JavaScript хорошо прижился и в среде мобильной разработки. Доля рынка гибридных приложений, где в облегченном браузере (WebView) отрабатывает JavaScript, последние два года растет. По данным опроса Ionic за 2017 год, 32,7% разработчиков в ближайшие два года полностью откажутся от разработки нативных приложений в пользу гибридных. Вдобавок, два года назад 20% опрошенных программистов использовали нативные языки и инструменты Android и iOS, но к прошлому году эта цифра упала всего до 2,9%.
Такие тенденции имеют простое объяснение. При гибридном подходе, один раз написав код, можно получить приложение стабильно работающее на большинстве популярных платформ (iOS, Android). Хотя некоторые доработки все же потребуются, такой подход более универсален, чем разработка нативных приложений под разные платформы.
Альтернативой гибридным приложениям выступает фреймворк React Native, разработанный Facebook. Он позволяет использовать JavaScript и для разработки нативных Android- и iOS-приложений. Хотя можно работать с «родными» Java и Kotlin для разработки под Android и Objective-C и Swift, если нужно приложение для iOS.
Основное преимущество React Native для создания мобильных приложений в том, что разработчику не нужно писать два отдельных приложения на разных языках. Одну и ту же базу кода можно использовать для обоих систем. При этом фреймворк даже подстраивает графические элементы под платформу.
Помимо этого, простое мобильное приложение часто можно разработать быстрее с помощью React, чем на родном языке платформы. А большинство программистов, сталкивающихся с веб-разработкой, смогут легко разобраться в React Native, поскольку это все еще JavaScript.
С другой стороны, использование родных для iOS или Android языков, также имеет свои преимущества. В нативной среде разработки есть прямой доступ ко всем API и функциональности платформы без дополнительных ограничений или зависимостей. Android Studio или xCode также дают возможность использовать множество сторонних библиотек, а все доступные языки являются строго типизированными, что приводит к меньшему количеству ошибок. Наконец, в долгосрочной перспективе лучше все-таки использовать родной язык и среду разработки.
Сила JavaScript — сообщество
JavaScript — язык, который стремительно набрал популярность. Уже почти 10 лет он уверенно растет и, по данным опроса разработчиков на StackOverflow, в 2013 году стал наиболее популярной технологией в мире, сместив с первого места Java. С тех пор JavaScript только наращивает отрыв. По данным индекса TIOBE на февраль 2018 года он занимает восьмое место по популярности и уже долгие годы находится в десятке самых востребованных технологий.
Фреймворки JS, очевидно, тоже на пике популярности. Две верхние строчки рейтинга StackOverflow за 2017 год занимают Node.js и AngularJS. React занимает четвертое место, уступая .NET Core, но разработчики называют его любимой технологией для работы.
В Украине JavaScript тоже среди лидеров — c 2012 года его популярность стабильно росла и по состоянию на январь 2018 года, по данным DOU, он занимает второе место, уступая только Java. Что немаловажно, JS среди лидеров при ответе на вопрос: «Какой язык вы собираетесь учить в следующем году». Значит технология испытывает постоянный приток новых специалистов.
Все это помогает JavaScript иметь одно из наиболее активных сообществ. В Украине по JS и различным его фреймворкам постоянно проходят комьюнити-митапы и, все чаще, большие конференции. Регулярные встречи позволяют делиться опытом зрелым специалистам и становятся точкой входа в сообщества для новичков.
В Киеве, где сосредоточено наибольшее количество разработчиков, есть сразу несколько регулярных митапов: KyivJS, React Kyiv, NodeUA, AngularKyiv и еженедельный неформальный BeerJS. В общей сложности за этими митапами следят несколько тысяч человек.
Свои сообщества есть и в большинстве областных центров: LvivJS, KharkivJS, OdessaJS, ChernivtsiJS. За последние два года также проходило много комьюнити-конференций в маленьких городах.
Все эти сообщества развиваются энтузиастами не на коммерческой основе и в последние пару лет испытывают подъем активности. Кроме того, проводятся и крупные коммерческие конференции вроде FrameworksDay и JSFest.
Много общения также происходит онлайн. Есть публичный чат Frontend-ua в Gitter, где помогут со всем, что касается frond-end. BeerJS общается в Telegram-группе. За всеми тематическими событиями можно следить на DOU.
Комьюнити-встречи служат точкой входа в сообщество для новичков JavaScript. «Бесплатно, не ходя на курсы, можно получить очень много в комьюнити — посещая митапы, спрашивая у людей, общаясь. Специалисты с опытом могут посоветовать, что и где учить по конкретной технологии, куда пойти на работу, как проходить собеседования и так далее. У нас были примеры, когда новички находили себе знакомых, которые становились их менторами и помогали им развиваться. Главное — найти контакт с нужным человеком», — рассказывает соорганизатор KyivJS Сергей Фролов.
С чего начать программировать: JS и другие языки
JavaScript относится к языкам с динамической типизацией, что упрощает его изучение: можно быстро создать приложение с нуля, на начальных этапах он интуитивно понятен и не ставит жестких правил.
Динамические языки обычно высокоуровневые, это позволяет не тратить время на исправление деталей в коде и сосредоточить внимание на изучении концепций программирования.
Недостатки JavaScript лежат в той же плоскости, что и преимущества. Как уже отмечалось, этот язык слабо типизирован и оставляет гораздо больше пространства для ошибок, которые можно обнаружить только запустив программу. Решением этой проблемы может стать TypeScript, разработанный Microsoft. Этот скриптовый язык строго типизирован, но при этом компилируется во все тот же JavaScript. Для опытных программистов, желающих попробовать JS, но которых отпугивает его некая хаотичность и непредсказуемость, TypeScript может стать неплохой переходной ступенью.
В легкости изучения конкуренцию JavaScript могут составить другие динамические языки. Прежде всего это касается Python. Он обладает простым синтаксисом, большим набором библиотек и быстро позволяет включиться в создание программного обеспечения. Его используют для разработки десктоп- и веб-приложений (через фреймворк Django). Кроме того, это наиболее популярный язык, который используют для вводных курсов крупнейшие университеты США.
Еще одним конкурентов JavaScript в качестве первого языка можно назвать Ruby. Это также высокоуровневый язык общего применения. Наглядней всего его простоту можно увидеть исходя из кода программы «Hello, world!», который выводит на экран аналогичную надпись. Для Ruby код занимает одну строчку:
[ruby]puts ‘Hello, world!'[/ruby]
Философия языка состоит в том, чтобы быть как можно дружелюбнее для людей, а не для машин.
Книги и курсы по JavaScript
Учитывая размеры сообщества и постоянное развитие технологии, для JavaScript уже существует множество книг, онлайн-курсов и тредов на Stack Overflow.
Официальная документация
- JavaScript (Vanilla JS) доступна на сайте Mozilla.
- ReactJS на сайте React/Facebook.
- Node.js на сайте Node.js Foundation.
- Angular на сайте Angular/Google.
Книги
- Выразительный JavaScript (Eloquent JavaScript). Распространяется бесплатно и доступна на Github вместе с примерами и задачами.
- Серия «Вы не знаете JavaScript» (You Don’t Know JavaScript) из 6 книг. Бесплатно доступна на Github.
- Learning JavaScript Design Patterns Эдди Османи,
опубликована издательством O’Reilly.
Курсы
Основные онлайн-платформы массовых онлайн-курсов предлагают множество вариантов изучения JavaScript. Более десятка курсов разного уровня по JavaScript и его различным фреймворкам можно найти на Coursera, Udacity и edX. Можно также воспользоваться ресурсами вроде freeCodeCamp, который позволяет учиться и параллельно работать над реальными проектами для неприбыльных организаций. Много советов по обучению и ответов на распространенные вопросы можно найти на StackOverflow, где #JavaScript — наиболее популярные тэг.
Переобучение на JavaScript внутри компании: кейс Dev-Pro
У большинства задач с точки зрения разработки может быть множество решений. Хорошо, когда разработчик владеет несколькими технологиями — это позволяет найти оптимальный набор инструментов для решения конкретных проблем. В IT-компании Dev-Pro считают, что разработчик Intermediate-уровня, специализирующийся на JavaScript, ничем не отличается от программиста Intermediate-уровня, работающего с PHP, Python или Java.
Именно поэтому в компании решили организовать внутреннюю программу переобучения. Это позволяет разработчикам опробовать другой язык, получить новый опыт и работать с актуальными технологиями. Акцент на JavaScript в Dev-Pro делают прежде всего благодаря быстрому развитию языка, растущему комьюнити и низкому порогу входа. Это также выразительный язык, который позволяет использовать разные парадигмы программирования.
До Dev-Pro я проработал PHP-разработчиком четыре года. Затем узнал об образовательной инициативе компании по переквалификации специалистов. Мне стало интересно, как проходят курсы, какая мотивация компании. С моей стороны, сменить backend на frontend было тем еще челленджем, поскольку технологии практически мне незнакомые, но очень популярные и перспективные. Еще важную роль сыграл текущий, на тот момент, проект и устаревшие технологии, которые там использовались.
Сергей Бобров, ранее PHP-разработчик
Процесс переобучения занимает месяц. При этом компания оплачивает это время так, будто программист уже работает на проекте. Участники, прежде чем попасть в программу, проходят строгий отбор и должны иметь определенный уровень навыков. Прошедших затем ждет 18 дней лекций (по 2 часа) и выполнения домашних заданий (по 6 часов каждый день).
Такой формат курса дает возможность быстро и глубоко осваивать материал. А проверка домашних заданий позволяет валидировать полученные знания и навыки. Плюс, в начале каждой лекции разбирается ранее пройденный материал, основываясь на возникших вопросах и недопонимании.
Александр Клещ, ранее ASP.NET / PHP разработчик
Сперва студенты получают базовые знания о технологии. Ключевая особенность программы состоит в том, что задания полностью адаптируются под коммерческий проект, над которым впоследствии предстоит работать участникам курса. К студентам прикрепляют одного-двух экспертов. Они комментируют написанный код и дают рекомендации. Это позволяет быстро решать возникающие у разработчика вопросы.
После прохождения лекционной части группа разрабатывает тестовый проект, который позволяет лучше коммуницировать в команде и интегрировать наработки каждого в единый продукт.
Месяца активных занятий вполне хватило, чтобы влиться в технологию. Главное, что на курсах мы делали настоящий проект — сайт для питомника «Спасение животных Харьков». Он, конечно, ученический, но выполнен по реальному flow, с использованием Agile. Так можно было не только познакомиться с фреймворком, но и с принципами работы в компании.
Игорь Сыров, ранее верстальщик, самостоятельно изучал Angular
Благодаря строгому отбору, высоким требованиям и мотивированным студентам, 88% разработчиков, завершивших курс переквалификации, успешно влились в реальные проекты компании. Сейчас они работают в командах, которые на 80% состоят из специалистов уровня Intermediate и Senior — это позволяет им быстрее адаптироваться к новой технологии и перенимать опыт.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]