описание
Навыки: C#, .NET, ASP.NET, Microsoft SQL Server, Windows Azure. Квалификация: Senior. Специализации: Системный инженер.
Вы будете проектировать, разрабатывать и поддерживать компоненты бэкенда и системного уровня в соответствии с утвержденной корпоративной архитектурой, стандартами безопасности и рамками управления. Вы будете реализовывать функции, которые соответствуют функциональным и нефункциональным требованиям, следовать практикам безопасного программирования и интегрироваться в нашу экосистему: Azure, API, базы данных и CI/CD пайплайны.
Вы будете работать в рамках определенных архитектурных границ и сотрудничать с архитекторами, владельцами продуктов, QA, DevSecOps и заинтересованными сторонами бизнеса, чтобы поставлять высококачественные, масштабируемые и безопасные решения.
***Цель роли***
Проектировать, строить и поддерживать компоненты бэкенда/системного уровня в соответствии с архитектурными стандартами.
О проекте (скрытый, но ясный)
Мы берем на себя ответственность за крупную, критически важную корпоративную платформу, которая в настоящее время управляется внешним поставщиком. Система работает в режиме реального времени и чувствительна к безопасности, и мы модернизируем ее со временем:
- Основной стек бэкенда: **C# / .NET (6+)**, с большинством новых работ на **.NET 8 (LTS)**
- Существуют устаревшие области: **ASP.NET Framework 4.8** и некоторые **WCF**
- Облако: **Microsoft Azure**
- Данные: **SQL Server** в основном, немного **MySQL**
- Существует фронтенд (React/Angular), но эта роль является **бэкенд/системной**
- Документация смешанная из-за перехода; часть работы заключается в улучшении ясности по мере продвижения.
***Основные обязанности***
1) Разработка и внедрение программного обеспечения
- Разрабатывать бэкенд-сервисы, API и системные компоненты на основе утвержденных элементов бэклога и технических дизайнов.
- Переводить пользовательские истории и функциональные требования в масштабируемые решения.
- Реализовывать бизнес-логику, следуя принципам чистой архитектуры.
- Соблюдать стандарты кодирования, архитектурные рекомендации и согласованные шаблоны проектирования.
2) Качество кода и поддерживаемость
- Писать чистый, поддерживаемый, тестируемый, хорошо документированный код.
- Проводить рецензии кода и учитывать отзывы по ним.
- Рефакторить устаревший код, где это необходимо, для улучшения производительности и поддерживаемости.
- Поддерживать строгую дисциплину контроля версий: стратегия ветвления, запросы на слияние, слияния.
3) Тестирование и обеспечение качества
- Разрабатывать и поддерживать модульные тесты с использованием утвержденных фреймворков ( **xUnit / NUnit / MSTest** ).
- Правильно использовать фреймворки для мокирования (например, эквиваленты Moq/NSubstitute).
- Участвовать в интеграционном тестировании и поддерживать QA в ходе тестовых циклов.
- Соответствовать качественным критериям (покрытие/стандарты) перед релизом.
- Поддерживать отладку, анализ причин и решение дефектов.
4) Безопасность и соответствие
- Применять практики безопасного программирования в соответствии с **OWASP Top 10** .
- Выявлять и смягчать уязвимости; следовать контролям качества DevSecOps.
- Правильно обрабатывать аутентификацию, авторизацию, шифрование и защиту данных.
- Реализовывать RBAC и модели доступа на основе идентификации (JWT/OAuth2; **Entra ID** интеграция, где это применимо).
- Соблюдать обязательные критерии сканирования SAST перед релизом.
5) Производительность и надежность
- Оптимизировать запросы к базе данных и производительность системы (SQL Server/MySQL).
- Создавать масштабируемые, устойчивые сервисы и API.
- Реализовывать лучшие практики логирования/мониторинга/обработки исключений (например, **Application Insights, Serilog** ).
- Использовать техники профилирования производительности, когда это необходимо, для диагностики узких мест.
6) Поддержка DevOps и развертывания
- Поддерживать интеграцию CI/CD пайплайнов и рабочие процессы доставки ( **Azure DevOps** ).
- Помогать в развертывании на стадии тестирования и в производственной среде под контролем управления.
- Участвовать в устранении инцидентов в производственной среде при необходимости.
7) Кросс-функциональное сотрудничество
- Тесно сотрудничать с архитекторами решений, владельцами продуктов, QA, DevSecOps и командами UI/UX.
- Раннее и четкое сообщать о технических рисках и архитектурных проблемах.
***Полномочия***
- Принимать решения по реализации **в рамках** утвержденных архитектурных границ.
- **Не может** переопределять объем или обходить архитектурные/безопасностные стандарты.
- Должен сообщать о технических рисках, архитектурных проблемах или вопросах, влияющих на объем, архитектору и владельцу продукта.
- **Не может** утверждать развертывание в производственной среде вне определенных контрольных точек управления.
***Требуемые квалификации***
Образование
- Степень бакалавра в области компьютерных наук / программной инженерии / информационных систем (или аналогичной).
- Степень магистра является плюсом.
***Опыт***
- **5+ лет** опыта разработки бэкенда.
- Подтвержденный опыт поставки **приложений корпоративного уровня** .
- Опыт работы в **Agile/Scrum** средах.
- Опыт работы с приложениями **Azure, размещенными в производственной среде**.
***Требуемый технический стек***
Основные технологии
- **C# / .NET Core / .NET 6+** (большинство новых работ на **.NET 8 LTS** )
- **ASP.NET Core Web API**
- **Entity Framework** и/или другие инструменты ORM
- **SQL Server** (навыки продвинутого запроса и настройки производительности)
API и интеграция
- **RESTful APIs**
- Обмен данными: **JSON / XML**
- Аутентификация API: **JWT, OAuth2**, интеграция идентификации ( **Entra ID** )
Облако и DevOps
- **Microsoft Azure** (App Services, Storage, Functions)
- **Azure DevOps** (CI/CD пайплайны)
- **Git**
Безопасность
- Осведомленность о OWASP Top 10
- Лучшие практики безопасного программирования
- Шаблоны реализации RBAC
Тестирование
- **xUnit / NUnit / MSTest**
- Фреймворки для мокирования
- Практики модульного и интеграционного тестирования
Техническая осведомленность
- Основы архитектуры микросервисов
- Инструменты логирования/мониторинга (Application Insights, Serilog и др.)
- Основы Docker (предпочтительно)
- Лучшие практики CI/CD
- Техники профилирования производительности
Основные компетенции
Технические
- Сильные навыки решения проблем и аналитические способности
- Экспертиза в оптимизации кода и отладке
- Понимание принципов проектирования систем
- Мышление в области безопасной разработки
Поведенческие
- Ответственность и собственность
- Структурированное мышление
- Внимание к деталям
- Способность работать под давлением
- Четкая коммуникация с техническими и нетехническими заинтересованными сторонами
- Настрой на непрерывное обучение
***Ожидания по зрелости/уровню***
- Возглавлять технические модули и доводить их до завершения.
- Наставлять менее опытных инженеров при необходимости.
- Участвовать в обсуждениях дизайна и вносить улучшения.
- Рецензировать критические изменения кода и поддерживать инженерные стандарты.
***Рекомендуемые сертификаты (желательно)***
- **AZ-204** (Azure Developer Associate)
- **AZ-900** (Azure Fundamentals)
- Обучение безопасному программированию / OWASP
- Сертификаты безопасности Microsoft (по желанию)
***Процесс собеседования***
1. 20–30 минутный вводный звонок
2. Техническое собеседование (проектирование системы + глубокие знания .NET/API/SQL + мышление в области безопасности)
3. Финальная дискуссия + предложение