net developer что это
Уверен, что разработчики часто задаются вопросом, какие их профессиональные навыки компании ценят больше всего. К примеру, при смене работы, или когда внезапно обнаруживают, что работают в компании так давно, что окружающий мир, скорее всего, ушел далеко вперед.
Этой публикацией я начинаю цикл аналитических статей по анализу необходимых и востребованных навыков для различных специализаций на российском и зарубежном IT-рынке.
Как родилось это исследование?
В каком направлении развиваться: какие навыки и как приобретать?
Василий смотрит на карьеру своих старших коллег и в его голову приходит самый простой вариант: буду сидеть на своем месте работы лет 5, активно участвуя в проектах – и тогда, скорее всего, меня сделают Senior-разработчиком или может, дай бог, архитектором. Но внутренний голос не дает покоя Васе: может не все так просто, ведь ведущий разработчик и архитектор обладают какими-то особенными навыками, которые их выделяют среди остальных разработчиков – может нужно разобраться с тем, что это за навыки, и что нужно сделать, чтобы их развить в себе?
Какие варианты есть у Васи?
Вполне логично поискать информацию о том, какие навыки сейчас актуальны в IT и как их прокачать на каком-нибудь профильном Интернет-ресурсе. Что сразу приходит в голову: Хабрахабр, RSDN, SQL.ru? Но нет, эти ресурсы скорее расширяют наш кругозор, чем дают нам информацию о том, какие навыки сейчас востребованы. Есть и другие ресурсы, которые посвящены обучению навыкам, к примеру: Pluralsight и Coursera – если бы Вася точно знал, что он хочет изучить, эти ресурсы помогли бы ему. И, конечно, не стоит забывать про профессиональные конференции. Они также полезны как для расширения кругозора, так и развития конкретных навыков, но все равно не могут ответить на вопрос Василия: в каком направлении ему развиваться? Итого, мы имеем множество ресурсов, которые позволяют прокачать те или иные навыки, но, к сожалению, не дают ответа на вопросы: в каком русле развиваться и какой набор навыков развивать? Вспомните, как вы отвечали на эти вопросы: интуитивно?
Вот так и все мы оказываемся перед сложным выбором направления развития. Некоторым из нас везет с опытным руководителем или коллегой-ментором, которые помогают подняться на ступеньку выше или подсказывают направление развития. Но большинство оказывается наедине с этой проблемой.
Востребованные навыки в вакансиях работодателей
Проблема выбора людьми направления развития не давала мне покоя долгое время. И вот, однажды, когда мы с друзьями сидели в одном из московских пабов, я решил воспользоваться коллективным разумом с элементами хмельного допинга. И после очередной кружки эля нам пришла идея: навыки, которые необходимо развивать, должны быть востребованы рынком труда, поэтому портрет востребованного разработчика или архитектора должен иметь какое-то отражение в вакансиях работодателей.
Конечно, я пытался найти готовые обзоры и аналитику по требуемым работодателям навыкам, но, увы, ничего полезного не нашлось, кроме различной аналитики по географическому распределению зарплат и востребованности конкретных языков программирования.
Но энтузиазм не угасал, поэтому, будучи заядлым разработчиком, я написал небольшую программу, которая позволила автоматизировать сбор информации по вакансиям HeadHunter и получить необходимую статистику.
Рейтинг востребованности навыков
Выборка для анализа составила 300 актуальных вакансий. Из описания каждой вакансии был извлечен перечень требуемых навыков, и по каждому из полученных навыков была собрана следующая статистика:
В итоговый рейтинг попали 10 популярных навыков по каждой из трех категорий.
Рейтинг технологий
В технологиях с огромным отрывом побеждает ASP.NET MVC: требование владения данной технологией встречалось в 3 из 4-х вакансий. Мне, как бывшему desktop-разработчику, было откровением, что все технологии desktop UI проигрывают ASP.NET MVC в 6 раз, а в сумме WPF и Windows Forms проигрывают в 2,5 раза. Если верить статистике, судьба разработки настольных интерфейсов видится достаточно туманной.
Отметил я еще один интересный факт: WPF и Windows Forms имеют одинаковый уровень востребованности – примерно 15%. Сначала я подумал, что это связано с переводом приложений с устаревающей технологии Windows Forms на WPF, но, оказалось, что данные навыки требовались в одних и тех же вакансиях только в 2% случаев, то есть одни компании до сих пор используют Windows Forms, а другие компании уже применяют WPF при разработке своих приложений.
На втором месте по-прежнему остается «must have» навык работы с SQL Server и использования Transact-SQL в каждой второй вакансии. В трети вакансий требуется знание WCF, XML и XSLT. В каждой четвертой – LINQ. Ну, и завершает список – EF. У меня есть гипотеза о том, почему EF в нижней части списка, а SQL Server в верхней: рынок ORM до сих пор достаточно раздробленный – многие все еще продолжают собственные ORM писать, а также популярны альтернативные платформы с хорошей историей вроде NHibernate.
Если смотреть на статистику по уровню заработной платы, то наиболее высокооплачиваемыми вакансиями являются те, в которых упоминаются HTML, CSS, AJAX, jQuery и JavaScript (иные платформы JavaScript упоминались в вакансиях, но редко, а потому не попали в топ-лист).
Рейтинг профессиональных навыков
По-прежнему у нас наиболее востребован навык объектно-ориентированного программирования. Владение ООП требуется в каждой четвертой вакансии.
Меня немного удивило, что после навыка ООП сразу же идет навык анализа требований. Сомневаюсь, что работодатели подразумевают именно написание требований, скорее всего, от разработчика требуется активное участие в процессе анализа требований в том или ином виде. Тем не менее, видна тенденция того, что от разработчика требуют больше, чем просто написание кода.
Далее идут достаточно обыденные навыки: работа с системами контроля версий, проектирование архитектуры и шаблоны проектирования – эти навыки требуются в каждой четвертой вакансии.
Стоит также заметить, что навык «архитектура высоконагруженных систем» прорывается уже в топ 10 навыков, что несомненно связано с существующей общеотраслевой тенденцией. При этом вакансии, в которых упоминается данный навык, в среднем имеют самый большой уровень заработной платы – 130 тыс. руб.
Рейтинг общих компетенций
Вряд ли для вас будет откровением, что среди soft skills самый популярный навык – это знание английского языка на уровне чтения технической документации. Этот навык требуется в каждой третьей вакансии.
Второй по популярности навык – командная работа, который требуется в каждой четвертой вакансии. Конечно же, в топ 10 попали такие навыки как самостоятельность, ответственность и коммуникативные навыки. И завершает список навык «умения излагать свои мысли»: если верить статистике, то среди 25 разработчиков достаточно всего одного, который умеет правильно излагать свои мысли – остальным совсем не обязательно.
Самый высокооплачиваемый навык, что достаточно ожидаемо – разговорный и письменный английский. Средний уровень оплаты в вакансиях, где он упоминается – 135 тыс. руб.
Судя по статистике, портрет такого разработчика следующий.
Разработчик ASP.NET MVC, который «на ты» с SQL Server и Transact-SQL, владеющий стеком веб-технологий (HTML, CSS, JavaScript, AJAX и jQuery), умеющий создавать и использовать WCF-сервисы, ну, и конечно, умеющий преобразовывать данные в формате XML.
С другой стороны, он должен быть гуру объектно-ориентированного программирования, при этом немного увлекаться анализом требований, конечно же, проектировать архитектуру приложений, в идеале – высоконагруженных.
Читать, писать и разговаривать на английском, быть самостоятельным и ответственным командным игроком. Ну, и не брезговать общением с коллегами.
Продолжение следует…
Хочу услышать ваше мнение о том, по каким специализациям будет интересно увидеть подобную аналитику, и действительно ли данная статистика помогает нам найти ответ на вопрос, какие навыки нам необходимо развивать, или тема еще не закрыта?
Кто такой NET-разработчик?
О профессии NET-разработчика
.NET разработчик – кто это?
— Была создана согласованная объектно-ориентированная среда программирования, нацеленная на локальное сохранение и исполнение объектного кода, на локальное выполнение кода, который распределен в Интернете, либо на удаленное выполнение.
— Также была обеспечена и среда исполнения кода, которая минимизирует конфликты во время развертывания программного обеспечения и во время управления версиями.
— Кроме того, удалось обеспечить среду исполнения кода, которая гарантирует безопасное исполнение, в том числе это касается и кода, который создан неизвестным либо же не полностью доверенным изготовителем со стороны.
— Была обеспечена и среда исполнения кода, которая исключает проблемы с производительностью сред исполнения сценариев либо же интерпретируемого кода.
— Также обеспечены единые принципы в работе разработчиков различных типов приложений, вроде приложений Windows и веб-приложений.
В первую очередь ответ на данный вопрос определяется тем, в каком направлении разработки планируется работать. Но, безусловно, имеются и некоторые общие требования:
Во-вторых, необходимо иметь некоторые базовые знания в сфере программировании (представлять, что такое системы исчисления, базовые структуры данных и базовые алгоритмы);
Третий важный пункт – это знания баз данных, ведь абсолютно любые приложение либо сайт предполагают хранение информации, а также работу с ней;
Также нельзя не упомянуть про отдельные требования, касающиеся знания английского языка на таком уровне, которого будет достаточно для чтения документов и комментирования кода.
Отметим, что IT-специалисту начинающего уровня будет очень важно грамотно, максимально правильно составлять резюме, писать к нему сопроводительные письма и готовиться к прохождению собеседования. Всему этому разработчиков с NET учат на специализированных курсах компьютерной академии «Шаг».
Специальные требования к ASP.NET разработчикам:
— очень хорошо знать ASP.NET MVC;
— обладать уверенными знаниями MS SQL;
— владеть языками C#, JavaScript, T-SQL;
— иметь понимание LINQ, WCF, SOAP.
Специальные требования к разработчикам десктопных приложений:
— хорошо знать С#/.NET 4.0;
— обладать отличным знанием T-SQL, SQL Server 2012;
— иметь опыт работы с MS TFS;
— иметь знания, а также опыт работы с технологиями ADO.NET Entity FW.
Помимо данных базовых требований, у каждой компании есть и собственные, более специфические требования. Однако если вы знаете эти основы, вы сами далее уже легко сможете изучить те материалы, которые нужны вам будут для работы.
Уровень зарплат и востребованность специальности
Свыше десяти лет C# находится на лидирующих позициях в рейтингах языков программирования.
С чего начать: язык программирования С#
Надо решить, что именно вы хотите получить в итоге: создавать сайты, работать с их оформлением или же хочется решать нестандартные задачи и прописывать логику. Если вы выбрали второе, то вам нужен C#.
Теперь пора решить, на каком языке Back-end`а нужно работать. Лично я начал свой путь в IT с обучения языку С#.
Почему стоит выбрать обучение программированию на C#
Этот язык менее требователен к программисту
С первого взгляда можно подумать, что код на С# крайне схож с кодом на других С-подобных языках. Но, стоит сказать, что сложный код легче пишется и читается по сравнению с тем же С++, что может весьма хорошо помочь начинающему программисту выбирающему курсы программирования в Одессе.
Большое количество встроенных, готовых к работе, библиотек
Количество готовых библиотек С# весьма велико, и они имеют за собой большую историю, что означает, что они неплохо отлажены и оптимизированы. Также множество стандартных типов данных помогает практически всегда избежать библиотек, переопределяющих базовые типы.
Сборщик мусора
Создавать приложения на C# безопаснее, чем на С++, так как в нем присутствует сборщик мусора и нет необходимости следить за утечками памяти.
Удобство сборки проектовй
Сборка проектов на С# гораздо проще, хотя не стоит забывать, что это реализовано в угоду дополнительной гибкости.
Высокая скорость разработки на начальных этапах
C# позволяет на старте вести разработку в разы быстрее, благодаря вышеперечисленным преимуществам, что поможет получить прототип решения гораздо раньше.
Создавать приложения на C# безопаснее, чем на С++
Причины, по которым ранее разработчики уклонялись от программирования на С#, исчезли с появлением открытого исходного кода. Вот почему C# теперь также рекомендуют и для начинающих!
Подготовка к анализу
Предыдущий анализ потребовал практически вручную обработать 300 вакансий, что оказалось крайне трудоемкой и слишком рутинной работой. Поэтому сейчас у меня на руках не только результаты нового исследования, но и усовершенствованные инструменты! Я реализовал утилиту, при помощи которой текст вакансий загружается с целевого сайта, затем разбирается на отдельные слова и словосочетания, а затем по специальному словарю преобразуется в навыки. Предполагаю развивать утилиту и дальше, добавляя при необходимости новые адаптеры к различным сайтам вакансий, и обучая программу, помогая ей сопоставлять те или иные встречающиеся в вакансиях выражения навыкам.
Зарубежные вакансии я брал с популярных ресурсов Stack Overflow Careers и Monster.com.
Если вам захочется меня проверить и подготовить собственную аналитику, промежуточные «сырые» данные статистики вы найдете в Excel-файле: OneDrive/USA-net developer.xlsx.
Репетиция
Впервые о результатах этого исследования я рассказал на конференции SkillsWiki «.NET-разработчик глазами работодателей России и зарубежья». Тогда я и собрал первую обратную связь по моим выкладкам и выводам. В частности, слушателей заинтересовали результаты исследования, но они захотели получить больше различных срезов и выводов по приведенному сравнению между Россией и США. Кстати, меня также спрашивали про аналогичное исследование по менеджерам, одну из тем моих будущих исследований.
Что ж, я надеюсь не подвести и удовлетворить и ваше любопытство, начнем!
Рейтинг востребованных навыков
Как и ранее, первым делом ознакомимся с топ-10 самых популярных навыков по рынку труда. Для удобства восприятия в рейтинге все навыки разделены на 3 группы: технологии, профессиональные (hard) и общие компетенции (soft skills).
Рейтинг технологий
Как видим, различия в популярности технических навыков малозначительны, чего не скажешь о зарплате. В левой части по России зарплата указана в рублях в месяц, а в правой по США – в долларах в год, то есть ровно так, как и указывается в описании вакансий. Не спешите пересчитывать доход ASP.NET-разработчика США на наши рубли. Я уже это сделал за вас: получается около 380 000 рублей в месяц по текущему курсу валюты. А если серьезно, то прямое сравнение здесь не очень уместно. Во-первых, различное налоговое законодательство: например, в США выплаты могут составлять третью часть дохода. Во-вторых, для полноценного сравнения нужно учитывать уровень жизни в целом, а это уже отдельная большая тема. Поэтому предлагаю сравнивать зарплаты относительно друг друга только в рамках одной страны.
Вернемся к рейтингу востребованности (популярности) навыков. И все же в нем можно отметить небольшие расхождения:
Рейтинг профессиональных навыков
В требованиях к профессиональным навыкам отличия гораздо более яркие.
Во-первых, сразу бросается в глаза обилие требований к навыкам повышения качества не только программного кода, но и итогового продукта: в частности, навыки тестирования (не только автоматизированного, но и ручного), Unit-тестирования, TDD и Code Review. Все эти навыки крайне редко встречаются в требованиях работодателей к российским разработчикам. В США в целом в гораздо большей степени интегрированы разработка и тестирование, что можно видеть не только на примере этой статистики, но и по крупным корпорациям. Например, это новости прошлого года о крупных сокращениях тестировщиков в Microsoft по инициативе нового генерального директора Сатья Наделлы, который говорил об ответственности за качество приложений самих разработчиков.
Во-вторых, заметная роль отводится пониманию Agile-методологий и умению работать по этим принципам в командах. В США Agile перешел из разряда новомодных тенденций в рабочий инструмент.
Также у меня сложилось впечатление, что в США в меньшей степени уделяется внимание навыкам чтения чужого кода.
Рейтинг общих компетенций
В рейтинге общих навыков различия наиболее значимы. Вполне логично отсутствие востребованности в знании английского языка в США. Тем не менее, есть и содержательные отличия:
Интересные факты
Некоторые интересные выводы можно сделать только по статистике, которая скрывается под пиком айсберга популярных навыков.
Детализация по рынку США
Ниже представлены наиболее высокооплачиваемые комбинации навыков. В рейтинг попали 3 сочетания распространенных навыков, позволяющих найти вакансии с доходом в среднем 130 000$ в год.
Комбинация навыков | Описание |
---|---|
Design patterns, Multithreading, OOP, Software architecture, SQL Server, WCF, XML/XSLT | Наличие опыта построения архитектуры всего приложения, сервисов и базы данных. |
ASP.NET, Design patterns, HTML/JavaScript/CSS/JQuery/AJAX, Oracle, SQL Server, WCF, XML/XSLT | Опыт разработки ASP.NET-приложения, верстка Front-end, умение работать со службами и базами данных. |
IIS, Oracle, PL/SQL, Source control, TFS, Visual Studio, WCF | Опыт разработки и развертывания веб-служб, работа с базами данных, написание PL/SQL-процедур. |
В рейтинге самых популярных навыков по количеству упоминаний в вакансиях первое место уверенно занимает классическая связка ASP.NET, HTML/JavaScript/CSS/JQuery/AJAX, SQL Server/Transact-SQL. Она встречается сразу в 130 вакансиях (более 30%). Остальные комбинации навыков лишь дополняют ее в различных вариациях. Для сравнения наиболее популярная связка вместе с применением WPF: WPF, Design, Design patterns, SQL Server/Transact-SQL – упоминается лишь в 9 вакансиях (около 2%).
Например, можно заметить по первым графикам, что зарплаты ASP.NET и WPF-разработчика в США и России находятся примерно на одном уровне, но огромная разница в их популярности делает ASP.NET гораздо более ликвидным вложением в развитие нежели WPF.
При анализе результатов появилась гипотеза, что многие из навыков могут быть востребованы только в определенном зарплатном диапазоне и их востребованность с ростом зарплаты постепенно снижается или наоборот возрастает. Попробуем простроить график популярности навыков для каждого зарплатного предложения. Здесь и далее будем использовать технологические навыки, поскольку для остальных навыков статистика гораздо меньше и сложно проследить какие-либо корреляции.
Такой график сложно анализировать, поскольку по определенным зарплатным предложениям слишком мало вакансий, поэтому агрегируем данные по диапазонам зарплат, чтобы избежать провалов, и заодно уберем с графика отображение популярности навыков для максимальных и минимальных зарплат.
Уже гораздо лучше, но можно заметить, что многие графики похожи на нормальное распределение, как и график количества вакансий.
Поэтому прежде стоит проделать еще один шаг: преобразовать количество вакансий в процент вакансий, в которых навык встречается.
Поскольку сильных всплесков не наблюдается, разве что в диапазоне в 110 000 заметен сильный перекос в сторону применения WPF и XML/XSLT и снижения доли SQL Server и HTML-технологий, то стоит обратить внимание на линейный тренд.
Заметно, что есть навыки, требования к которым стабильны в любой ценовой категории – это ASP.NET и HTML/JavaScript/CSS. Есть группы навыков, спрос на которые снижается с ростом зарплаты: SQL Server/Transact-SQL, JavaScript frameworks и WPF. И навыки, набирающие популярность: WCF, Web Services, SOAP, XML/XSLT, IIS и совсем незначительно Source Control.
По графикам заметно, что в определенные моменты времени навыки набирают популярность или ее теряют, поэтому стоит также найти наиболее популярные навыки в каждом из диапазонов.
50 000-59 999$ | 60 000-69 999$ | 70 000-79 999$ | |||
---|---|---|---|---|---|
SQL Server/Transact-SQL | 82 | SQL Server/Transact-SQL | 60 | HTML/JavaScript/CSS/JQuery/AJAX | 68 |
ASP.NET | 82 | HTML/JavaScript/CSS/JQuery/AJAX | 55 | ASP.NET | 64 |
HTML/JavaScript/CSS/JQuery/AJAX | 73 | ASP.NET | 45 | SQL Server/Transact-SQL | 56 |
Visual Studio | 45 | SQL Server/Transact-SQL | 40 | XML/XSLT | 36 |
VB.NET | 36 | Web services | 30 | Web services | 20 |
Adobe Photoshop | 27 | XML/XSLT | 25 | Visual Studio | 20 |
PHP | 27 | Visual Studio | 20 | WPF | 20 |
JSON | 27 | JavaScript frameworks | 20 | VB.NET | 16 |
SQL Server Management Studio | 27 | subversion | 20 | WCF | 16 |
Adobe Creative Suite | 27 | VB.NET | 15 | Entity Framework | 16 |
80 000-89 999$ | 90 000-99 999$ | 100 000-109 999$ | |||
ASP.NET | 65 | ASP.NET | 77 | HTML/JavaScript/CSS/JQuery/AJAX | 71 |
SQL Server/Transact-SQL | 65 | SQL Server/Transact-SQL | 71 | SQL Server/Transact-SQL | 67 |
HTML/JavaScript/CSS/JQuery/AJAX | 54 | HTML/JavaScript/CSS/JQuery/AJAX | 58 | ASP.NET | 60 |
Web services | 32 | WCF | 31 | Web services | 29 |
XML/XSLT | 24 | Web services | 21 | Visual Studio | 24 |
WCF | 19 | XML/XSLT | 17 | WCF | 21 |
WPF | 14 | Entity Framework | 15 | XML/XSLT | 14 |
SOA | 14 | Visual Studio | 15 | mobile dev | 14 |
Entity Framework | 11 | VB.NET | 13 | SOAP | 12 |
SOAP | 11 | TFS | 13 | JSON | 12 |
110 000-119 999$ | 120 000-129 999$ | 130 000-139 999$ | |||
ASP.NET | 62 | SQL Server/Transact-SQL | 72 | HTML/JavaScript/CSS/JQuery/AJAX | 80 |
Visual Studio | 38 | HTML/JavaScript/CSS/JQuery/AJAX | 67 | ASP.NET | 80 |
SQL Server/Transact-SQL | 35 | ASP.NET | 61 | WCF | 40 |
XML/XSLT | 35 | WCF | 44 | SOAP | 40 |
Web services | 31 | Web services | 39 | Visual Studio | 40 |
WPF | 31 | SOAP | 22 | XML/XSLT | 40 |
HTML/JavaScript/CSS/JQuery/AJAX | 27 | SOA | 22 | TFS | 40 |
LINQ | 27 | Sharepoint | 22 | IIS | 40 |
SOAP | 23 | Orchard CMS | 17 | VB.NET | 40 |
HTTP/TCP | 23 | Visual Studio | 11 |
По этим данным видны следующие интересные моменты:
Заключение
В следующем обзоре будет рассмотрен Java-разработчик: данные уже подготовлены, было проанализировано порядка 20000 навыков – так что ждите статьи!
Послесловие
4 августа 2015 года
Коллеги, уважаемые, еще раз всех приветствую!
Ваши комментарии здесь, а также аналогичные обсуждения на других ресурсах подтолкнули меня написать небольшое дополнение к статье.
Как я увидел, по прочтению статьи многие сделали выводы, что это обзор от HR и потому он был сделан очень формально, без понимания специфики профессии и прочего, но при этом исследование претендует на объективность. Хочу развеять эти мифы.