Как стать .NET-разработчиком. План действий для начинающих
.NET — это платформа от Microsoft для создания программного обеспечения. Язык С#, используемый для работы с .NET, второй по популярности среди украинских разработчиков. Кроме того, в категории С#/.NET на DOU всегда открыто множество вакансий.
В рамках рубрики для начинающих «Код профессии» рассказываем о том, как изучить С#/.NET и найти первую работу. Для этого мы пообщались с опытными .NET-разработчиками Алексеем Краевым, Владимиром Вердышем и Андреем Губским и собрали их советы в один материал.
Что такое .NET
.NET — это платформа от Microsoft, которая существует с 2002 года. Основная цель ее создателей — это возможность создавать программы разных типов (прежде всего Web), которые могут выполняться на разных устройствах. Основа .NET — CLR, то есть Common Language Runtime, позволяющая отвлечься от конкретного языка программирования и выполнять код одинаково на всех платформах.
С 2016 года CLR становится кроссплатформенной, и .NET начинает движение в направлении того, какой мы знаем платформу сейчас — удобное средство для разработки приложений различного рода, которые аналогично Java могут запускаться и на Windows, и на Unix-based системах.
Согласно последнему зарплатному опросу, языком С#, используемым для работы с .NET, пишут 16,3% разработчиков в Украине. Он на втором месте по популярности использования, и в последние годы его доля растет.
В качестве первого языка С# указали 5,4% респондентов, что на четверть больше, чем в 2021 году.
Среди языков, которые предпочли бы разработчики, если бы была свобода выбора, С# на втором месте — 14,6%.

Согласно последнему опросу, медианная зарплата С#/.NET-разработчика составляет $2525, что соответствует медианной зарплате уровня Middle. Медианная зарплата Junior: $950; Senior: $4500. Зарплаты специалистов всех уровней несколько выросли по сравнению с прошлым опросом: у джуниоров на $50, у мидлов и сеньоров +$100.

А здесь можно посмотреть открытые вакансии в категории С#/.NET. На момент публикации статьи есть 218 вакансий.
Подходит ли .NET начинающим
По мнению опрошенных нами разработчиков, C# подходит и как первый язык программирования для начинающих, и как дополнительный для тех, кто хочет перейти с другого языка. C# — это язык со статической типизацией, позволяющий сосредоточиться на изучении концепций объектно-ориентированного программирования, абстракций, алгоритмов, немедленного погружения в низкоуровневые детали реализации. При этом если в будущем возникнет необходимость пойти на более низкий уровень (работа с памятью, многопоточность и т.д.), язык и платформа предоставят удобные возможности для этого.
Для удобного изучения C# вполне хватит бесплатных инструментов типа связки VS Code + консоль или VS Community. Из небольших проблем во время обучения можно выделить разве то, что некоторые ресурсы до сих пор обучают устаревшим конструкциям языка, которые уже практически не используют вроде delegate (все применяют уже готовые Func<> или Action<>) и event (утратил свою актуальность для веб-сервисов) . Но обычно об этом никогда не спрашивают на собеседовании и не используют в проектах.
Преимуществом платформы .NET можно назвать то, что кроме языка C# она охватывает и другие языки. Например, в одном проекте можно одновременно использовать и C#, и F# — функциональный язык программирования. Таким образом, новичок может изучать как объектно-ориентированный подход, так и функциональный. При этом каждый из языков позволяет в полной мере понять преимущества каждого из подходов.
Еще некоторые преимущества .NET:
- На .NET можно писать Back-end, настольные приложения, мобильные приложения, сайты, есть фреймворки для создания игр, можно работать с Machine Learning.
- .NET-программы можно запускать под разными операционными системами. Есть все необходимое, чтобы без особых проблем упаковать приложение в контейнер.
- Современный .NET (и сама среда выполнения, и фреймворки типа ASP.NET Core) — это платформа с открытым исходным кодом.
- Платформа развивается очень высокими темпами, постоянно появляются обновления.
- О платформе много информации: книги, видео. Как о самой .NET, так и об отдельных поддерживаемых ею языках, среди которых и C#.
- Под платформу написано много кода под что угодно.
- Для .NET есть хорошие средства разработки.
- Нет предпосылок для того, чтобы .NET в последующие
10–20 лет исчезла или стала невостребованной.
Больше о плюсах и минусах платформы мы писали в статье «Переваги та недоліки .NET: швидкий розвиток, велика поширеність і середні зарплати».
Какие технологии следует изучить в рамках .NET
.NET — это платформа, где можно писать разные типы приложений: настольные, мобильные, веб. От этого сильно зависит, какими сопутствующими технологиями следует интересоваться.
Чтобы писать бэкенды, однозначно обязательно разбираться в базах данных. Это то, без чего нельзя написать ничего полезного и что будет в 98% случаев. Если вы понимаете MS SQL, RabbitMQ или MongoDB, этого будет достаточно. Даже если где-то будут другие СУБД, имея понимание того, как работать с этими технологиями, вы вероятнее всего разберетесь, как использовать что-то другое. Очень ценно в работе понимать разницу между этими видами баз и что когда нужно запускать. Для этого можно прочитать книгу Мартина Клепманна «Designing Data-Intensive Applications».
Также будет хорошо, если вы будете работать с Entity Framework.
Остальные могут появляться в тех или иных проектах: Redis, ElasticSearch, системы обмена сообщениями (Kafka, какие-то специфические для определенных облаков, таких как Service Bus в Azure). Не обязательно иметь реальный опыт с этим всем, но хотя бы иметь представление, что это, и уметь выполнять какие-то базовые вещи через соответствующие библиотеки. Хорошо бы ориентироваться в облачных провайдерах вроде Azure, AWS, Google Cloud.
Не лишними будут знания Docker и Kubernetes. Последнее не обязательно должно быть на уровне администратора, но следует концептуально понимать, как там что.
Следует знать и уметь писать юнит-тесты.
Конечно же, для всех технологий .NET базовым является знание языка C#. Но сегодня пишут не на языке программирования, а на фреймворках. Синтаксис любого современного языка выучить легко и быстро. Гораздо важнее хорошо понимать экосистему технологии, с которой работаете.
Если речь идет о хайлоаде, то кроме C# и .NET, нужно будет изучить технологии кэширования, работу с очередями, принципы работы систем массового обслуживания и т.д.
Если речь идет о разработке веб-приложений и работе фулстек-разработчиком, то нужно изучить, как работает ASP.NET Core, шаблоны Razor, Blazor, а также понимать особенности работы HTTP-протокола, сессий, знать, что такое CORS, и вооружиться знаниями со стороны фронтенда: HTML, CSS, JS.
Для разработки десктопных программ следует ознакомиться с WPF, MAUI, знать, что такое XML, понимать, как работают потоки.
Для мобильной разработки также следует ознакомиться с MAUI и Xamarin, а также с документацией и гайдлайнами iOS и Android.
Если вы планируете заняться DevOps-практиками, стоит посмотреть на Pulumi, а также ознакомиться с возможностями основных облачных платформ и средствами работы с ними: Azure, AWS, GCP.
Тем, кто хочет заниматься машинным обучением, не обойтись без ознакомления с фреймворком ML.NET и изучения теоретической базы: что такое регрессия, классификация, детекции аномалий, кластеризация.
Желающим разрабатывать продукты для интернета вещей следует приготовиться к тому, чтобы реализовывать проекты в пределах ограниченных аппаратных ресурсов, а соответственно уметь оценивать сложность алгоритмов, затраты памяти, скорость считывания информации.
Полезные ресурсы для изучения .NET
Microsoft Learn. Специальный портал Microsoft, содержащий огромное количество бесплатных и качественных материалов для обучения.
Ukrainian .NET Developer Community. Проект, который объединяет украинские .NET-сообщества, где вы сможете найти единомышленников и всегда спросить совета.
Телеграмм-канал devdigest // dot net. Здесь регулярно публикуют новости о платформе .NET, полезные материалы и информацию для .NET-разработчиков.
Джон Пол Мюллер «C# для чайников». Даже если вы никогда не имели дела с программированием, это руководство поможет освоить язык C#.
Джеффри Рихтер CLR via C#. Программирование на платформе Microsoft .NET Framework на языке C#«. Эта книга подробно описывает внутреннее устройство и функционирование общеязыковой среды (CLR) Microsoft .NET Framework.
Джуст Виссер «Разработка программ на языке С#». Это практическое руководство ознакомит вас с 10 простыми рекомендациями, которые помогают писать программное обеспечение, которое легко поддерживать и адаптировать. Эти тезисы сформулированы исходя из анализа сотен реальных систем.
Видеоканал Channel 9 от Microsoft размещает много ценной для IT-специалистов информации, включая видеоуроки.
Журнал MCDN Magazine публикует на своем сайте интересные обучающие статьи.
Joseph Albahari «C# 10 в Nutshell. The Definitive Reference». Лаконичный справочник обо всем, что нужно знать о С#.
Полезные статьи на DOU
Що має знати Senior .NET Developer. Аналіз вакансій на DOU.
Статьи рубрики «.NET дайджест».
Советы сеньоров: как прокачать знания junior .NET.
Обзор Akka.NET: как проектировать IoT-системы с помощью этой библиотеки.
Асинхронность в C#. Разрушение легенд.
Разработка highload-системы на .NET Core: задачи и их решения.
.NET Core: как работают микросервисы в контейнерах.
Как искать работу начинающему в .NET
Прежде чем рассылать резюме, потренируйтесь писать код, например, на Codewars или LeetCode — это очень хорошо набивает руку. Production-ready код вы сможете увидеть и начать писать только когда уже устроитесь на работу, а до этого полезно просто уметь писать на языке базовые алгоритмы. Найдите простые задания, выполните, а проект залейте на GitHub.
Несколько общих советов. Пишите в резюме то, что вы действительно умеете и понимаете. Не пишите все ключевые слова, описанные которых вы прочли в Википедии. Не стоит слишком сильно возиться с внешним видом резюме, потому что у работодателя может сложиться впечатление, что под красивой оберткой нет ничего существенного.
Хорошее резюме .NET-разработчика содержит:
2–3 предложения с кратким описанием себя и своей мотивации.- Список навыков и знаний, необходимых большинству .NET-проектов: язык C#, база данных, брокер сообщений, базовый Computer Science, желание учиться, коммуникабельность и т.д.
- Опыт работы или стажировка. Их можно находить как в крупных компаниях, так и в более мелких. Плюсы крупных компаний — их процесс найма стажеров уже налажен, и там с большей вероятностью готов план развития сотрудников и больший выбор проектов, минус — большая конкуренция. В малых компаниях конкуренция может быть меньше. Если определенный коммерческий опыт уже есть — обязательно опишите в резюме, какова была ваша роль на проекте, какой вклад вы привнесли.
- Если у вас есть свои проекты с открытым кодом (пускай код даже не идеальный), укажите ссылку на них.
- Укажите остальные технологии, с которыми работали. Только не перечисляйте все подряд, а только то, с чем действительно работали.
Станьте членом сообществ разработчиков, там иногда можно увидеть, как кто-то ищет людей себе в команду. Преимуществом будет тот факт, что вы сможете напрямую пообщаться с тем человеком, с которым, возможно, будете работать в будущем. Возможно, зная вас, кто-то сам будет рекомендовать компании взять вас к себе.
Перед подготовкой к собеседованию советуем обратить внимание на статью «Співбесіда з .NET. 150+ запитань для Junior, Middle, Senior».
Работу рекомендуем искать на Djinni и DOU. На DOU есть раздел «Первая работа» с курсами, стажировками и вакансиями только для начинающих.
Также стоит создать аккаунт в LinkedIn и добавить в друзья как можно больше разработчиков и рекрутеров. О том, как правильно заполнять LinkedIn-профиль, читайте здесь. После первых отказов спрашивайте у интервьюеров, что следует подтянуть.
Желаем удачи в изучении .NET и верим, что у вас все получится!
Ранее мы писали о том, как выучить JavaScript и Python. Напишите в комментариях, о какой технологии вы хотели бы почитать в следующий раз.
70 коментарів
Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.