Если вы собираетесь стать разработчиком С# в 2024 году, вас ждет увлекательное путешествие! Чтобы помочь вам эффективно ориентироваться в этом ландшафте, мы составили подробную дорожную карту, в которой описаны основные скиллы и технологии, которыми вы должны овладеть. Независимо от того, являетесь ли вы новичком в разработке программного обеспечения или переходите с другого технологического стека, эта дорожная карта поможет вам определить ключевые области, на которых следует сосредоточиться.

t.me/csharp_ci – огромное количество гайдов, библиотек и примеров с кодом в моем телеграм канале для C# и .Net разработчиков.

https://t.me/addlist/u15AMycxRMowZmRi – тут я собрал огромную папку каналов C# и .Net программистов.

1. Начало пути


а) Понять, как работает web, Linux, как устроен C#.

б) Изучить инструменты контроля версий

  • Git

  • GitHub

  • GitLab (полезно знать)

Курсы:

  • Основы Git: Курс описывает наиболее часто используемые команды git, взятые из опыта реальных проектов. Даются примеры и интерактивные задачи : https://stepik.org/course/3145/promo

  • Git и GitHub бесплатный курс поможет вам разобраться с контролем версий: http://learngitbranching.js.org

в) Научитесь искать решения в сети.

  • Google

  • Stack Overflow

  • Bing Search

  • ChatGPT

д) Изучите Структуры данных и алгоритмы ( полезные бесплатные курсы для изучения стуртур данных можно найти тут)

2. Погружение в С#

Бесплатные курсы для изучения C#:

b) Изучите .NET 8

Курс: Создание приложений .NET на C#

c) .NET CLI

Обзор интерфейса командной строки .NET

3. Принципы SOLID

SOLID – это принципы разработки программного обеспечения, следуя которым Вы получите хороший код, который в дальнейшем будет хорошо масштабироваться и поддерживаться в рабочем состоянии.

Изучите:

a) Принцип единой ответственности

б) Принцип открытости-закрытости

c) Принцип замещения Лискова (хорошо знать)

г) Принцип разделения интерфейсов

д) Принцип инверсии зависимостей

f) DRY

g) YAGNI

h) KISS

4. Изучите основы ASP.NET Core

Вот основные темы для изучения:

а) Веб-интерфейсы API

б) Минимальные APIe

в) Маршрутизация

г) Мидлвар

д) Фильтры и атрибуты

f) Конфигурация

g) Аутентификация и авторизация

h) Инъекция зависимостей

a) Основы РСУБД и проектирование баз данных

б) Синтаксис SQL

c) Хранимые процедуры (полезно знать)

Курсы:

​???? Шаблоны архитектуры приложений

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

Статья рассказывает об основных шаблонах архитектуры приложений:

https://www.redhat.com/architect/14-software-architecture-patterns

г) Базы данных

  • Postgres

  • SQL Server

  • MySQL/MariaDB (хорошо знать)

– Полный учебный план по изучению баз данных

План рассчитан на 28 дней, в течение которых необходимо уделять не менее 1,5 часов в день.

– SQL дорожная карта 2024 года

5. Работа с API


а) REST

  • Web

  • Минимальное API

  • FastEndpoints (полезно знать)

DevDocs — все API-документации в одном месте

Главные преимущества DevDocs включают объединение множества официальных документаций по разработке, удобный поиск и быстрый доступ к информации. 

Особенно полезным инструмент будет для студентов IT-направлений, но свою пользу смогут найти в нём и работающие специалисты

Из дополнительных плюсов: интуитивно понятный интерфейс, настраиваемые закладки и автодополнение поиска

б) GraphQL (полезно знать)

Введение в GraphQL

в) gRPC (полезно знать)

Курсы:

6. ORM

Объектно-реляционное отображение (ORM)
а) Dapper

b) Entity Framework Core

  • Изучите основы EF Core

  • Миграции

  • API отслеживания изменений

  • Ленивая загрузка, ускоренная загрузка, явная загрузка

Изучаем разработку на .net и С#

Как использовать ORM в .NET Core и C#.

7. Внедрение зависимостей в .NET

Внедрение зависимостей в .NET — это встроенная часть платформы, а также конфигурация, ведение журнала и шаблон параметров.

Внедрение зависимостей в .NET – это подход, который позволяет классам получать свои зависимости из внешнего источника, вместо того чтобы создавать их самостоятельно. Внедрение зависимостей  позволяет отделить процесс создания объектов от кода, который их использует, что приводит к более модульной и гибкой системе.

Почему это нужно:

Классы отделяются друг от друга, поэтому изменения, внесенные в одно место, отражаются во всех остальных местах.

Три способа внедрения зависимостей:

  • Scoped: Создается экземпляр на каждую область видимости.

  • Transient: Создается новый экземпляр каждый раз при его внедрении.

  • Singleton: Создается один объект для всех запросов, поступающих на сервер от любого пользователя.


КурсMicrosoft.Extensions.DependencyInjection

b) Scrutor (полезно знать)


a) Облачные базы данных

  • AWS DynamoDB

  • Azure CosmosDB

https://explore.skillbuilder.aws/learn/signin

б) Введение в ElasticSearch — шаг за шагом #aspnetcore

в) Redis

г) MongoDB (полезно знать)

Docker – http://cognitiveclass.ai/courses/docker-essentials

8. Кэширование

a) Кэширование вывода

б) Кэширование ответов (полезно знать)

StackExchange.Redis

Почитать

9. Ведение логов


a) Microsoft.Extensions.Logging – https://learn.microsoft.com/en-us/dotnet/core/extensions/logging

б) Serilog

10. Брокеры сообщений

a) Azure Service Bus

c) RabbitMQ (полезно знать)

b) AWS SQS/SNS

г) MassTransit

11. Потоковая передача данных

a) Apache Kafka –

https://developer.confluent.io/courses/

(полезно знать)

b) AWS Kinesis (хорошо знать)

c) Azure Event Hubs (хорошо знать)

12. Тестирование

а) модульное тестирование

“Библия QA” – это обновляемая база знаний объемом 560+ страниц:

  • Ответы на самые популярные вопросы новичков о профессии и старте карьеры;

  • Крупнейшая подборка ссылок и полезных ресурсов;

  • Конспект всевозможной теории и ответов на вопросы с реальных собеседований.

https://github.com/VladislavEremeev/QA_bible

13. Коммуникация в реальном времени

a) SignalR https://learn.microsoft.com/en-us/aspnet/core/tutorials/signalr?view=aspnetcore-8.0

b) Web Sockets (полезно знать) – https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_server

14. Документация API

a) OpenAPI/Swagger – https://swagger.io/specification/

б) AsyncAPI (полезно знать) – https://www.asyncapi.com/tools

15. Библиотеки API SDK

а) Refit

б) RestSharp

в) Flurl (хорошо знать)

https://github.com/microsoftgraph/msgraph-sdk-dotnet

16. Планирование задач


a) BackgroundService

б) PeriodicTimer

в) HangFire (полезно знать)

https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskscheduler?view=net-8.0

17. Мониторинг и телеметрия

a) OpenTelemetry – https://t.me/Golang_google/1597

Jeager (полезно знать)
б) Prometheus

в) Grafana

г) ELK Stack

д) Datadog (полезно знать)

18. Контейнеры


а) Контейнеризация

Docker – https://learn.microsoft.com/en-us/dotnet/core/docker/build-container
Podman (полезно знать)- https://developers.redhat.com/articles/2022/03/21/hello-podman-using-netб) Оркестровка

Kubernetes

19. Облачные технологии


а) Облачные провайдеры – https://www.youtube.com/watch?v=TCuxXg0AUao

-Azure
– AWS
б) Бессерверные технологии

Azure Functions
AWS Lambda
в) Файловое хранилище

AWS S3
Azure Storage

Бесплатные Курсы:

AWS →http://explore.skillbuilder.aws

Azure →http://learn.microsoft.com

DevOps →http://edx.org/learn/devops 

Docker →http://docker-curriculum.com

Kubernetes →http://kubernetes.io

20. Непрерывная интеграция и развертывание


a) GitHub Actions

б) TeamCity

c) Octopus Deploy

d) Azure Pipelines (полезно знать)

д) Gitlab CI (полезно знать)

f) Jenkins (хорошо знать)

g) Автоматизация сборки (хорошо знать)

Cake (полезно знать)
Nuke (хорошо знать)

❯ Jenkins

http://mygreatlearning.com/academy/learn-for-free/courses/jenkins-tutorial

❯ Puppet

http://simplilearn.com/free-course-to-learn-puppet-basics-skillup

❯ Chef

http://simplilearn.com/chef-in-devops-basics-free-course-skillup

❯ Ansible

http://simplilearn.com/learn-ansible-basics-free-course-skillup

❯ Selenium

http://mygreatlearning.com/academy/learn-for-free/courses/selenium-basics

❯ VirtualBox & vSphere

http://openclassrooms.com/courses/7163136-set-up-virtual-machines-using-virtualbox-and-vsphere

21. Библиотеки .NET


a) Polly

b) FluentValidation

c) Humanizer.Core

d) Benchmark.NET

e) MediatR (полезно знать)

f) Units.NET (полезно знать)

g) NodaTime (полезно знать)

Awesome-C# — огромный список полезных фреймворков, готовых скриптов, библиотек и программного обеспечения.

22. DevOps

Бесплатный онлайн-курс DevOps

б) Terraform (хорошо знать)

в) Pulumi (хорошо знать)

23. Пишите код каждый день”


Поздравляем вас с достижением этого этапа дорожной карты!

В 2024 году изучение C# .NET остается важным и актуальным по нескольким причинам:

  1. Широкое применение: C# .NET является одним из самых популярных языков программирования и платформ разработки, используемых в индустрии. Он широко применяется для создания различных типов приложений, включая веб-приложения, мобильные приложения, игры, программное обеспечение для предприятий и другие.

  2. Поддержка от Microsoft: C# .NET разрабатывается и поддерживается компанией Microsoft, которая активно инвестирует в его развитие. Это означает, что язык и платформа будут продолжать развиваться и обновляться, чтобы соответствовать современным требованиям разработки.

  3. Возможности для карьерного роста: Изучение C# .NET может предоставить отличные возможности для карьерного роста в сфере программирования. Спрос на специалистов, владеющих этим языком, остается высоким, и работодатели ценят знания и опыт в C# .NET.

  4. Разнообразие инструментов и фреймворков: C# .NET имеет богатую экосистему инструментов и фреймворков, которые облегчают разработку приложений. Например, ASP.NET позволяет создавать мощные веб-приложения, Xamarin - мобильные приложения для разных платформ, а Unity - игры.

  5. Совместимость и переносимость: Приложения, разработанные на C# .NET, могут работать на разных операционных системах, включая Windows, macOS и Linux. Это делает язык и платформу гибкими и переносимыми.

В целом, изучение C# .NET в 2024 году предоставляет отличные перспективы для разработчиков и может быть полезным для достижения успеха в сфере программирования.

Помните, что постоянное обучение и кодинг – это ключ к освоению професии разработчика. Не теряйте любопытства, изучайте новые технологии и продолжайте создавать интересные проекты. Ваш путь разработчика .NET только начинается, а возможности безграничны.

Комментарии (21)


  1. Vasjen
    10.01.2024 11:59
    +14

    С таким списком статью можно назвать, как потратить 3 года на изучение C# и так его и не выучить. Не надо так его изучать.


    1. AlexxPalermo
      10.01.2024 11:59
      -1

      Внесите пожалуйста свои правки, можно коротко, люди будут благодарны.


  1. xtov0
    10.01.2024 11:59
    +3

    ... какое-то всё веб-направленное ...
    и ни слова про ReSharper!!!
    Без него, лично я, работать НЕ могу.

    ++

    • полезно было бы включить ссылки на C# scripting in PowerShell

    • как скрещивать с C++ (unmanaged in managed)

    • GUI libs - DevExpress (кстати, русская вещь) etc.


    1. Vitimbo
      10.01.2024 11:59
      +3

      Новичку он явно будет лишним, ему бы языковые конструкции изучить, а потом уже приблудами пользоваться


      1. j_shrike
        10.01.2024 11:59

        Как раз новичку полезно, чтобы его робот носом тыкал в неправильное именование, не используемые переменные, методы, которые можно сделать статикой, и прочие прелести. Дисциплинирует и прививает полезные привычки


        1. SBenzenko
          10.01.2024 11:59

          Да, мало новичку охренеть от объёма информации в Visual Studio, пусть ему ещё ReSharper накинет советов вроде "инвертируйте if" (и тормозов добавит до кучи) )))


          1. j_shrike
            10.01.2024 11:59

            Стрессоустойчивость заодно прокачает, в жизни разработчика пригодится, наравне со знанием шарпа :D


  1. wasd_0
    10.01.2024 11:59
    +5

    Здесь скорее список необходимых технологий для Web-разработки на ASP .NET. C# Одним бэкендом не ограничивается.

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

    Не рекомендую изучать инструменты контроля версий в самом начале изучения программирования - на этом этапе обычно пишут маленькие консольные приложения, для которых GIT вряд ли пригодится. Рекомендую знакомиться с гитом, когда вы уже пишете свой первый пет-проект. Поправьте, если ошибаюсь


  1. Ydav359
    10.01.2024 11:59
    +4

    То есть, я хочу начать учить шарп, а мне нужно учить Linux, WEB, GIT, структуры данных?) Непонятно какой вообще уровень тут описан, все смешалось


  1. IgorMartynkin1981
    10.01.2024 11:59

    RoadMap это называется! Если хотите пойти этим путём то посмотрите ХАБ там есть много OpenSource projects над которыми работают сотни разработчиков (как пример https://github.com/kamranahmedse/developer-roadmap https://roadmap.sh/cpp)


  1. lair
    10.01.2024 11:59
    +11

    Принцип замещения Лискова (хорошо знать)

    Хорошо знать, что Лисков в этом предложении - женская фамилия, и, как следствие, не склоняется.

    (еще это "принцип подстановки", а не "замещения")


  1. mikegordan
    10.01.2024 11:59

    А вы знаете сайты для тестов по C# \ CLR , чтобы и сложные и легкие вопросы были. Из разраяда выберите правильный ответ из 4х.

    (мб приложение на телефоне)


    1. wasd_0
      10.01.2024 11:59
      +1

      На телефон есть бесплатное приложение SoloLearn. Есть так же бесплатные курсы по C# на ulearn с практикой и тестами.


  1. Einherjar
    10.01.2024 11:59
    +4

    Более десяти лет пишу на шарпе. Но понятия не имею что такое Terraform, Kubernetes, Grafana, Kafka. Видимо я так и не стал c# разработчиком?


    1. shai_hulud
      10.01.2024 11:59
      +4

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


    1. mikegordan
      10.01.2024 11:59

      для сайта пивнушки на ASP.net особо и не нужно.


    1. ioncorpse
      10.01.2024 11:59
      +1

      Может вы ещё не знаете и как пропатчить KDE под FreeBsd? Это тоже основа основ C#, как и K8s.


  1. kozlov_de
    10.01.2024 11:59

    сразу расхотелось его изучать

    где Linq?

    где ФП?


  1. GoshaAndYasha
    10.01.2024 11:59
    +2

    Это точно не LLM писала? Не упомянуты MAUI, UNO, Blazor - без них сборная солянка не может считаться полной. Зато упомянут Xamarin, чтонапоминает о том что LLM обучалась на не обязательно самых актуальных текстах.

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

    Глядя на такую карту человек увидит где он и куда можно двигаться. По Вашей же статье - отнюдь. Вот поэтому она никому и не нравится.


  1. VYudachev
    10.01.2024 11:59

    <s>

    Ужасная статья, забыли про стехиометрию, значит, грош ей цена!

    </s>


  1. MANAB
    10.01.2024 11:59
    +1

    12 лет на шарпах, но согласно этой статье "для новичков" я похоже до сих пор не вкатился.

    Стать скорее должна называться: что еще можно изучить в C# если у вас появилось свободное время или неизвестное слово на работе услышали.