что нужно знать net разработчик
Уверен, что разработчики часто задаются вопросом, какие их профессиональные навыки компании ценят больше всего. К примеру, при смене работы, или когда внезапно обнаруживают, что работают в компании так давно, что окружающий мир, скорее всего, ушел далеко вперед.
Этой публикацией я начинаю цикл аналитических статей по анализу необходимых и востребованных навыков для различных специализаций на российском и зарубежном 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#/.NET разработчик
Язык программирования C# (“си шарп”)
Это универсальный объектно-ориентированный язык, который является мощным инструментом создания программного обеспечения с широкой областью применения. При столь высокой функциональности он является достаточно несложным в изучении и отлично подойдет тем, кто собирается сделать первый шаг навстречу программированию.
Благодаря широкому спектру применения, С# является очень востребованным языком. Различные ресурсы по поиску работы предлагают большое количество вакансий, причем, как на крупные проекты с четко определенным консервативным стеком технологий, так и в компании, которые создают новый программный продукт с применением самых современных инструментов.
Тема связана со специальностями:
Алгоритмы и структуры данных
Изучив структуры данных, вы сможете управлять сложностью своих программ, делая их более доступными для понимания, а также разрабатывать высокопроизводительные программы, которые будут эффективно работать с памятью.
Знание алгоритмов позволит вам создавать сложные конструкции для эффективного решения широкого спектра задач.
Шаблоны проектирования
Structured Query Language — декларативный язык структурированных запросов, который создан для взаимодействия с базами данных. Особенность SQL состоит в том, что он лишь описывает необходимые компоненты и желаемые результаты, не указывая, как именно эти результаты должны быть получены.
ASP.NET
stack и heap, value type и reference type
reference type (пример class, interface) хранятся в heap
value type (пример int, struct, ссылки на инстансы reference type) хранятся в быстром stack
при присвоении (передачи в метод) value type копируются, reference type передаются по ссылке (см. ниже раздел struct)
struct
value type => при присвоении (передачи в метод) все поля и свойства копируются, не может быть null
если есть конструктор, в нем должны устанавливаться все поля и свойства
DateTime это struct, поэтому проверять поля типа DateTime на null бессмысленно:
Нельзя сделать структуру ссылающуюся на себя:
boxing / unboxing
string особенный тип
хранятся в heap как reference type, передаются в метод как reference type
из-за того, что строки immutable и при сравнении сравниваются их значения (стандартное поведение reference type сравнивать ссылки) строки по поведению похожи на value type
из-за immutable при склеивании длинных строк нужно использовать StringBuilder
const vs readonly
Программа после компиляции. Компилятор подставил значение const.
Фокус-покус с подкладыванием dll библиотеки, без перекомпиляции основного проекта:
Значение const в библиотеке отличается от используемого в основном проекте.
ref и out
ref и out позволяют передавать в метод ссылки на объекты, и для value type и для reference type
ref и out позволяют внутри метода использовать new и для class и для struct
out тоже что ref, только говорит о том что, метод обязательно пересоздаст переменную
Ковариантность
Термин встречается только при обсуждении generic-ов.
К каким коллизиям приводит метод Add в List:
Публичные методы Object
Про ToString и GetType спрашивать нечего.
GetHashCode
Соответственно, GetHashCode нельзя использовать для сравнения объектов (только как вспомогательную функцию).
GetHashCode нужен для быстрого поиска в хеш-таблицах. Такие объекты как HashSet и Dictionary используют в своей работе хеш-таблицы.
Если объект используется в качестве ключа в хеш-таблице, то значение его GetHashCode указывает на позицию в хеш-таблице. При этом на одной позиции может быть несколько разных элементов (у которых одинаковый GetHashCode).
Псевдокод поиска в хеш-таблице:
1. вначале ищем позицию в хеш-таблице
2. среди элементов этой позиции ищем элемент используя Equals
Два элемента в словаре с одинаковым GetHashCode:
События, делегаты
Finalizer
нельзя определить для struct
зачем может пригодиться переопределять finalizer: предпочтительней реализовать IDisposable. Встречаются идеи дублировать логику Dispose в finalizer, на случай если клиентский код не вызывал Dispose. Или вставлять в finalizer логирование времени жизни объекта для отладки.
throw vs «throw ex»
Garbage collector
Коротко. heap большая, но все же имеет ограниченный размер, нужно удалять неиспользуемые объекты. Этим занимается Garbage collector. Деление объектов на поколения нужно для следующего:
поэтому имеет смысл делать это не для всех объектов в heap
Asp.Net-разработчик: кто это, обязанности, зарплаты и как им стать в 2021 году. Обзор профессии.
Кто такой Asp Net разработчик?
ASP.NET-разработчик – это человек, который уверенно владеет SQL Server и Transact-SQL, владеющий стеком веб-технологий (HTML, CSS, JavaScript, AJAX и jQuery), умеющий создавать и использовать WCF-сервисы, ну, и конечно, умеющий преобразовывать данные в формате XML. С другой стороны, он должен быть гуру объектно-ориентированного программирования, при этом немного увлекаться анализом требований, проектировать архитектуру приложений, в идеале – высоконагруженных.
Что делают Asp Net разработчики и чем занимаются?
Обязанности на примере одной из вакансий:
Что должен знать и уметь Asp Net разработчик?
Требования к Asp Net разработчикам:
Востребованность и зарплаты Asp Net разработчиков
На сайте поиска работы в данный момент открыто 2 058 вакансий, с каждым месяцем спрос на Asp Net разработчиков растет.
Количество вакансий с указанной зарплатой Asp Net разработчика по всей России:
Вакансий с указанным уровнем дохода по Москве:
Вакансий с указанным уровнем дохода по Санкт-Петербургу:
Как стать Asp Net разработчиком и где учиться?
Варианты обучения для Asp Net разработчика с нуля:
Ниже сделали обзор 10+ лучших онлайн-курсов.
10+ лучших курсов для обучения Asp Net разработчика: подробный обзор
1 место. Курс «C# ASP.NET Core разработчик» — OTUS
Для кого этот курс?
Для C#-разработчиков с опытом от 2-3 лет, которые хотят углубиться в создание web-приложений, стать fullstack-специалистами.
Вы сможете создавать различные информационные системы, состоящие из сайтов, мобильных клиентов, телеграмм-ботов и т.д., используя фреймворк C# ASP.NET Core и смежные технологии, такие как ReactJS, Xamarin и другие. Фреймворк позволяет быстро разрабатывать сложный функционал и высоконагруженные системы, требовательные к производительности. Вы научитесь решать задачи бэкенда и фронтенда, а также получите необходимые навыки работы с базами данных, UI, бизнес-логикой, настройками безопасности.
Вы научитесь:
Программа обучения:
Модуль 1. Введение в ASP.NET Core и WebApi
Модуль 2. Разворачивание приложения в облаке
Модуль 3. Прокачиваем проект
Модуль 4. Микросервисная архитектура
Модуль 5. Frontend-технологии
Модуль 6. Работа с API
Модуль 7. Проектная работа
Выпускной проект — возможность закрепить навыки, наработанные в процессе обучения. Задача — разработать с нуля полнофункциональное ASP.NET Core приложение, распространяемое в виде docker-compose файла, использующее современные frontend-технологии (Razor или React.JS), REST API и Swagger с GraphQL/gRPC/SignalR на выбор, нестандартный DI-контейнер, собственный обработчик промежуточного слоя (Middleware) и работающее с базой данных через EntityFramework Core. Также, должна быть настроена автоматическая сборка CI на GitLab,
После обучения вы:
2 место. Курс «C# ASP.NET Core. Уровень 1» — GeekBrains
В курс входит как освоение самого ASP.NET Core, на С#, так и создание, и разработка баз данных на MS SQL. Основные технологии, которые вы изучите на этом курсе, это: ASP.NET Core, MS SQL, EntityFramework, EF Code First, Razor На курсе мы вместе создадим собственный интернет-магазин, с корзиной и формой регистрации, с полноценной базой данных. Этот курс вам поможет как создавать собственные сайты и проекты, так и устроиться на высокооплачиваемую работу.
Чему Вы научитесь:
Программа курса:
Что Вы получите:
3 место.Курс «Developing ASP.NET Core MVC Web Applications» — Microsoft
Приобретенные навыки:
Структура курса:
Модуль 1: Изучение ASP.NET Core MVC
Модуль 2: Проектирование веб-приложений ASP.NET Core MVC
Модуль 3: Настройка промежуточного программного обеспечения и служб в ASP.NET Core
Модуль 4: Разработка контроллеров
Модуль 5: Разработка представлений
Модуль 6: Разработка моделей
Модуль 7: Использование Entity Framework Core в ASP.NET Core
Модуль 8: Использование макетов, CSS и JavaScript в ASP.NET Core MVC
Модуль 9: Разработка на стороне клиента
Модуль 10: Тестирование и устранение неисправностей
Модуль 11: Управление безопасностью
Модуль 12: Производительность и коммуникация
Модуль 13: Реализация Web API
Модуль 14: Хостинг и Развертывание