Anyone can pass the interview.
Fewer can read the GC log.

Java earns its keep on the day the traffic triples. We hire and place engineers who have been on that bridge — Spring Boot, Kafka, Kubernetes, and the runtime underneath all three. Full-time in your team, on our payroll.

A real incident from a client engagement, with the names removed. We publish it because it is a better description of what a senior Java engineer does than any list of frameworks could be.

Detected 16:02

Resolved 16:48

Root cause Unbounded cache

Deploys involved None

16:02 Checkout p99 crosses 2 s. No deploy in the last six hours.

16:04 Thread pool for the payments client is saturated. Queue depth climbing.

16:07 First user-visible timeouts. Support sees them before the dashboard does.

16:11 GC logs show 900 ms pauses, every 40 seconds, on the old generation.

16:19 Heap dump taken from one instance and pulled off the box.

16:26 Cause found: an unbounded in‑memory cache of promotion rules, keyed by cart id.

16:31 Cache capped and given a TTL. Rolling restart begins.

16:48 p99 back under 400 ms. Incident closed; the interesting work starts.

What actually mattered: the three changes afterwards

Every cache gets a bound

A code‑review rule and a static check. An unbounded Map used as a cache is now a build failure, not a discussion.

GC pause is a first‑class metric

Exposed, dashboarded and alerted on — because the pause was visible in the logs for eleven days before anyone looked.

Support noticed before monitoring did

That is a monitoring defect. Client‑side error rate now alerts alongside the server‑side one.

Day to day

What they do when nothing is on fire

Which is most of the time, and is the part that determines whether there is a fire next quarter.

Spring Boot services

REST and gRPC, with validation at the boundary, problem‑detail error responses, and configuration that differs by environment rather than by branch.

Data access that scales

JPA where it fits and plain SQL where it does not, with the N+1 caught in a test rather than in production.

Messaging

Kafka and RabbitMQ, with idempotent consumers, a dead‑letter strategy and a documented replay procedure.

JVM tuning that is evidence‑based

Heap sizing, GC selection and thread pool limits set from a load test, not from a blog post.

Modernisation

Java 8 to 21, monolith to modules, and the migration of an EJB or Struts application that still runs your business.

Resource requests that match the JVM's actual footprint, readiness probes that mean something, and graceful shutdown.

Seniority

Buy the runtime knowledge, not the framework

Spring Boot can be learned in a month. Knowing why the p99 moved without a deploy takes years, and it is the only reason to pay a senior rate.

Mid-level

3–5 yrs $30–36/hr

Ships features in a Spring Boot service with review. Solid on the framework, still learning the runtime.

Senior

5–8 yrs $36–46/hr

Owns a service and its SLOs. Reads a heap dump and a GC log without needing to be talked through it.

Lead / Architect

8+ yrs $46–64/hr

Sets service boundaries and the data model, runs the migration, and is trusted on the incident bridge.

Tell us what the service carries

Throughput, latency target, what happens when it is down. We will send engineers who have carried that weight before.


#J-18808-Ljbffr
Similar jobs

Hire Java Developer

Apply Now
Back to search page