Created by AIImproved by people

Riqli · living documents · updated continuously

Where AI knowledge meets human practice.

Share with friends
Стандарты и гайдлайны разработки. .Net-разработчик. Document. (Coding standards. Code review guidelines. Разработка. Стандарты кодирования. Архитектурные практики. Микрософт. Корпоративная разработка.)
sections

1. Общие положения

contents

1.1. Назначение и область действия документа

Настоящий документ устанавливает обязательные стандарты и гайдлайны разработки для всех команд и отдельных разработчиков, участвующих в создании, поддержке и развитии программных продуктов на платформе Microsoft .NET в организации «Генеральная». Документ определяет единые требования к процессу разработки, включая стандарты кодирования, процедуры code review, архитектурные практики и подходы к организации рабочего процесса. Положения документа являются обязательными для исполнения всеми участниками жизненного цикла программного обеспечения, включая разработчиков, тестировщиков, аналитиков и руководителей групп разработки.

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

contents

1.2. Нормативные ссылки и правовая основа

Настоящий документ разработан на основе следующих нормативных и методических материалов: законодательных актов в области информационной безопасности и защиты персональных данных, внутренних политик организации «Генеральная», а также признанных отраслевых стандартов, включая рекомендации Microsoft по разработке на платформе .NET, стандарты языка C# (C# Coding Conventions) и общие принципы SOLID, DRY, KISS. В случае противоречий между настоящим документом и иными регламентами, приоритет имеют положения данного документа, если иное не оговорено в особых условиях проектов.

Кроме того, настоящий документ гармонизирован с требованиями ISO/IEC 12207 к процессам жизненного цикла ПО и учитывает рекомендации по обеспечению безопасности (OWASP Top 10) применительно к .NET-разработке. Все изменения и дополнения в документ вносятся на основании приказов технического директора или руководителя департамента разработки, после обязательного согласования с ведущими инженерами и архитекторами.

contents

1.3. Основные термины и определения

В настоящем документе используются следующие термины и их определения: «стандарты кодирования» — совокупность правил и соглашений, определяющих стиль написания исходного кода, включая именование, форматирование и структурирование; «гайдлайны разработки» — набор рекомендаций и лучших практик, охватывающих архитектурные решения, шаблоны проектирования и процессы работы с системой контроля версий; «code review» — процесс проверки исходного кода одним или несколькими разработчиками с целью выявления ошибок, улучшения качества и обеспечения соответствия установленным стандартам; «проверяющий» — разработчик, назначаемый для проведения code review и имеющий соответствующие полномочия и квалификацию.

Под «CI/CD» понимается практика непрерывной интеграции и непрерывной доставки, предполагающая автоматическую сборку, тестирование и развертывание кода при каждом изменении в репозитории. «Архитектурный паттерн» — повторяемое решение типовой задачи проектирования в заданном контексте, например, MVC, MVP, MVVM, Onion Architecture, CQRS. Термин «корпоративная разработка» обозначает процесс создания программного обеспечения в рамках крупной организации с распределенными командами, строгими требованиями к безопасности и масштабируемости.

contents

1.4. Ответственность за соблюдение и актуализацию

Ответственность за актуализацию настоящего документа и его соответствие современным практикам несет Архитектурный комитет организации «Генеральная» совместно с руководителями направлений разработки. Все изменения, связанные с выходом новых версий платформы .NET, обновлением инструментов или появлением новых угроз безопасности, должны оперативно отражаться в положениях документа. Каждый разработчик, присоединяющийся к проекту, обязан ознакомиться с текущей версией документа под подпись в системе электронного документооборота.

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

sections

2. Цель и сфера деятельности

contents

2.1. Миссия роли .Net-разработчика

Основная цель деятельности .Net-разработчика в организации «Генеральная» заключается в создании высококачественного, производительного и безопасного программного кода на платформе Microsoft .NET, который полностью соответствует бизнес-требованиям заказчиков и внутренним стандартам качества. Разработчик обеспечивает техническую реализацию функциональных требований, участвует в проектировании архитектуры и несет ответственность за техническую состоятельность реализуемых решений.

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

contents

2.2. Ожидаемые результаты и зона ответственности

Ожидаемыми результатами работы .Net-разработчика являются: корректно функционирующий, задокументированный и протестированный код, интегрированный в основную ветку разработки; успешное прохождение всех этапов CI/CD-пайплайна; соответствие кода принятым в организации стандартам и гайдлайнам; своевременное устранение замечаний, выявленных в процессе code review и тестирования. Разработчик отвечает за стабильную работу закрепленных за ним сервисов и компонентов в продуктивной среде.

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

contents

2.3. Взаимодействие с бизнесом и заказчиками

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

Взаимодействие осуществляется через регулярные встречи, а также с помощью систем управления проектами (Jira, Azure DevOps). Разработчик должен уметь перевести бизнес-потребности на язык технических задач и предложить несколько альтернативных путей реализации с оценкой их преимуществ и недостатков. Такой подход позволяет принимать взвешенные решения, удовлетворяющие как бизнес, так и требования к качеству кода.

sections

3. Подчиненность и линии отчетности

contents

3.1. Прямое руководство и административная подчиненность

.Net-разработчик непосредственно подчиняется Руководителю группы разработки (Team Lead) или Руководителю проектного офиса, в зависимости от организационной структуры проекта. Team Lead обеспечивает постановку задач, распределение нагрузки, контроль сроков и качества выполнения работ, а также проведение регулярных индивидуальных встреч (1-на-1) для обсуждения прогресса и профессионального развития. Разработчик обязан выполнять все распоряжения прямого руководителя, касающиеся трудовой деятельности и выполнения проектных задач.

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

contents

3.2. Функциональное подчинение и архитектурное управление

В части архитектурных решений и соблюдения технических стандартов .Net-разработчик функционально подчиняется Архитектору проекта или Ведущему инженеру (Principal Engineer). Архитектор определяет общую структуру системы, ключевые технологические стеки, интерфейсы взаимодействия модулей и требования к производительности. Разработчик обязан согласовывать с архитектором любые отклонения от утвержденной архитектуры, а также предлагаемые изменения в архитектурных паттернах.

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

contents

3.3. Матричные связи с другими подразделениями

В рамках реализации проектов .Net-разработчик вступает в матричные связи с другими подразделениями организации: отделом тестирования (QA), группой эксплуатации (DevOps), отделом аналитики и отделом безопасности (InfoSec). С тестировщиками разработчик взаимодействует на этапах планирования тестирования, уточнения критериев приемки, исправления дефектов и анализа результатов прогонов тестов. С DevOps-инженерами разработчик взаимодействует по вопросам сборки, развертывания, настройки окружений и мониторинга.

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

sections

4. Должностные обязанности

contents

4.1. Разработка и написание кода

  • Создание программного кода: Разработка чистого, эффективного и поддерживаемого кода на C# (или других языках .NET платформы) в соответствии с утвержденными техническими требованиями и user stories. Код должен быть написан с соблюдением всех принятых в организации стандартов кодирования, включая правила именования (PascalCase для публичных членов, camelCase для параметров и локальных переменных), форматирование отступов и расположение фигурных скобок (стиль K&R).
  • Работа с системой контроля версий: Регулярные коммиты в систему контроля версий (Git) с осмысленными комментариями, отражающими суть изменений. Соблюдение правил именования веток (feature/, bugfix/, hotfix/) и стратегии ветвления (GitFlow или GitHub Flow).
  • Написание документации и комментариев: Создание технической документации на разрабатываемые компоненты и API, а также написание осмысленных комментариев в коде с использованием XML-документации для публичных методов и классов. Документирование сложных логических блоков и нетривиальных архитектурных решений.

contents

4.2. Тестирование и обеспечение качества

  • Написание и поддержка юнит-тестов: Разработка юнит-тестов с использованием фреймворков xUnit, NUnit или MSTest для покрытия всей новой и измененной функциональности. Обеспечение минимального порога покрытия тестами критически важных модулей и компонентов (не менее 80%).
  • Интеграционное тестирование: Участие в написании интеграционных тестов для проверки взаимодействия сервисов, баз данных и внешних API. Проверка корректности работы в окружениях, приближенных к продуктивным.
  • Анализ качества кода: Регулярный анализ собственного кода и кода коллег с помощью статических анализаторов кода (SonarQube, Roslyn analyzers) и устранение всех критических и основных предупреждений. Разработчик несет личную ответственность за снижение технического долга в закрепленных за ним компонентах.

contents

4.3. Участие в процессах ревью

  • Code review в роли автора: Инициирование создания pull request (или merge request) для всех значимых изменений в кодовой базе. Автор обязан четко описать суть изменений, прикрепить ссылки на задачи в трекере, указать инструкции по тестированию и предоставить качественный самоописание кода.
  • Code review в роли проверяющего: Активное участие в проверке кода коллег в соответствии с гайдлайнами разработки и установленными сроками ревью (не более 24 часов с момента создания запроса). Проверяющий обязан давать конструктивные, аргументированные замечания, направленные на улучшение качества кода, избегая субъективных оценок.
  • Обработка обратной связи: Своевременное устранение всех замечаний, полученных в процессе code review, и повторное ревью изменений. В случае несогласия с замечаниями — аргументированное обсуждение с проверяющим для поиска консенсуса или привлечение третьей стороны (арбитра).

contents

4.4. Архитектурное проектирование и решения

  • Участие в проектировании: Участие в разработке и обсуждении архитектурных решений для новых проектов и значительных доработок существующих систем. Предложение альтернативных архитектурных подходов с обоснованием их преимуществ и недостатков.
  • Следование архитектурным паттернам: Применение утвержденных архитектурных паттернов (Onion Architecture, Clean Architecture, CQRS, Event Sourcing) при разработке новых модулей. Обеспечение слабой связанности и высокой связности внутри слоев приложения.
  • Проектирование API: Разработка и документирование API (RESTful, gRPC) с соблюдением принципов REST и стандартов Swagger/OpenAPI. Обеспечение обратной совместимости версий API при внесении изменений.

contents

4.5. Управление конфигурацией и CI/CD

  • Конфигурация приложений: Управление конфигурационными файлами приложений (appsettings.json), настройка переменных окружения для различных сред (Development, Staging, Production). Использование безопасных способов хранения секретов (Azure Key Vault, HashiCorp Vault, переменные GitHub Secrets).
  • Участие в настройке CI/CD: Настройка и поддержка пайплайнов непрерывной интеграции и доставки (Azure DevOps, GitHub Actions, Jenkins), включая этапы сборки, прогона тестов, статического анализа и развертывания.
  • Контроль версий зависимостей: Управление версиями NuGet-пакетов, поддержание их актуальности и совместимости. Разрешение конфликтов зависимостей при обновлении версий фреймворка или библиотек.

contents

4.6. Участие в разработке документации и регламентов

  • Подготовка технической документации: Написание и поддержка в актуальном состоянии технической документации (Architecture Decision Records (ADR), Wiki-страницы, схемы потоков данных) для разрабатываемых компонентов.
  • Создание руководств для разработчиков: Участие в создании и обновлении внутренних руководств и мануалов для разработчиков, описывающих особенности настройки окружения, выполнения сборки, проведения локального тестирования и деплоя.
  • Документирование API и интеграций: Формирование спецификаций API в формате OpenAPI и поддержка интерактивной документации для внешних и внутренних потребителей.

contents

4.7. Инцидент-менеджмент и поддержка

  • Решение инцидентов: Участие в диагностике и устранении инцидентов, связанных с закрепленными сервисами в продуктивной среде. Своевременное реагирование на сообщения об ошибках (уровень SLA не менее 99.9% в рабочее время).
  • Анализ первопричин (Root Cause Analysis): Проведение анализа причин возникновения критических инцидентов и разработка мер по предотвращению их повторения. Фиксация результатов анализа в системе управления инцидентами.
  • Оптимизация производительности: Мониторинг производительности приложений в продуктивной среде (Application Insights, New Relic) и проведение оптимизаций кода и запросов к БД для устранения проблем с производительностью.

sections

5. Права работника

contents

5.1. Права на принятие технических решений

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

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

contents

5.2. Доступ к информации и ресурсам

.Net-разработчик имеет право на получение всех необходимых для выполнения своих обязанностей доступов к репозиториям кода (Git), системам управления проектами (Jira, Azure DevOps), CI/CD-системам, окружениям разработки и тестирования, а также к системам мониторинга и логирования. Доступы предоставляются в соответствии с матрицей доступа и политикой минимальных привилегий.

Разработчик имеет право запрашивать и получать от смежных подразделений (аналитики, тестирования, эксплуатации) всю информацию, необходимую для полного понимания требований, контекста использования функциональности и особенностей эксплуатации разрабатываемого продукта. Отказ в предоставлении информации должен быть мотивирован и согласован с руководителем.

contents

5.3. Права на профессиональное развитие и обучение

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

Разработчик имеет право на получение доступа к корпоративной библиотеке технической литературы, обучающим платформам (Pluralsight, Coursera, Microsoft Learn) и внутренним базам знаний. Время, затраченное на обучение в рамках рабочего времени, должно быть согласовано с руководителем, однако организация поощряет выделение до 5% рабочего времени на самообразование.

contents

5.4. Право на инициативу и обратную связь

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

Разработчик имеет право на получение регулярной обратной связи от руководителя и коллег о своей работе, а также на участие в оценке проектных и процессных рисков. В случае возникновения проблем, связанных с выполнением обязанностей или взаимодействием с коллегами, разработчик имеет право обратиться к руководителю или в HR-службу за разрешением конфликтной ситуации.

sections

6. Ответственность и подотчетность

contents

6.1. Ответственность за качество и безопасность кода

.Net-разработчик несет персональную ответственность за качество, безопасность и производительность написанного им кода. В случае выявления критических уязвимостей или дефектов, возникших по вине разработчика и приведших к инцидентам в продуктивной среде, к разработчику могут быть применены меры дисциплинарного воздействия вплоть до лишения премии или увольнения (в зависимости от тяжести последствий).

Ответственность включает соблюдение всех требований по защите персональных данных, шифрованию, авторизации и аутентификации. Разработчик обязан предотвращать попадание секретов, ключей доступа и паролей в систему контроля версий в открытом виде, используя только защищенные механизмы (Key Vault, User Secrets).

contents

6.2. Соблюдение сроков и обязательств

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

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

contents

6.3. Соблюдение процессных регламентов

.Net-разработчик обязан строго следовать всем утвержденным процессам жизненного цикла ПО: от планирования задач до выпуска релизов. Нарушение установленных процедур, таких как обход code review, игнорирование требований к тестированию, несоблюдение правил работы с конфиденциальной информацией, рассматривается как нарушение трудовой дисциплины.

Разработчик несет ответственность за корректное использование инструментов организации: систем трекинга, репозиториев, CI/CD-систем и средств обмена информацией (корпоративная почта, мессенджеры). Любые действия, приводящие к блокировке сборок, сбою тестов или некорректному развертыванию, должны быть немедленно устранены, а разработчик обязан провести анализ причин для предотвращения повторения.

sections

7. Квалификационные и компетенционные требования

contents

7.1. Образование и базовый опыт

  • Образование: Наличие высшего образования в области информационных технологий, компьютерных наук или прикладной математики; допускается среднее профессиональное образование при наличии значительного практического опыта разработки (не менее 3 лет).
  • Опыт работы: Минимальный опыт коммерческой разработки на платформе .NET (C#) не менее 2 лет. Опыт работы в командах с использованием Agile/Scrum-методологий приветствуется.
  • Стек технологий: Глубокое знание платформы .NET Core/.NET 5+, языка C# 8+, ASP.NET Core (Web API, MVC), Entity Framework Core, баз данных (MS SQL, PostgreSQL), а также понимание принципов RESTful API, HTTP-протокола и стандартов аутентификации (JWT, OAuth2).

contents

7.2. Профессиональные компетенции и навыки

  • Архитектурные паттерны: Уверенное знание и практическое применение архитектурных паттернов: MVC, Clean Architecture, Onion Architecture, CQRS, Repository/Unit of Work. Понимание принципов SOLID, DRY, KISS и их применение при написании кода.
  • Тестирование: Навыки написания юнит-тестов с использованием мок-объектов (Moq, NSubstitute) и фреймворков xUnit/NUnit. Понимание пирамиды тестирования и разницы между юнит-, интеграционными и E2E-тестами.
  • Инструменты: Владение IDE (Visual Studio 2022+, Rider), системами контроля версий (Git), CI/CD-инструментами (Azure DevOps, GitHub Actions), а также средствами профилирования и отладки.

contents

7.3. Знание стандартов и гайдлайнов

  • Стандарты кодирования: Глубокое знание принятых в организации стандартов и гайдлайнов разработки, включая правила именования, структурирования проектов, форматирования кода. Понимание и умение работать с анализаторами кода (SonarQube, StyleCop, Roslyn).
  • Безопасность: Знание основ безопасной разработки, включая защиту от OWASP Top 10 (SQL-инъекции, XSS, CSRF, небезопасная десериализация) и умение применять соответствующие практики в .NET-приложениях.
  • Документирование: Владение языками разметки (Markdown, XML) для написания технической документации, спецификаций API в OpenAPI/Swagger, а также умение составлять четкие и понятные технические комментарии к коду.

contents

7.4. Мягкие навыки (Soft Skills)

  • Коммуникация: Способность ясно и аргументированно излагать технические решения как коллегам-разработчикам, так и нетехническим участникам команды (аналитикам, заказчикам). Умение слушать и учитывать мнение других.
  • Командная работа: Готовность работать в распределенной команде, помогать коллегам, делиться знаниями и конструктивно взаимодействовать в процессе совместной разработки, особенно при code review.
  • Самоорганизация: Способность управлять собственным временем, приоритетами и выполнять задачи с минимальным контролем. Инициативность и ответственность за результат.

sections

8. Условия труда

contents

8.1. Режим и график работы

.Net-разработчик работает в соответствии с правилами внутреннего трудового распорядка организации «Генеральная». Стандартный рабочий график составляет 40 часов в неделю с понедельника по пятницу, с гибким началом рабочего дня в пределах с 8:00 до 11:00. Рабочее время включает перерыв на обед продолжительностью 1 час, который определяется индивидуально в зависимости от графика.

Возможна удаленная работа (в соответствии с политикой организации) при условии наличия стабильного интернет-соединения и соблюдения требований информационной безопасности. Участие в регулярных командных встречах и дейли-митингах (в рамках Scrum) является обязательным в согласованное время (например, ежедневно в 10:00). Разработчик обязан быть на связи в рабочие часы с возможностью оперативного подключения к решению критических проблем.

contents

8.2. Обеспечение рабочего места и инструментами

Организация предоставляет .Net-разработчику технические средства, необходимые для работы: компьютер или ноутбук с достаточной производительностью (процессор Intel Core i7 или аналогичный, оперативная память не менее 16 ГБ, SSD-накопитель), дополнительные мониторы (по запросу), а также лицензионное программное обеспечение (Windows, Visual Studio Enterprise, ReSharper, другие инструменты по согласованию).

Разработчику предоставляется доступ к корпоративным системам: Active Directory, корпоративной электронной почте, мессенджерам (Teams, Slack), системам управления проектами (Jira, Azure DevOps), репозиториям (GitHub/GitLab) и CI/CD-системам. Обеспечивается техническая поддержка и обслуживание предоставленного оборудования.

contents

8.3. Условия командирования и дополнительных мероприятий

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

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

sections

9. KPI и показатели эффективности

contents

9.1. Ключевые показатели эффективности (KPI)

Оценка эффективности .Net-разработчика производится на основе следующих ключевых показателей (KPI):

  • Качество кода: Количество дефектов, обнаруженных в процессе тестирования и code review, на 1000 строк кода (порог — не более 5 критических/блокирующих замечаний на спринт). Процент покрытия кода юнит-тестами (порог — не менее 80% для критических компонентов).
  • Производительность: Соблюдение сроков выполнения задач (порог — не более 10% задач с просрочкой более 20%). Соотношение затраченного времени к запланированному (Accuracy Rate), отклонение не более 15%.
  • Процессная дисциплина: Наличие и качество комментариев в коде, соответствие стандартам кодирования (Score на основе статического анализа, не менее 90%). Своевременность и качество code review (среднее время ревью не более 24 часов).

contents

9.2. Дополнительные показатели и поведенческие факторы

Помимо количественных KPI, оценивается вклад разработчика в общую экосистему разработки:

  • Вовлеченность и проактивность: Участие в улучшении процессов, предложение архитектурных улучшений, помощь коллегам, менторство новичков. Регулярность и качество документации создаваемых модулей.
  • Управление знаниями: Проведение внутренних технических сессий, написание статей во внутренний блог или базу знаний, участие в оценке внедрения новых технологий.
  • Скорость решения инцидентов: Среднее время восстановления (MTTR) для критических проблем в закрепленных сервисах (порог — не более 2 часов).

contents

9.3. Периодичность оценки и пересмотра KPI

Оценка эффективности производится ежемесячно в рамках встреч 1-на-1 с руководителем, а также в конце каждого спринта (ретроспектива). Итоговая оценка (Performance Review) проводится каждые полгода и учитывается при начислении переменной части вознаграждения (премии) и при рассмотрении вопроса о повышении в должности.

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

sections

10. Бизнес-процессы, чеклисты и сценарии рабочих потоков

contents

10.1. Стандартный сценарий начала работы над задачей

  • Шаг 1. Получение задачи: Разработчик получает задачу из системы управления проектами (Jira/YouTrack), содержащую описание требований, критерии приемки и приоритет. Задача должна быть назначена на исполнителя.
  • Шаг 2. Уточнение требований: При необходимости разработчик проводит уточняющую встречу с аналитиком или заказчиком для детализации требований. Уточненные требования фиксируются в комментариях к задаче.
  • Шаг 3. Оценка и планирование: Разработчик оценивает трудозатраты (в стори-пойнтах или часах) и согласовывает сроки выполнения с руководителем. Для сложных задач разрабатывается техническое решение (Design Document).
  • Шаг 4. Создание ветки и старт разработки: Создается новая ветка от актуальной основной (develop/main) с осмысленным именем, отражающим идентификатор задачи (feature/XXX-task-name).

contents

10.2. Сценарий выполнения разработки и локального тестирования

  • Шаг 5. Написание кода: Разработка функциональности в соответствии с требованиями и технической документацией. Обязательное соблюдение стандартов кодирования, использование принятых архитектурных паттернов.
  • Шаг 6. Написание тестов: Создание юнит-тестов для покрытия новой логики, а также необходимых интеграционных тестов. Проверка прохождения всех тестов локально.
  • Шаг 7. Саморевью и рефакторинг: Проведение саморевью кода, оптимизация, переименование и рефакторинг для повышения читаемости и поддерживаемости, удаление мертвого кода и комментариев.
  • Шаг 8. Сборка и проверка: Локальная сборка проекта (dotnet build) и прогон всех тестов (dotnet test). Убедиться, что сборка проходит без ошибок и предупреждений.

contents

10.3. Сценарий создания и проведения code review

  • Шаг 9. Создание Pull Request: Запушка изменений в удаленную ветку и создание Pull Request (PR). В описании PR указать: идентификатор задачи, краткое описание изменений, инструкцию для проверяющих, скриншоты (при изменении UI) и результаты ручного тестирования.
  • Шаг 10. Автоматические проверки: Дождаться успешного прохождения всех CI-пайплайнов (сборка, тесты, статический анализ, проверка покрытия). Если проверка падает — исправить и обновить PR.
  • Шаг 11. Процесс ревью: Проверяющий анализирует код, оставляя комментарии. Автор оперативно исправляет замечания или аргументирует свою позицию. Количество итераций ревью должно быть минимальным. Цель — получение аппрува (Approved) от двух проверяющих (или одного в случае незначительных изменений).
  • Шаг 12. Мерж: После получения аппрувов и прохождения всех проверок, автор или руководитель выполняет мерж в основную ветку с соблюдением стратегии (Squash and Merge или Rebase and Merge) и удалением рабочей ветки.

contents

10.4. Сценарий релиза и развертывания

  • Шаг 13. Подготовка к релизу: По завершении спринта или релизного цикла, все изменения в основной ветке проходят финальное тестирование в Staging-окружении. Разработчик участвует в smoke-тестировании ключевой функциональности.
  • Шаг 14. Выкатка в продуктив: Развертывание осуществляется через CI/CD-пайплайн (Azure Pipelines / GitHub Actions) с соблюдением процедуры Change Management (заявка на релиз). При необходимости используется стратегия Blue-Green Deployment или Canary Releases для минимизации рисков.
  • Шаг 15. Пострелизный мониторинг: После развертывания разработчик совместно с DevOps отслеживает метрики приложения (Application Insights, Grafana), логи и алерты в течение первых 2-х часов после релиза. В случае аномалий — мгновенный откат или фикс-патч.
  • Шаг 16. Закрытие релизной версии: Создание тега в репозитории, обновление документации (CHANGELOG.md). Закрытие всех задач, связанных с релизом, в системе управления проектами.

contents

10.5. Сценарий работы с инцидентами и багами

  • Шаг 17. Поступление инцидента: Получение уведомления о баге или инциденте из системы трекинга (Jira, Zendesk) или от эксплуатационной команды. Инциденты категоризируются по критичности (Blocker, Critical, Major, Minor).
  • Шаг 18. Диагностика и воспроизведение: Разработчик немедленно приступает к диагностике: анализирует логи, мониторинг, и пытается воспроизвести проблему в тестовом окружении. При необходимости запрашивает дампы памяти, трейсы или логи пользователя.
  • Шаг 19. Разработка фикса: Создание отдельной ветки (hotfix/) для критических ошибок. Фикс должен содержать минимально необходимые изменения, покрытые тестами. Проведение ускоренного code review.
  • Шаг 20. Развертывание фикса и RCA: Срочное развертывание фикса в продуктивную среду (внеплановый релиз). После стабилизации — проведение Root Cause Analysis (RCA) и документирование проблемы для предотвращения в будущем.

contents

10.6. Чеклист соблюдения стандартов перед созданием Pull Request

Перед созданием Pull Request разработчик обязан проверить себя по следующему чеклисту:

  • Код соответствует стандартам и гайдлайнам разработки: правила именования, форматирование, отсутствие магических чисел и строк.
  • Добавлены или обновлены юнит-тесты для покрытия новой логики; все тесты проходят локально.
  • Внесены XML-комментарии для всех публичных классов и методов, а также пояснения для сложных участков кода.
  • Проверена производительность: отсутствие потенциально тяжелых операций в циклах, корректное использование асинхронности (async/await), отсутствие блокирующих вызовов.
  • Проверена безопасность: отсутствие уязвимостей (SQL-инъекции, XSS, инъекции), данные валидируются, секреты не хранятся в коде.
  • Описание PR содержит исчерпывающую информацию о сути изменений, ссылку на задачу и инструкцию для тестирования.