Crisis Prevention Institute
Senior Software Engineer - Hybrid
Автоматический пересказ вакансии на русском. Полный текст на языке оригинала и форма отклика — на сайте работодателя.
Senior-инженер в продуктовую команду облачной обучающей платформы ITL. Full-stack роль с сильным уклоном в backend: C#/.NET микросервисы в Azure и регулярная работа с React-фронтендом.
Задачи
- Проектировать, разрабатывать, тестировать, деплоить и поддерживать фичи по всему стеку ITL: C#/.NET микросервисы, CQRS-обработчики, консьюмеры и паблишеры событий Azure Service Bus, модели данных Azure SQL и компоненты React
- Совместно с product owner и дизайнером разбираться в клиентской проблеме, оспаривать допущения и предлагать простейшее решение
- Дробить эпики на небольшие независимо поставляемые инкременты, часто релизить за feature-флагами и валидировать по реальным данным использования
- Писать автоматические unit-, integration- и contract-тесты для каждого изменения; считать покрытие тестами и observability частью definition of done
- Демонстрировать готовую работу бизнес-стейкхолдерам и объяснять пользу для клиента и бизнеса
- Отвечать за здоровье сервисов команды: мониторить дашборды и алерты, участвовать в on-call ротации, реагировать и устранять продакшн-инциденты
- Участвовать в blameless-разборах инцидентов и внедрять действия, предотвращающие повторение
- Постоянно улучшать кодовую базу: снижать техдолг, ускорять сборку и деплой, упрощать избыточную сложность
- Участвовать в постепенном отделении доменных данных ITL от вышестоящих корпоративных систем
- Применять практики безопасного кодирования и стандарты доступности WCAG 2.1 AA
- Использовать AI-инструменты разработки (GitHub Copilot, Claude, Cursor) в ежедневном workflow, отвечая за качество и безопасность результата
- Экспериментировать с новыми AI-инструментами и техниками, измерять их влияние на скорость и качество, делиться результатами с командой
- Находить возможности применения AI в продукте ITL или внутреннем тулинге и предлагать proof of concept
- Проводить небольшие time-boxed технические эксперименты и спайки для снижения рисков, представлять выводы и рекомендации команде
- Давать и получать содержательную обратную связь на код-ревью, менторить менее опытных инженеров
- Участвовать в ретроспективах, признавать свою роль в неудачах и доводить улучшения до конца
Требования
- Bachelor's degree в computer engineering, computer science или смежной области либо эквивалентный практический опыт
- 5+ лет профессионального опыта разработки и эксплуатации продакшн веб-приложений и сервисов
- 3+ года практического опыта с C# и .NET (ASP.NET Core, .NET 6+) в разработке API и backend-сервисов
- Опыт построения и поддержки распределённых event-driven систем, включая брокеры сообщений (Azure Service Bus или аналог) и асинхронные паттерны обработки
- Опыт с CQRS, domain-driven design или похожими паттернами разделения чтения и записи
- Опыт разработки front-end фич на React (hooks, state management, component design) и современном JavaScript/TypeScript
- Опыт проектирования реляционных моделей данных и написания производительного SQL (SQL Server / Azure SQL)
- Опыт деплоя и эксплуатации сервисов в Azure (App Service, Functions, Service Bus, Azure SQL, Azure Monitor / Application Insights) или эквивалентной облачной платформе
- Опыт автоматизированного тестирования по всему стеку (unit, integration, contract, e2e) и CI/CD пайплайнов (Azure DevOps или GitHub Actions)
- Опыт работы в agile-команде с практиками continuous delivery: маленькие батчи, trunk-based development или короткоживущие ветки, feature flags, частые релизы в продакшн
- Знание RESTful API design, паттернов аутентификации/авторизации и security-based design patterns
- Знание практик observability: структурированное логирование, метрики, распределённый трейсинг, алертинг
- Опыт использования AI-инструментов разработки (GitHub Copilot, Claude, Cursor) в ежедневном workflow
- Ежегодное профессиональное развитие: пройденный аккредитованный курс, профильная сертификация или презентация учебного проекта команде
- Любознательность: спрашивать «почему» до «как», разбираться в незнакомом коде и системах
- Ownership: относиться к сервисам и фичам как к своим, от дизайна до продакшн-поддержки
- Drive: стремление поставлять работающий софт небольшими частыми инкрементами и доводить до результата
- Опыт проведения небольших time-boxed экспериментов (спайки, PoC, A/B-тесты) и принятия решений на основе данных
- Открытое участие в blameless-ретроспективах и разборах инцидентов, превращение ошибок в guardrails, тесты и runbooks
- Непрерывное улучшение: оставлять кодовую базу, процессы и документацию лучше, чем они были
- Способность взять неоднозначную продуктовую задачу и довести её до хорошо спроектированного, протестированного и зарелиженного решения с минимальным надзором
- Способность понятно объяснять технические компромиссы инженерам и нетехническим стейкхолдерам устно и письменно
- Способность давать и принимать прямую уважительную обратную связь и продуктивно не соглашаться, принимая решения команды
- Способность управлять несколькими конкурирующими приоритетами
Условия
- Конкурентная зарплата
- Комплексный соцпакет
- 401(k)
- Оплачиваемый отпуск (PTO)
- Health & Wellness Days
- Оплачиваемое время на волонтёрство
- Продолжение обучения и тренинги
- Гибридный или удалённый график
- Оплачиваемый родительский отпуск
Навыки
- C#
- .NET
- ASP.NET Core
- .NET 6+
- CQRS
- Event-driven architecture
- Azure Service Bus
- Azure SQL
- SQL Server
- Azure
- Azure App Service
- Azure Functions
- Azure Monitor
- Application Insights
- React
- JavaScript
- TypeScript
- REST API
- CI/CD
- Azure DevOps
- GitHub Actions
- Domain-Driven Design
- GitHub Copilot
- Claude
- Cursor
- WCAG 2.1 AA