Добро пожаловать

в личный блог о разработке, книгах и полезных материалах

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

Специализации
.Net C# программист
Тип занятости
Полная занятость, частичная занятость
Формат работы
На месте работодателя, Удалённо, Гибрид
Опыт работы
22 года
Апр 2024 — Июл 2026 2 года 4 мес

Московский аэропорт Домодедово

Москва · rabota.dme.ru

Перевозки, логистика, склад, ВЭД · Транспортно-логистические комплексы, порты (воздушный, водный, железнодорожный)

Ведущий разработчик

Работодатель: Аэропорт Домодедово, Авиаперевозки

Апрель 2024 — Январь 2025 (10 месяцев)

Проект
Электронная тендерная площадка — платформа для взаимодействия контрагентов и проведения торгов.
Команда
2 разработчика, 2 QA-инженера, 1 аналитик, 1 менеджер проекта.
Стек
.NET Framework 4.8, C#, ASP.NET Web Forms, ADO.NET, MS SQL Server (Stored Procedures), JavaScript, Bootstrap 5.
Переходной стек
Vue.js, Entity Framework, CQRS.
Интеграции
IBM Lotus Notes, Microsoft BizTalk.

Примеры задач

  1. Рефакторинг модуля регистрации: Перевёл монолитную форму на многошаговый мастер (wizard) с динамическим ветвлением логики для юридических и физических лиц.
  2. Усиление безопасности аутентификации: Внедрил строгую валидацию email (регулярные выражения), контроль уникальности логина с учётом статуса заявки и блокировку повторного использования скомпрометированных логинов. Перевёл механизм восстановления пароля с email на логин.
  3. Стабилизация кросс-системной интеграции (ЭПВК ↔ КНТ): Устранил критические рассинхроны жизненного цикла контрагентов через BizTalk (например, блокировка в ЭПВК при архивации в КНТ, которая ранее не срабатывала).
  4. Обработка сущностей для физлиц: Реализовал корректную валидацию и обработку данных, предотвратив падения системы при отсутствии обязательных полей.
  5. Миграция и выравнивание исторических данных: Разработал комплекс SQL-скриптов для консолидации трёх XML-схем в одну, массовой коррекции статусов (registered/deleted/info) и переноса полей (auction_email → login_name) для формирования корректных записей в BizTalk.
  6. Модернизация личного кабинета: Реализовал безопасную смену логина/email с принудительным завершением текущей сессии (force logout) и автоматической синхронизацией изменений во внешних системах (Lotus Notes, почтовые рассылки).
  7. Улучшение UX валидации: Добавил информативную проверку занятости логина в реальном времени и разграничение видимости вкладок интерфейса.
  8. Разработка модуля уведомлений с нуля: Спроектировал и реализовал страницу управления шаблонами почтовых уведомлений с поддержкой динамической подстановки переменных, что позволило бизнесу менять тексты рассылок без участия разработки.

Февраль 2025 — Июль 2026 (1 год и 6 месяцев)

Проект
Внутренний корпоративный чат (мессенджер) — разработка аналога WhatsApp для корпоративных коммуникаций.
Команда
1 разработчик, 1 QA-инженер, 1 аналитик, 1 менеджер проекта.
Технологии и стек
  • Архитектура: Client-Server, MVC + Service Layer + Repository, SignalR (real-time)
  • Backend: C#, .NET 8, ASP.NET Core MVC, SignalR, EF Core 8, Serilog, Cookie Auth, LDAP/AD
  • Frontend: JavaScript, Bootstrap 5, Syncfusion EJ2, Razor Views
  • БД: PostgreSQL
  • DevOps: GitLab, CI/CD
  • Тестирование: xUnit, Moq, FluentAssertions
  • Мониторинг: Serilog (Console/File/Seq)

Примеры задач

  1. Принял проект на ранней стадии (~20 коммитов, нерабочее состояние): монолитное решение с совмещёнными слоями (SignalR, БД, бизнес-логика), единым контроллером с множеством действий; после ухода предыдущего разработчика провёл аудит, стабилизацию и поэтапный рефакторинг в слоистую архитектуру. Стек UI (ASP.NET Core MVC, Razor Views, Syncfusion, Cookie Auth) сохранён по согласованию с заказчиком в рамках сроков проекта.
  2. Спроектировал и реализовал целевую слоистую архитектуру решения (Web → Services → Repositories → EF) на .NET 8 с разделением на 10+ проектов solution.
  3. Спроектировал доменную модель PostgreSQL и реализовал persistence-слой: EF Core, Fluent API, миграции, seed-данные, DbContext с поддержкой Data Protection keys.
  4. Реализовал слой доступа к данным: репозитории по доменным областям, Unit of Work, Query Pipeline для фильтрации, сортировки и пагинации административных экранов.
  5. Разработал сервисный слой бизнес-логики: аутентификация, пользователи, сообщения, чат, справочники, аудит и централизованная обработка ошибок через DI.
  6. Внедрил интеграцию с Active Directory/LDAP и RBAC: валидация учётных записей, role-based доступ, policy-based авторизация, переключение между провайдерами БД и AD.
  7. Реализовал модуль управления сессиями: cookie-аутентификация, политика единой активной сессии, middleware продления сессии.
  8. Разработал real-time подсистему на SignalR: NotificationHub, группы по рабочим станциям и группам, доставка сообщений, статусы sent/delivered/read, online/offline.
  9. Создал веб-приложение ASP.NET Core MVC: REST/MVC контроллеры, Razor Views, middleware pipeline, конфигурация окружений (Dev/Test/Prod).
  10. Реализовал модульный frontend на JavaScript (IIFE, разделение ответственности по доменным модулям): чат, SignalR-клиент, дерево получателей, административные гриды Syncfusion, единый API-клиент и обработка ошибок.
  11. Настроил структурированное логирование Serilog и конфигурацию приложения (БД, AD, сессии, лимиты SignalR).
  12. Покрыл проект автотестами: unit-тесты сервисов и провайдеров, integration-тесты контроллеров и SignalR hub; подключил прогон тестов в CI.
  13. Подготовил техническую документацию: архитектура, структура проекта, deployment, security, API и руководства по эксплуатации.
  14. Довёл проект до production-версии (~150 коммитов): система выведена в промышленную эксплуатацию и на первом этапе используется более чем 300 пользователями на терминальных рабочих стойках.

Ноябрь 2025 — Март 2026 (5 месяцев)

Проект
Сервис оплаты парковочных мест аэропорта на базе системы ABACUS (DESIGNA, Германия).
Команда
2 разработчика, 1 QA-инженер, 1 аналитик, 1 менеджер проекта.
Стек
MS SQL Server (4 БД, 500+ таблиц, 2500+ хранимых процедур)

Примеры задач

  1. Исправление логики обнуления абонементов (Yandex Taxi): Провёл анализ SQL-процедур и интеграционной цепочки, нашёл точку разрыва между обработкой проезда и активацией/обнулением. Реализовал передачу RFID-идентификатора в обработку, полностью устранив сбой в бизнес-логике.
  2. Корректная фиксация въезда и выезда: Разобрал процесс бронирования по шагам, выявил корневые причины незафиксированных въездов (ошибки в процедуре автоматического закрытия броней, некорректная работа со статусами). Создал решение для согласованной обработки жизненного цикла брони, исключив финансовые потери бизнеса.
  3. Безопасная массовая очистка устаревших данных: Подготовил процедуры удаления карт, клиентов и транспортных средств с централизованным логированием, использованием транзакций и штатных сервисных процедур системы. Настроил SQL Agent Jobs для автоматического выполнения очистки безопасными батчами.
  4. Автоматизация ограничений срока действия абонементов: Реализовал механизм временного ограничения срока действия абонемента (новые поля конфигурации, процедуры установки/снятия, автосброс по Job, журналирование, роль доступа и веб-интерфейс для операторов). Система теперь автоматически возвращает параметры в штатный режим после окончания периода.
Сен 2021 — Ноя 2023 2 года 3 мес

First Line Software

Черногория · www.firstlinesoftware.com

Информационные технологии, системная интеграция, интернет · Разработка программного обеспечения

Ведущий разработчик

Работодатель: FLS (First Line Services), Разработка ПО и IT-консалтинг

Заказчик: InnerWorkings (HH Global), Автоматизация глобального маркетингового снабжения, цепочек поставок, полиграфии, мерча и упаковки

3 целевых клиента: InnerWorkings, Anheuser-Busch InBev, The Coca-Cola Company

Общее для 3 команд

  • Процессы: Scrum (2-недельные спринты: планирование, имплементация + тесты, Code Review, QA, демо, регресс, ретроспектива).
  • Инструменты и процессы: Visual Studio, JetBrains (ReSharper), Jira, Confluence, Bitbucket.

Ноябрь 2021 — Февраль 2022 (4 месяца)

Целевой клиент: внутренняя разработка для InnerWorkings (HH Global)

Проект
VALO, e-Commerce, B2B-платформа (Purchase & Procurement Management System) — международный портал автоматизации снабжения и закупок маркетинговой продукции.
Команда
8 Full-stack разработчиков, Team Lead, 6 QA-инженеров
Технологии и стек
  • Архитектура: Микрофронтенд (Module Federation), Микросервисы (Event-Driven с переходом на Saga), использовались Services-Repositories с переходом на CQRS.
  • Backend: C#, .NET 3.1 / 5, ASP.NET Core Web API, Swagger/OpenAPI, Entity Framework Core с переходом на Dapper, AutoMapper, Fluent Validation
  • Frontend: React, TypeScript, Node.js, Webpack, Babel, Prettier, Yarn / npm
  • Базы данных и хранилища: MS SQL Server (SSMS), Redis, MinIO (Object Storage)
  • Интеграции и брокеры: Apache Kafka
  • DevOps и инфраструктура: Docker, Docker Compose, Kubernetes (kubectl, kubefwd, Helm, YAML), Jenkins
  • Тестирование: xUnit, NUnit
  • Мониторинг и логирование: Splunk

Примеры задач

  1. Валидация медиа-контента: Разработал механизмы проверки консистентности данных при загрузке, реализовав строгое сопоставление Image IDs и физических имён файлов.
  2. Импорт адресов доставки: Реализовал предикативный импорт полей Shipping Address в профили локаций при массовой загрузке мастер-данных.
  3. Развёртывание определений сайтов: Настроил автоматическое развёртывание и синхронизацию глобальных site definitions для новых регионов.
  4. Обработка ошибок импорта: Спроектировал централизованный паттерн журналирования и визуализации ошибок импорта для администраторов платформы, что ускорило диагностику сбоев.
  5. Внедрение статусов согласования: Модернизировал модуль групповых закупок, добавив сквозные бизнес-статусы согласования (approval status).
  6. Расширение структуры данных сорсинга: Интегрировал глобальные рыночные поля (market fields) для поддержки транснациональных закупок.
  7. Оптимизация доступа к данным: Провёл рефакторинг сервиса групповых закупок с миграцией с Entity Framework на Dapper, что повысило производительность MS SQL при массовых транзакциях.
  8. Целостность ценовых данных: Устранил дублирование прайс-листов (duplicate pricing issue) и дублирование наименований номенклатурных позиций на уровне СУБД.
  9. Автоматический пересчёт лимитов: Реализовал бизнес-логику пересчёта пороговых значений (Threshold Management) при динамическом изменении структуры локаций.
  10. Локализация UI локаций: Модернизировал слой представления данных, заменив отображение технических кодов локаций на человекочитаемые корпоративные наименования.
  11. Покрытие тестами: Покрыл критический функционал ядра модульными (unit) и интеграционными (integration) тестами.
  12. Настройка CI/CD: Настроил пайплайны в Jenkins для автоматизации контроля качества, устранил конфликты в перегруженных методах (overloaded methods) и обеспечил стабильный деплой через merge to master.

Февраль 2022 — Май 2022 (4 месяца)

Целевой клиент: Anheuser-Busch InBev, Производство алкогольных и безалкогольных напитков (бренды Bud, Corona, Stella Artois)

Проект
e-Commerce, B2B-платформа (Sales & Order Management System) — международный портал дистрибуции и продаж маркетинговой продукции.
Команда
5 Full-stack разработчиков, Team Lead, 5 QA-инженеров
Стек
FW 4.7.2, C#, ASP.NET MVC, JavaScript, MS SQL Server, Entity Framework

Примеры задач

  1. Оптимизация массового создания позиций: Доработал UI и слой представления данных для корректного автоматического расчёта коэффициентов упаковки (Carton Factor) в режиме Create Multiple.
  2. Расширенная фильтрация дашборда: Внедрил новую систему фильтрации на панели мониторинга (Program Dashboard) для ускорения навигации менеджеров.
  3. Экспорт мастер-данных в Excel: Реализовал подсистему выгрузки брендов, категорий и семейств продуктов, обеспечив корректное форматирование файлов.
  4. Устранение ограничений пагинации в отчётах: Инициировал и реализовал пересмотр модулей генерации тяжёлых отчётов для обеспечения выгрузки полных датасетов без обрезки данных.
  5. Внедрение Dependency Injection: Начал миграцию архитектуры монолита на паттерн DI с использованием контейнера Autofac, обеспечив слабую связанность компонентов.
  6. Интеграция DI в фоновые задачи: Настроил корректное внедрение зависимостей для асинхронных фоновых задач (Jobs) и устранил ошибки инициализации контейнера при старте приложения.
  7. Исправление логики удаления в RFQ и Work Orders: Провёл расследование коллизий, перестроил каскадные механизмы удаления элементов, предотвратив автоматическую отмену заказов при удалении последнего элемента.
  8. Поддержка инвойсов с нулевой стоимостью: Расширил финансовый модуль, интегрировав валидацию и корректную обработку zero cost invoices.
  9. Стабилизация файлового обмена: Устранил уязвимости при генерации URL-адресов для файлов со специальными символами в именах, обеспечив стабильное скачивание отчётов в Advanced Search.
  10. Оптимизация локального окружения: Устранил критические конфликты при установке пакетов через npm и стандартизировал конфигурацию среды разработки для всей инженерной команды.
  11. Нормализация прав доступа к БД: Упорядочил ролевую модель доступа к бэкапам баз данных в соответствии с политиками безопасности.

Февраль 2022 — Октябрь 2023 (1 год и 9 месяцев)

Целевой клиент: The Coca-Cola Company, Производство безалкогольных напитков (бренды Coca-Cola, Fanta, Sprite)

Проект
e-Commerce, B2B-платформа (Sales & Order Management System) — международный портал дистрибуции и продаж маркетинговой продукции.
Команда
15 Full-stack разработчиков, Team Lead, 15 QA-инженеров
Стек
FW 4.7.2, C#, ASP.NET MVC, JavaScript, MS SQL Server, Entity Framework, Autofac (DI)

Примеры задач

  1. Архитектурный рефакторинг legacy-кода: Выполнил масштабный рефакторинг унаследованных модулей, устранив коллизии слияния веток по результатам code review.
  2. Верификация статусов заказов: Реализовал функционал проверки и валидации динамических списков для статусов Pending Approval.
  3. Управление документооборотом: Разработал и внедрил поддержку сущностей Private Document Type и Enquiry Title в системе согласования.
  4. Массовое копирование матричных товаров: Внедрил отказоустойчивые алгоритмы Mass Copy для сложных номенклатурных позиций (Matrix items).
  5. Оптимизация аналитических отчётов: Ускорил генерацию отчётов MRM и MCX, добавив поддержку вариативности номенклатуры, Budget year и Tolerance Review.
  6. Расширение экспорта в Advanced Search: Добавил выгрузку ценовых типов (Pricing Type) и бенчмарк-полей в Excel без потери структуры данных.
  7. Оптимизация рендеринга больших списков: Восстановил корректное отображение интерфейса при одновременной загрузке более 2000 товарных позиций на одной странице.
  8. Оптимизация массового редактирования: Снизил транзакционную нагрузку на таблицы ценовых матриц (pricing tables) при использовании режима bulk edit.
  9. Параметризованная валидация: Внедрил централизованный механизм генерации понятных сообщений об ошибках (Parameterized error labels) на клиенте и сервере.
  10. Устранение Server 500 Error: Проанализировал production logs, локализовал и устранил скрытые инфраструктурные сбои при интеграции новых вендоров.
  11. Контроль Min/Max для Quick Buy: Интегрировал алгоритмы проверки минимальных и максимальных порогов для сценариев быстрого выкупа товаров.
  12. Автоматический расчёт MOQ: Реализовал серверную логику расчёта минимального объёма заказа (Minimum Order Quantity) на странице товара.
  13. Расширение шаблонов импорта: Добавил поддержку размерных сеток (Size fields) и классов использования (Item Usage Class) в массовый импорт позиций.
  14. Исправление локализации выпадающих списков: Устранил системные сбои рендеринга языковых ключей вместо переводов в компонентах Search Criteria на множестве экранов.
  15. Локализация финансовых метрик: Стабилизировал мультиязычное отображение валют и числовых форматов в модуле управления бюджетами (Manager Budget).
  16. Устойчивая интеграция с PNP: Реализовал адаптивную схему парсинга входящих JSON-пакетов от Procurement Network Platform для бесперебойной обработки заказов.
  17. Мониторинг изменения цен: Внедрил систему реактивного отслеживания динамических колебаний стоимости (Run On Price changes) на странице маппинга типов товаров.
  18. Устранение переполнения при отклонении документов: Исправил уязвимость, приводившую к падению приложения при вводе длинных текстовых комментариев в сценариях Document rejection.
  19. Нормализация ролей владельцев программ: Исправил логику назначения и отображения прав Program owners на странице товара при повторном запуске процессов.
  20. Исправление фильтров дашборда: Восстановил корректную работу хронологических фильтров (order date filter) на вкладке заказов дашборда.
  21. Поиск по журналу аудита: Разработал функционал Audit Trail с возможностью полнотекстового поиска по журналам действий пользователей.
  22. Трекинг изменений в уведомлениях: Добавил логирование и отображение истории изменений (change tracking) в модулях Job Info и Edit Notification.
  23. Разграничение прав доступа: Реализовал детальную систему permissions для ценовых матриц и таблиц запросов RFQ/PRFQ в режиме массового редактирования.
Фев 2020 — Сен 2021 1 год 8 мес

ООО Хавейл Мотор Мануфэкчуринг Рус

Новомосковск (Тульская область) · haval.ru

Информационные технологии, системная интеграция, интернет · Разработка программного обеспечения · Системная интеграция, автоматизация технологических и бизнес-процессов предприятия, ИТ-консалтинг

Инженер

Компания: Haval; Продукция: автомобили.

Команда
5 full stack разработчиков, руководитель отдела, 3 тестера.
Распределение времени
  • 80% — разработка на ABAP
  • 20% — разработка на C# (пара проектов)
Роли
SAP ABAP developer, C# Developer.
Основные обязанности
ABAP-разработка новых транзакций в SAP, улучшение имеющихся.
Дополнительные обязанности
Разработка внутреннего корпоративного портала (ASP.NET MVC Core). Предложения по улучшению приложения, отвечающего за сборку автомобилей (WinForms FW 4.7): изменение архитектуры, добавление нового функционала.
Апр 2004 — Янв 2020 15 лет 10 мес

Procter & Gamble

Новомосковск (Тульская область) · russia.pgcareers.com

Товары народного потребления (непищевые) · Бытовая химия, парфюмерия, косметика (продвижение, оптовая торговля) · Бытовая химия, парфюмерия, косметика (производство)

Business Support Specialist

2012 — 2020

Компания: Procter & Gamble; Продукция: Tide, Fary, Pampers.

Команда
3 full stack разработчиков, руководитель отдела, 2 тестера.
Масштаб работ
  • 5–10 новых WinForms проектов разрабатывалось командой каждый год.
  • 100+ проектов на поддержке (размер проектов в среднем 10–20 таблиц в MS SQL).
  • 1 проект был разработан на ASP.NET Core MVC + JS (размер 100+ таблиц).