Remote Position
[Remote] Senior Software Engineer
๐ Remote ยท United States
๐ผ Full-time
Note: The job is a remote job and is open to candidates in USA. Crisis Prevention Institute is a worldwide provider of evidence-based de-escalation, crisis prevention training, and dementia care services. The Senior Software Engineer will build and operate full-stack features for the cloud-native Integrated Training and Learning platform, with a strong emphasis on C#/.NET backend services, Azure, distributed systems, and React. The role also involves end-to-end feature ownership, operational excellence, AI-assisted engineering, collaboration, mentoring, and continuous improvement.
Responsibilities
- Design, build, test, deploy, and support features across the ITL stack: C#/.NET microservices, CQRS command and query handlers, Azure Service Bus event consumers and publishers, Azure SQL data models, and React front-end components
- Partner with the product owner and designer to understand the customer problem behind each request, challenge assumptions, and propose the simplest solution that delivers the outcome
- Break epics into small, independently shippable increments; ship to production frequently behind feature flags and validate with real usage data
- Write automated unit, integration, and contract tests as part of every change; treat test coverage and observability (logging, metrics, tracing) as part of the definition of done
- Demonstrate completed work to business stakeholders and articulate the customer and business benefit, not just the technical change
- Own the health of the services your squad is responsible for: monitor dashboards and alerts, participate in the on-call rotation, and respond to and resolve production issues
- Participate in blameless incident reviews; drive follow-up actions that prevent recurrence (tests, alerts, runbooks, architectural fixes)
- Continuously improve the codebase you work in: reduce technical debt incrementally, improve build and deployment times, and simplify where complexity is not earning its keep
- Contribute to the incremental decoupling of ITL domain data from upstream enterprise systems by ensuring each feature you build moves the data ITL needs into ITL-owned services
- Apply secure coding practices and accessibility standards (WCAG 2.1 AA) as a default part of engineering work
- Use AI-assisted development tools (e.g., GitHub Copilot, Claude, Cursor) as a core part of the daily workflow for design exploration, code generation, test writing, refactoring, and debugging, while owning the quality, security, and correctness of everything shipped
- Experiment with new AI tools and techniques, measure their impact on speed and quality, and share what works (and what does not) with the squad
- Identify opportunities where AI capabilities could improve the ITL product or internal tooling and bring them to the squad with a proposed proof of concept
- Bring curiosity to the work: investigate unfamiliar parts of the system, ask why, and share what you learn in code reviews, documentation, and team discussions
- Run small, time-boxed technical experiments and spikes to de-risk decisions; present findings and recommendations to the squad with evidence
- Give and receive thoughtful, direct code review feedback; mentor less experienced engineers and help them grow
- Contribute to retrospectives with candor, own your part in what went wrong, and follow through on improvement actions
- Perform other position-related duties as assigned
Skills
- Bachelor's degree in computer engineering, computer science, or a related field, or equivalent practical experience
- Five years or more of professional software engineering experience building and operating production web applications and services
- Three years or more of hands-on experience with C# and .NET (ASP.NET Core, .NET 6+) building APIs and backend services
- Experience building and maintaining distributed, event-driven systems, including message brokers (Azure Service Bus or equivalent) and asynchronous processing patterns
- Experience with CQRS, domain-driven design, or similar patterns that separate reads from writes and model business domains explicitly
- Experience building front-end features in React (hooks, state management, component design) and modern JavaScript/TypeScript
- Experience designing relational data models and writing performant SQL (SQL Server / Azure SQL)
- Experience deploying and operating services in Azure (App Service, Functions, Service Bus, Azure SQL, Azure Monitor / Application Insights) or an equivalent cloud platform
- Experience with automated testing across the stack (unit, integration, contract, and end-to-end) and CI/CD pipelines (Azure DevOps or GitHub Actions)
- Experience working on an agile team with continuous delivery practices: small batches, trunk-based development or short-lived branches, feature flags, and frequent production deployments
- Knowledge of RESTful API design, authentication/authorization patterns, and security-based design patterns
- Knowledge of observability practices: structured logging, metrics, distributed tracing, and alerting
- Experience using AI-assisted development tools (e.g., GitHub Copilot, Claude, Cursor) as part of a daily engineering workflow
- Yearly personal development demonstrated by successfully completing an accredited software engineering course, acquiring a software engineering-related certification, or presenting a completed learning project to the team
- Curiosity: asks why before how, digs into unfamiliar code and systems, and seeks to understand the learner, instructor, and customer problem behind every request
- Ownership: treats the services and features they touch as theirs to keep healthy, from design through production support, and does not wait to be assigned a problem before solving it
- Drive: a bias toward shipping working software in small, frequent increments and following through until the outcome is achieved, not just the ticket closed
- Experimentation: comfortable proposing and running small, time-boxed experiments (spikes, proofs of concept, A/B tests) and letting evidence, not opinion, settle technical debates
- Learning from failure: participates openly in blameless retrospectives and incident reviews, shares mistakes as lessons, and turns them into guardrails, tests, or runbooks
- Continuous improvement: leaves every codebase, process, and document a little better than they found it
- Ability to take an ambiguous product problem and drive it to a well-designed, well-tested, shipped solution with minimal supervision
- Ability to communicate technical trade-offs clearly to both engineers and non-technical stakeholders, in writing and in conversation
- Ability to give and receive direct, respectful feedback and to disagree productively while committing to team decisions
- Ability to manage multiple, competing priorities and attain the best possible outcomes for the organization
Company Overview