Expert/Lead C#/.NET Developer
Project description
Client's application is a modern distributed application platform built on .NET and Windows, structured as a monorepo and operated across nine environments. It integrates a 30-year-old core financial system with modern consumers by providing event-driven processing, saga orchestration, API gateway, and observability infrastructure. The platform is maintained by a small, senior team. Engineers here own the full stack from architecture through production operations. The problems the candidate will work on are fundamentally distributed systems and platform engineering problems. A representative sample of current and near-term workstreams: • Blue/green deployment topology: zero-downtime service cutover using RabbitMQ exchange binding management, slot affinity middleware, and a topology reconciler. Stateless, eventually consistent, and operationally simple by design. • Release and deployment pipeline: GitOps-style release management with strongly-typed release candidates, deployment profiles, and CalVer artifact versioning across a nine-environment promotion pipeline. • Structured observability: Splunk Cloud log aggregation, structured log properties, distributed tracing via MassTransit/OpenTelemetry, and RabbitMQ queue metrics. • Regression framework: an event-driven, eventually consistent, embarrassingly parallel regression system that compares PROD and UAT output streams per correlation ID using developer-written reconcilers. • Saga-driven trade processing: multi-stream correlation, idempotent booking, ordered state machine transitions, and durable state across service restarts — all via MassTransit and MongoDB.
Responsibilities
- The successful candidate will join client's team as a senior engineer working remotely from within the EU time zone. They will work autonomously on large, critical subsystems of the platform, possibly lead a small local team (also in the EU), and serve as the primary engineering contact for that team's day-to-day execution. They are not a delivery manager — they are a hands-on engineer who also leads. Day-to-Day Responsibilities
- Design and implement backend features across Kepler's .NET/Windows services, MassTransit sagas, and infrastructure layers.
- Take technical ownership of assigned Kepler subsystems: understand their design rationale, identify improvement opportunities, and drive implementation.
- Possibly lead and mentor EU-based developers: code review, pairing, unblocking, and growing their capability over time.
- Collaborate asynchronously with the NYC-based team lead and wider client's team. Reliable written communication across a 5-6 hour time difference is essential.
- Contribute to design discussions, technical documentation, and architecture decisions as a full peer — not a ticket-taker.
- Maintain and improve observability, deployment practices, and platform reliability for the areas they own
SKILLS
Must have
- - 8+ years of commercial software engineering experience, the majority in server-side .NET development in production environments. - Hands-on experience with RabbitMQ or a comparable broker (Kafka, Azure Service Bus). Understands exchanges/queues/bindings or equivalent topology concepts — not just 'I have used a queue'. - Demonstrable distributed systems depth: has built things that had to be reliable, had to handle message ordering and deduplication, and had consequences when they were wrong. - Experience with saga-style or long-running workflow patterns. Has implemented stateful multi-step processing where steps arrive out of order, from multiple sources, or with long windows. - Writes meaningful tests as part of normal development — not as an afterthought. Understands the difference between unit, integration, and contract tests and applies them appropriately. - Comfortable deploying and running .NET services on Windows Server. Does not require a Linux/container environment to be productive. - Has led or mentored engineers in some capacity — formal or informal. Can explain their approach to code review, feedback, and developing junior engineers. - Reads and writes clear technical prose. Can produce a design document, a runbook entry, or a detailed pull request description without prompting. - Asks the right questions about a new codebase rather than immediately reaching for rewrites. Respects existing design decisions until they understand them. - Self-directed and reliable in a remote, asynchronous context. Has done this before and can point to how they managed it. Strongly Preferred - Candidates who bring several of these will be significantly stronger fits. None are individually disqualifying to be missing. - Experience with HashiCorp Nomad or a comparable orchestrator (understanding of job scheduling, placement, health checks). - Familiarity with Consul or a comparable service discovery and KV store. - Experience with MassTransit specifically — its publish topology, saga persistence, outbox pattern, or transport configuration. - MongoDB experience, particularly as a document store for structured state (not necessarily as a primary database). - Exposure to YARP or other programmatic reverse proxy / API gateway frameworks. - Experience with Splunk or a comparable log aggregation and search platform. - Familiarity with OpenTelemetry and distributed tracing concepts. - Experience operating services across multiple environments with a promotion pipeline (dev → staging → production or equivalent).
Nice to have
- Experience with Next.js or TypeScript - Familiarity with Jenkins or GitHub Actions CI pipelines. - Exposure to JFrog Artifactory or similar artifact management. - Any financial systems context — even adjacent (payments, order management, data pipelines) — as background, not a requirement.