Talent · Enterprise · Europe · 5 min read

Backend Kotlin/Java engineer for reactive systems

Reactive backend engineer placed for a low-latency trading product. 527 applicants narrowed to one hire.

Applicants screened
527
Time to shortlist
72h
Time to offer
11 days
p99 target
<100ms
What they needed

The brief.

A European enterprise client building a low-latency trading product needed a senior backend engineer fluent in reactive Kotlin and Java with Project Reactor experience. The product had a sub-100ms p99 latency target on order routing; the existing JVM team was strong on imperative patterns but had been struggling with the reactive refactor. The new hire would own the reactive layer — Spring WebFlux + Reactor — and bring the rest of the team along through code review and pair-programming sessions. They needed someone with verifiable production experience, not just framework familiarity.

Must-haves
  • Kotlin (3+ years production)
  • Java + Spring WebFlux
  • Project Reactor (production reactive code)
  • Sub-100ms p99 latency tuning experience
  • JVM profiling + GC tuning
  • Mentorship aptitude (would help upskill the existing team)
Sourcing & screening

The funnel.

Applicants sourced
527
100.0%
AI-scored above 70/100
198
37.6%
Resume review
55
10.4%
Written assignment (Reactor design)
22
4.2%
Live coding
8
1.5%
Final round + mentorship signal
5
0.9%
Reference check
2
0.4%
Hired
1
0.2%
Challenge

The problem.

Reactive Kotlin/Java is a narrow specialty within an already specialist field. Most JVM engineers have built imperative Spring services for the entire careers; non-blocking reactive patterns require a different mental model that engineers don't acquire through tutorials. They acquire it through painful production debugging of subscription leaks, hot vs cold flux confusion, and backpressure misconfigurations. The signal we needed — production reactive scars — is invisible from a resume. The agency channel the client had used previously was unable to filter for it; they delivered candidates who'd read the Reactor docs but had never debugged a memory leak caused by an unhandled `subscribe()` call in production. The second part of the brief, mentorship aptitude, narrowed the pool further. Senior engineers who can teach are rarer than senior engineers who can do — especially in reactive paradigms where the abstractions are slippery enough that lots of engineers can use them without explaining them.

Solution

What we did.

The funnel narrowing focused on two signals: production reactive experience (Reactor or RxJava at a firm where reactive was the primary backend pattern, not just sprinkled in) and prior pair-programming or tech-lead experience. The AI scoring rubric explicitly downweighted candidates whose resumes mentioned Reactor only in a side project or open-source list. 198 passed AI scoring; resume review by our senior recruiter cut to 55; the written assignment (a 4-hour reactive design problem requiring proper subscription lifecycle handling and backpressure under load) cut to 22 submissions, of which 8 produced clean solutions. The live coding round (90-minute, run by our senior recruiter) was deliberately designed to surface mentorship signal: candidates had to walk through their solution as if explaining it to a junior engineer. The top 5 went to the client. Their lead architect ran 90-minute pair-programming sessions with the top 3 — solving an unfamiliar problem together rather than running an interview. The winning candidate (Mumbai-based, 7 years experience, previously at a Singapore-based exchange building reactive order routing) led the pair-programming session with clarifying questions and rolled out his solution while explaining each step — exactly the mentorship signal the client needed.

Outcome

What changed.

Offer day 9 at top-of-band. Accepted within 48 hours. Started day 13. Hit the sub-100ms p99 latency target in his first sprint by identifying and fixing a subscription lifecycle bug the existing team had been chasing for three weeks. Over the next three months, the engineer ran weekly pair-programming sessions with the existing JVM team, accelerating their reactive-pattern adoption. By month four, the team's reactive code-review approval rate (a proxy for code quality) had climbed from 62% to 91%. Client renewed the contract twice and converted the engineer to full-time at month nine. Two more reactive-Kotlin hires through us in the following two quarters, both onboarded faster than the first because of the precedent.

Process

How we ran it.

01

Brief calibration

Two-hour call with the client's lead architect. Reviewed the reactive refactor scope, the latency budget, and what 'mentorship aptitude' meant in practice (pair programming, code review, written tech docs).

02

Narrow sourcing

Reactive Kotlin + Java production engineers are scarce; we surfaced 527 candidates across our internal database and three external sources. Aggressive filtering on Reactor-production signal.

03

Written assignment + live coding

22 candidates completed a 4-hour reactive design problem. 8 cleared. Live coding focused on non-blocking patterns under contention. Top 5 went to the client.

04

Final + offer

Client's lead architect ran 90-minute pair-programming sessions with the top 3 — looking for mentorship signal as well as technical depth. Offer day 9. Started day 13. Hit p99 target in first sprint.

Looking back

What made this work.

Reactive paradigm hires should always be screened with pair-programming, not just whiteboard interviews. The interaction pattern reveals whether the candidate has actually debugged production reactive code (slow, methodical clarifying questions before writing) versus tutorial-grade familiarity (jumps to code immediately). Pair-programming also surfaces mentorship aptitude in a way whiteboard interviews don't. Second lesson: for niche-paradigm hires where the new senior will upskill the existing team, look for candidates who can explain as well as code. The hire-as-multiplier framing changes the screening rubric — we now explicitly score 'teachability of explanations' as a fifth criterion alongside the four standard dimensions.

Tech stack

What we built it with.

Required stack
Kotlin 1.9+
Production Kotlin with coroutines. Engineer screened on idiomatic Kotlin, not just Java-translated-to-Kotlin patterns.
Spring WebFlux + Reactor
Reactive Spring stack. Tested on production patterns — subscription lifecycle, backpressure, error propagation across reactive boundaries.
Project Reactor (Flux, Mono)
Hot vs cold publishers, schedulers, retry-with-backoff. Required for the latency tuning work.
JVM profiling (JFR + async-profiler)
Flame graphs, GC analysis, allocation profiling. Required because reactive code's perf characteristics differ from imperative.
Domain context
Low-latency order routing
Sub-100ms p99 budget on order acknowledgement. Required prior production experience tuning JVM reactive code under latency constraints.
Reactive resilience patterns
Circuit breakers, timeouts, fallbacks via Resilience4j. Tested on combining these with Reactor's retry operators correctly.
Vetting
Production-reactive-only filter
Engineers whose Reactor experience was tutorial or open-source only were filtered out at the AI scoring stage. Saved client interview time.
Pair-programming live round
90-minute working session instead of whiteboard interview. Surfaced both technical depth and mentorship aptitude.
Mentorship-signal scoring
Fifth screening criterion: teachability of explanations. Differentiated the hire from technically-equivalent but pedagogically-weaker candidates.
More cases

Related stories

Fintech · USA
Senior Java engineer placed in 5 days
5x demo conversions post-hire
AI SaaS · USA
Senior full-stack engineer for AI CRM launch
Shipped AI CRM on schedule
Fintech · USA
Frontend ReactJS engineer for fintech contract
High-impact contract delivered