Skip to main content
DevScallix

Roadmaps · L2

Middle Java Developer

A middle developer delivers a medium-sized task end to end on their own: analysis, code, tests, deployment and support. They think not only about whether the code works, but about how it behaves under load and when something fails.

How it differs from the previous level

A junior carries out a task whose details are clear. A middle developer clarifies a vague requirement, compares options, anticipates risks and can review other people's code. They need occasional alignment rather than supervision.

Expected knowledge

  • Concurrency: threads, ExecutorService, visibility, synchronized vs volatile, ConcurrentHashMap
  • How Spring @Transactional works through proxies, plus propagation and rollback rules
  • JPA: the N+1 problem, fetch strategies, DTO projections, optimistic locking
  • SQL: choosing indexes, reading EXPLAIN, the basics of isolation levels
  • Testing strategy: balancing unit, slice and integration tests, Testcontainers
  • REST API design: versioning, pagination, a consistent error format (ProblemDetail)
  • Authentication basics: sessions vs JWT, the most common authorization mistakes
  • CI/CD, Docker and basic observability: structured logs, metrics, health checks

Practical skills

  • Find a slow query and fix it with an index or a query change
  • Write integration tests against a real PostgreSQL
  • Investigate a customer-reported failure using logs, metrics and traces
  • Prepare a backward-compatible API and database migration
  • Set transaction boundaries correctly and avoid long transactions
  • Review someone else's Pull Request constructively

Common mistakes

  • Calling a @Transactional method from the same class and expecting a transaction
  • Reading a lazy collection in a loop and creating N+1 queries
  • Making an external HTTP call inside a transaction
  • Writing tests that mock everything and verify no real integration
  • Calling an external service without timeouts or retry policy

Learning priorities

  1. 1Understand transactions and the database deeplyPropagation, isolation, locking and indexes. Most production failures start here.
  2. 2Improve performance by measuringWork with SQL logs, EXPLAIN and a profiler instead of guesses.
  3. 3Build a testing strategyChoose unit, slice and Testcontainers tests by purpose; avoid slow and brittle tests.
  4. 4Learn concurrency and asynchronous processing basicsSpot race conditions, write thread-safe code and know the basics of messaging such as Kafka.
  5. 5Own delivery and supportCI/CD, monitoring and learning after incidents. Be the owner of the code you write.

Architecture maturity

A middle developer is responsible for the internal design of one service: layers, module boundaries, the data model and the API contract. They prefer the simple solution and do not add complexity without a reason. They assess how a change affects other services and teams, and can turn the reasoning behind a decision into a short written note.

Example questions

  • Why does @Transactional not work with self-invocation?
  • How would you detect and fix an N+1 problem?
  • What is the practical difference between REPEATABLE READ and READ COMMITTED?
  • When would you choose a unit test, a slice test or an integration test?
  • How is ordering preserved for the same key in Kafka?
  • Why does column order matter in a composite index?
  • Show a race condition and fix it.

Exercises you can do on your own

  • Create an N+1 in an endpoint, prove it with SQL logs and fix it with a fetch join and a DTO projection.
  • Write a lost update scenario with two transactions updating the same row and solve it with @Version.
  • Add a Testcontainers integration test to a service and run it in CI.
  • Add a timeout, retry and error mapping to an external call and test each of them.
  • Review an open-source Pull Request and separate blocking comments from nits.

Articles for this level

Programs that fit

How close are you to this level?

The skills assessment builds a personal gap report from your answers. It is a recommendation, not a certificate.