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.