Навыки .NET-разработчика

Уверен, что разработчики часто задаются вопросом, какие их профессиональные навыки компании ценят больше всего. К примеру, при смене работы или, когда внезапно обнаруживают, что работают в компании так давно, что окружающий мир, скорее всего, ушел далеко вперед.Этой публикацией я начинаю цикл аналитических статей по анализу необходимых и востребованных навыков для различных специализаций на российском и зарубежном IT-рынке.

Содержание

Как родилось это исследование? Участвуя в подборе как начинающих, так и опытных разработчиков, постепенно стал замечать, что многие соискатели не обладают основными необходимыми навыками. И речь не про специфику конкретной предметной области, а про основные знания разработки приложений на платформе .NET. Такие собеседования обычно завершаются обсуждением с коллегами за чашкой чая самых острых моментов собеседования кандидата. Но все же интереснее разобраться, почему разработчики не осваивают те или иные навыки, несмотря на достаточный стаж работы, и каким образом можно построить развитие на их месте?

Итак, представим себя на месте начинающего разработчика Васи. 2 года работы программистом позволили Василию узнать основы .NET Framework, научиться работать с SQL Server и даже почитать про устройство сборщика мусора. Базовые знания и навыки, позволяющие создавать .NET-приложения, на месте — чем не .NET-разработчик? Но периодически Василий думает, что пора бы уже двигаться дальше, не всегда же оставаться Junior-разработчиком. Как дальше расти? Какие есть варианты? Василий смотрит на карьеру своих старших коллег и в его голову приходит самый простой вариант: буду сидеть на своем месте работы лет 5, активно участвуя в проектах — и тогда, скорее всего, меня сделают Senior-разработчиком или может, дай бог, архитектором. Но внутренний голос не дает покоя Васе: может не все так просто, ведь ведущий разработчик и архитектор обладают какими-то особенными навыками, которые их выделяют среди остальных разработчиков — может нужно разобраться с тем, что это за навыки, и что нужно сделать, чтобы их развить в себе?

Какие варианты есть у Васи?

Вполне логично поискать информацию о том, какие навыки сейчас актуальны в IT и как их прокачать на каком-нибудь профильном Интернет-ресурсе. Что сразу приходит в голову: Хабрахабр, RSDN, SQL.ru? Но нет, эти ресурсы скорее расширяют наш кругозор, чем дают нам информацию о том, какие навыки сейчас востребованы. Есть и другие ресурсы, которые посвящены обучению навыкам, к примеру: Pluralsight и Coursera — если бы Вася точно знал, что он хочет изучить, эти ресурсы помогли бы ему. И, конечно, не стоит забывать про профессиональные конференции. Они также полезны как для расширения кругозора, так и развития конкретных навыков, но все равно не могут ответить на вопрос Василия: в каком направлении ему развиваться? Итого, мы имеем множество ресурсов, которые позволяют прокачать те или иные навыки, но, к сожалению, не дают ответа на вопросы: в каком русле развиваться и какой набор навыков развивать? Вспомните, как вы отвечали на эти вопросы: интуитивно?

a9ad6a7b586b4f1faf19eabe95958276.png Вот так и все мы оказываемся перед сложным выбором направления развития. Некоторым из нас везет с опытным руководителем или коллегой-ментором, которые помогают подняться на ступеньку выше или подсказывают направление развития. Но большинство оказывается наедине с этой проблемой.

06a46bae46dc4e34a32253a36d4b277c.jpg Востребованные навыки в вакансиях работодателейПроблема выбора людьми направления развития не давала мне покоя долгое время. И вот, однажды, когда мы с друзьями сидели в одном из московских пабов, я решил воспользоваться коллективным разумом с элементами хмельного допинга. И после очередной кружки эля нам пришла идея: навыки, которые необходимо развивать, должны быть востребованы рынком труда, поэтому портрет востребованного разработчика или архитектора должен иметь какое-то отражение в вакансиях работодателей.

В наше время существует огромное количество публичных ресурсов, на которых работодатели размещают вакансии, обозначая требования к соискателям: конкретный перечень требуемых знаний и навыков. Так за чем же тогда дело встало? Нужно просто проанализировать эту базу и в результате у нас, по идее, будет ответ на наш вопрос. В качестве источника информации по вакансиям сразу же был выбран HeadHunter, как наиболее популярный ресурс для размещения вакансий IT-компаний. Мы ввели в поисковую строку запрос .net разработчик и увидели нескольких сотен результатов. В этот момент, честно говоря, наш пыл угас: объем ручного труда превысил степень нашего энтузиазма.

f6cbb13dcf614bec94f899d72d35be38.png Конечно, я пытался найти готовые обзоры и аналитику по требуемым работодателям навыкам, но, увы, ничего полезного не нашлось, кроме различной аналитики по географическому распределению зарплат и востребованности конкретных языков программирования.

Но энтузиазм не угасал, поэтому, будучи заядлым разработчиком, я написал небольшую программу, которая позволила автоматизировать сбор информации по вакансиям HeadHunter и получить необходимую статистику.

Рейтинг востребованности навыковВыборка для анализа составила 300 актуальных вакансий. Из описания каждой вакансии был извлечен перечень требуемых навыков, и по каждому из полученных навыков была собрана следующая статистика:

Количество упоминаний навыка в анализируемых вакансиях, и, соответственно, процентное соотношение количества упоминаний навыка в вакансиях и общего количества рассмотренных вакансий. По сути, этот показатель и считается уровнем востребованности или популярности навыка. Средний уровень заработной платы среди всех вакансий, в которых упоминался этот навык. Все полученные навыки сгруппированы в три категории: hard skills, soft skills и technology — чтобы не сравнивать навыки между этими категориями, так как это сравнение выглядело бы странным и бесполезным.В итоговый рейтинг попали 10 популярных навыков по каждой из трех категорий.

Рейтинг технологий fbb7a2b338bf487481377654a27303ca.png В технологиях с огромным отрывом побеждает 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 упоминались в вакансиях, но редко, а потому не попали в топ-лист).

Рейтинг профессиональных навыков be703c656bc34a5e8a40b295aae572c1.png По-прежнему у нас наиболее востребован навык объектно-ориентированного программирования. Владение ООП требуется в каждой четвертой вакансии.

Меня немного удивило, что после навыка ООП сразу же идет навык анализа требований. Сомневаюсь, что работодатели подразумевают именно написание требований, скорее всего, от разработчика требуется активное участие в процессе анализа требований в том или ином виде. Тем не менее, видна тенденция того, что от разработчика требуют больше, чем просто написание кода.

Далее идут достаточно обыденные навыки: работа с системами контроля версий, проектирование архитектуры и шаблоны проектирования — эти навыки требуются в каждой четвертой вакансии.

Стоит также заметить, что навык «архитектура высоконагруженных систем» прорывается уже в топ 10 навыков, что несомненно связано с существующей общеотраслевой тенденцией. При этом вакансии, в которых упоминается данный навык, в среднем имеют самый большой уровень заработной платы — 130 тыс. руб.

Рейтинг общих компетенций 3da552c4ecf642f99afb102437b97409.png Вряд ли для вас будет откровением, что среди soft skills самый популярный навык — это знание английского языка на уровне чтения технической документации. Этот навык требуется в каждой третьей вакансии.

Второй по популярности навык — командная работа, который требуется в каждой четвертой вакансии. Конечно же, в топ 10 попали такие навыки как самостоятельность, ответственность и коммуникативные навыки. И завершает список навык «умения излагать свои мысли»: если верить статистике, то среди 25 разработчиков достаточно всего одного, который умеет правильно излагать свои мысли — остальным совсем не обязательно.

Самый высокооплачиваемый навык, что достаточно ожидаемо — разговорный и письменный английский. Средний уровень оплаты в вакансиях, где он упоминается — 135 тыс. руб.

Востребованный .NET-разработчикТак кто же он, востребованный и высокооплачиваемый .NET-разработчик, на которого нам стоит равняться?

a339e670cc784561b6465e984c8a8b60.png Судя по статистике, портрет такого разработчика следующий.

Разработчик ASP.NET MVC, который «на ты» с SQL Server и Transact-SQL, владеющий стеком веб-технологий (HTML, CSS, JavaScript, AJAX и jQuery), умеющий создавать и использовать WCF-сервисы, ну, и конечно, умеющий преобразовывать данные в формате XML.

С другой стороны, он должен быть гуру объектно-ориентированного программирования, при этом немного увлекаться анализом требований, конечно же, проектировать архитектуру приложений, в идеале — высоконагруженных.

Читать, писать и разговаривать на английском, быть самостоятельным и ответственным командным игроком. Ну, и не брезговать общением с коллегами.

Продолжение следует…В следующей статье я проведу аналогичный анализ по зарубежному рынку вакансий: какие навыки требуются от .NET-разработчика «за бугром».

Хочу услышать ваше мнение о том, по каким специализациям будет интересно увидеть подобную аналитику, и действительно ли данная статистика помогает нам найти ответ на вопрос, какие навыки нам необходимо развивать, или тема еще не закрыта?

© Habrahabr.ru