Hire a pro

Java Developer

Java and Spring Boot, at the scale where the interesting problems are operational. Connection pools, garbage collection pauses, retry storms and a monolith that four teams deploy into. The language is the easy part.

Shortlist
Within 24 hours
Deployed
Inside 2 weeks
Seniority
5+ years, production JVM
Rate
Flat monthly
Wrong fit
Replaced, not billed twice
What they do

At this scale, the code is rarely the bottleneck.

Java problems in a running business are usually about resources rather than algorithms: a pool that is too small, a timeout that is too long, a retry that made an outage worse.

Four callers, one connection pool, one slow downstream. This is what most Java incidents actually look like.
Day to day

Reads thread dumps and heap dumps

The skill that separates a Java developer from a Spring developer. When the service stops responding, this is the evidence.

Day to day

Sets timeouts and pool sizes deliberately

Defaults are chosen for a demo. In production they are how one slow dependency takes down four healthy services.

Day to day

Decomposes carefully or not at all

Splitting a monolith badly gives you a distributed monolith, which is the same thing with network calls between the parts.

Day to day

Keeps Spring configuration comprehensible

Annotations are convenient until nobody can say what is actually wired together at startup.

Day to day

Handles the upgrade path

Java 8 to 17 or 21 is a real project with real breakages, and the performance improvement is usually worth it.

What they know

The tools, grouped by what they are for.

Nobody on the bench knows all of this. We shortlist against what your problem actually needs, and tell you where the gaps are.

Core
Java 17/21Spring BootSpring DataMaven / Gradle
Data
PostgreSQLOracleHibernateFlywayRedis
Messaging
KafkaRabbitMQIdempotent consumersDead letter queues
Operations
JVM tuningGC analysisMicrometerGrafanaResilience4j
Quality
JUnit 5TestcontainersContract tests
How we vet

Four exercises, all of them from real work.

No algorithm puzzles. Every exercise below is a task this role does in a normal week, and we watch the method more than the answer.

Diagnose from a thread dump

A real dump from a service that stopped responding. We want the blocked threads found and the cause named.

Fewer than half can read one.

Design an idempotent consumer

A Kafka consumer that must survive redelivery. The answer reveals whether they have operated a queue or only read about one.

Decomposition plan

A described monolith. Which seam first, and how do you keep both running during the move.

A common wrong answer is "by database table".

Timeout arithmetic

Four services in a chain, each with a default timeout. Explain what happens when the last one is slow.

Interview signals

Four questions for when you interview them yourself.

You interview every candidate we put forward, so these are yours to use. They separate somebody who has run this in production from somebody who interviews well.

Ask: a service stopped responding but the CPU is idle. What is happening?
A strong answer

Suspects thread exhaustion or a lock, and goes for a thread dump. Knows that idle CPU with no responses usually means everything is waiting on the same thing.

A worrying answer

Restarts it and moves on. It comes back, and it comes back at a worse time.

Ask: how do you size a connection pool?
A strong answer

From the downstream capacity and the request rate, not from a number in a blog post. Knows that a larger pool often makes throughput worse rather than better.

A worrying answer

Says bigger is better. This is how one struggling database gets finished off by its own clients retrying.

Ask: what is your retry policy?
A strong answer

Exponential backoff with jitter, a cap, and a circuit breaker. Can explain why fixed-interval retries across many clients synchronise into a thundering herd.

A worrying answer

Retries three times immediately. Under load this is not recovery, it is an amplifier pointed at whatever is already failing.

Ask: how would you split this monolith?
A strong answer

Along business capability, one seam at a time, with both paths running until the old one is cold. Asks about transactions that currently span the proposed boundary.

A worrying answer

By technical layer or by database table. Both produce services that cannot be deployed independently, which was the entire point.

Honestly

When this is the right hire, and when it is not.

Ask for this when

Good fit

  • A Spring Boot estate where reliability matters more than new features.
  • A monolith that needs decomposing without a year of downtime risk.
  • Java 8 or 11 that should be on 17 or 21.
Ask for something else when

Poor fit

  • A small web application. Java is heavy for a job Python or Node does in less code.
  • Android work. Related language, different discipline: ask for a mobile engineer.
  • You want throughput on simple tickets rather than senior judgement.
Questions

Before you ask for a shortlist.

Both, and it is worth asking. A developer who only knows Spring can be helpless when the problem is below the framework, which in production it frequently is.

Many do, and on the JVM the transition is genuinely small. If your codebase is Kotlin, say so and we will shortlist accordingly rather than assume.

Yes. Oracle-specific experience is worth naming up front because the tuning, the licensing implications and the dialect differences are all real, and they matter more than they should.

Next step

Describe the problem, not the job title.

Thirty minutes, and a shortlist within a day. If a java developer is the wrong hire for what you described, you will hear that instead.