- Location
- Vancouver · Vancouver, Canada
- Type
- Full-time
- Department
- Global Services Technology
- Seniority
- Senior
- Experience
- 8+ years
- Source
- Greenhouse
Description
About us
Appnovation is a global, full-service digital partner that combines Strategy, Experience & Design, Engineering and Managed Services. We build digital solutions that deliver real impact today and serve as foundations for future growth. Bold ambition. Practical action. Endless possibilities.
As Technical Lead, you will be the senior .NET authority on a dedicated, cross-functional scrum team building a modern operational SaaS platform for K-12 education. The platform helps school divisions automate administrative workflows, manage information across their organization, and surface operational insight - which in practice means long-running, multi-step business processes, heavy integration between systems, and reporting that has to hold up under scrutiny from district administrators.
Your team operates as an embedded extension of the client's product and engineering organization, not as an external group receiving isolated tickets. It owns assigned product services end-to-end: analysis, planning, implementation, quality assurance, documentation, and release readiness. The client sets product direction and owns architecture and engineering standards; your team is accountable for converting prioritized objectives into production-ready functionality without needing day-to-day coordination. That means you will be working inside an established codebase and an established set of standards, influencing them through implementation plans and evidence rather than unilateral redesign.
This is a manager-level role. Alongside deep technical ownership, you will lead a team that includes embedded business analysis and QA capability - setting expectations, developing people, running sprint delivery, and representing the technical position directly to client stakeholders. Depth in C# and .NET Core is the primary bar for this role: you should be the person the team escalates to on runtime behaviour, async correctness, EF Core query performance, and service design. The platform is moving from pilot deployments toward general availability, so decisions you make need to survive real multi-tenant load.
Key Responsibilities:
- Leading a cross-functional scrum team - developers, business analysis, and QA - accountable end-to-end for assigned product services and feature areas
- Writing and reviewing production C# and .NET Core code daily, and setting the standard for what good looks like in the codebase
- Working within the client's established architecture and engineering standards, and influencing them through implementation plans and evidence rather than unilateral decisions
- Producing technical analysis and implementation plans for significant changes, ahead of development starting
- Designing Temporal workflow implementations - activity boundaries, retry and compensation strategy, idempotency, and workflow versioning
- Implementing event-driven integration against defined pub/sub contracts, and flagging where contracts need to change
- Implementing authorization against OpenFGA policies and Keycloak-backed OAuth 2.0 / OpenID Connect flows in a multi-tenant context
- Working across PostgreSQL transactional models and ClickHouse reporting data within the client's data architecture
- Diagnosing and resolving performance issues across the .NET stack - EF Core query plans, connection pooling, async/await misuse, memory and allocation behaviour
- Owning the team's sprint delivery - refinement, planning, review, and retrospective - without the client needing to act as delivery coordinator
- Ensuring merge requests are small and reviewable, peer review is substantive, and CodeRabbit and pipeline feedback is addressed rather than waved through
- Holding the team to a definition of done that includes requirements validation, automated test coverage, documentation, release readiness, and supportability
- Owning post-release stabilization and defect resolution for recently delivered work
- Escalating risks, dependencies, and missing business decisions early
- Line-managing and mentoring engineers - goal setting, performance feedback, career development, and technical onboarding
- Partnering with client product and engineering stakeholders on trade-offs, sequencing, and feasibility
What we are looking for
Must-Have:
- At least 8 years of professional software engineering experience, with the majority in C# and .NET in production environments
- Recognised depth in .NET Core and ASP.NET Core - you have owned non-trivial services end to end and can reason about the runtime, not just the framework surface
- Expert-level Entity Framework Core, including migrations, query performance tuning, and knowing when to drop to raw SQL
- Deep understanding of asynchronous and concurrent programming in .NET, including async/await pitfalls, cancellation, and thread-pool behaviour
- At least 2 years leading engineering teams, with direct experience managing, mentoring, and developing engineers
- Demonstrated ability to design and deliver within an existing architecture, including reading unfamiliar codebases quickly and respecting established patterns
- Experience leading a dedicated or embedded delivery team inside a client's environment, processes, and repositories
- Track record running sprint delivery without a separate delivery manager - refinement through retrospective
- Production experience with a workflow orchestration engine (Temporal strongly preferred; Cadence, Camunda, or Step Functions considered)
- Strong grasp of event-driven architecture and pub/sub messaging patterns
- Practical experience implementing authentication and authorization for multi-tenant or role-sensitive applications using OAuth 2.0 and OpenID Connect
- Strong relational data modelling skills in PostgreSQL, with an understanding of when analytical workloads justify a separate store
- Experience with CI/CD pipelines and release process, ideally in GitLab
- Confidence communicating technical decisions directly to non-technical client stakeholders
- Must be located in British Columbia, Canada
Technologies
- Core: C#, .NET Core, ASP.NET Core, Entity Framework Core, worker services, asynchronous processing
- APIs: REST, OpenAPI/Swagger, API versioning strategies
- Orchestration and Integration: Temporal workflows, integration services, event-driven pub/sub
- Data: PostgreSQL, ClickHouse, relational data modelling, reporting and analytics data
- Identity and Authorization: Keycloak, OpenFGA, OAuth 2.0, OpenID Connect, SSO, role- and policy-based authorization
- Testing: xUnit/NUnit, Moq, Testcontainers, unit, integration and API testing, Playwright end-to-end testing
- Engineering and Collaboration: GitLab, GitLab CI/CD, CodeRabbit automated code review, Jira, Jira Product Discovery, Jira Service Management, Confluence
- Frontend context: Next.js, React, TypeScript, Tailwind CSS, Shadcn/UI, component-driven development
Nice-to-Have:
- Working fluency in Next.js, React, and TypeScript - enough to review frontend code and unblock the team
- Experience leading teams that include embedded BA and QA capability, rather than developers only
- SaaS product delivery experience, particularly through a pilot-to-GA transition
- Hands-on Temporal experience, including workflow versioning and testing strategies
- Familiarity with fine-grained authorization models (Zanzibar-style / ReBAC) beyond OpenFGA specifically
- Experience with ClickHouse schema design, materialized views, or high-cardinality analytics
- Background in Domain-Driven Design and bounded context definition
- Experience with CQRS and event sourcing patterns
- Experience with Canadian public-sector or education data privacy requirements (PIPEDA, provincial FIPPA), including data residency considerations
- Consulting or agency experience delivering to external clients
- Experience running Jira Service Management as part of a support or run model
Who you are
- You are a pragmatic engineer who makes decisions with incomplete information, documents the reasoning, and revisits them when the evidence changes.
- You lead by raising the capability of the people around you, and you would rather ship a well-understood system than a clever one nobody else can maintain.
- You treat a feature as incomplete until it is tested, documented, and supportable - finishing the code is the middle of the job, not the end.
What Appnovation Offers
- Challenging and rewarding work with real impact
- Direct Access to Cutting-Edge AI Platforms
- Diverse and Inclusive Culture
- Growth opportunities for personal and professional development
- A collaborative and innovative work environment where your ideas are valued
- Exposure to exciting projects and high-profile clients
- Supportive work environment with access to company leaders
- Hybrid working model
Accommodations are available upon request throughout the recruitment process.