На сегодняшний день наука разработки программного обеспечения состоит из такого большого количества тем, что сориентироваться в них трудно даже опытному программисту, не говоря уже о новичках. Именно по этой причине мы начали разработку серии «Карт знаний» для программистов, которые самым детальным образом описывают все, что должны знать трейни, джуниоры, мидлы и синьор программисты. Первым результатом нашей работы стала Карта знаний .NET Web программиста, которая включает в себя около 20 следующих тем:
- Язык программирования C#
- .NET Framework / .NET Core
- Облачные технологии Microsoft Azure / Docker
- Контроль качества кода / Рефакторинг
- Многопоточность и Асинхронное программирование
- Модульное и интеграционное тестирование
- Алгоритмы и Структуры Данных
- Принципы объектно-ориентированного программирования (ООП)
- Шаблоны и принципы проектирования, SOLID
- Предметно-ориентированное проектирование (Domain-driven design, DDD)
- Шаблоны уровня доступа к данным
- Фреймворки доступа к данным: Entity Framework, NHibernate, Dapper
- Архитектурные шаблоны и Атрибуты качества (Quality Attributes)
- HTTP, REST, Веб-фреймворки: ASP.NET MVC / Web API / Core
- Фронтенд разработка: JavaScript / TypeScript / SPA фреймворки
- Веб-безопасность, Шифрование данных, OWASP
- Распределенные системы и Микросервисная архитектура
- Базы данных: T-SQL, MS SQL, NoSQL
- Системы контроля версий: Git, Mercurial, TFS
- Методологии разработки: Scrum, Kanban и Scrumban
После каждой секции вы можете найти список контрольных вопросов для проверки своих знаний. Например, вот так выглядят вопросы для проверки знаний по языку C#:
- В чем разница между ссылочными и значимыми типами данных?
- В чем разница между делегатами и событиями?
- В чем разница между операторами const и readonly?
- Может ли структура реализовывать интерфейс
- Что такое Duck typing? В чем отличия интерфейсов IEnumerable и IEnumerator?
- Почему StringBuilder значительно опережает string по производительности при большом количестве конкатенаций?
- Когда вызывается статический конструктор экземплярного класса?
- В чем разница между коллекциями: Dictionary vs Hashtable, Hashtable vs HashSet, Dictionary vs Lookup?
- В чем разница между делегатами Func и Action?
Пользуйтесь картой в целях самообучения, поиска пробелов в знаниях, создания программ обучения, подготовки к собеседованиям и продвижениям по карьерной лестнице.
Счастливого обучения!