Senior Software Engineer - Jvm Language Clients

ClickHouse ClickHouse · Data AI · EMEA · Engineering

Senior Software Engineer role focused on the JVM language clients for ClickHouse, a real-time analytics and data warehousing platform. The role involves owning the Java client and JDBC driver, focusing on performance, API design, and supporting internal and external users. Experience with data-intensive systems, JVM expertise, and library development is required. Familiarity with AI development tools is mentioned but not as a core requirement.

What you'd actually do

  1. Own the Java client and JDBC driver end-to-end: roadmap, API design, performance, release engineering, and partner-facing support.
  2. Drive throughput and latency work across the client and ClickHouse server
  3. Partner day-to-day with the Connectors team as an embedded internal customer: understand what their connectors need from the driver, and ship it.
  4. Engage directly with external partners across data ingestion, and data visualization on interoperability, regressions, and roadmap alignment.
  5. Ship visible, measurable wins in throughput, stability, and developer experience.

Skills

Required

  • Java
  • JVM
  • library development
  • API design
  • concurrency
  • database fundamentals
  • SQL
  • query execution
  • analytical/OLAP workloads
  • written communication
  • open-source contribution

Nice to have

  • JDBC internals
  • ADBC
  • Arrow / Arrow Flight SQL
  • wire protocols
  • network client development
  • open-source data infrastructure (Kafka, Spark, Flink, dbt, Debezium, Iceberg)
  • ClickHouse
  • columnar/OLAP engine

What the JD emphasized

  • 5+ years of software engineering experience with a significant portion focused on data-intensive systems: drivers, SDKs, ingestion, CDC, streaming, or analytics.
  • Deep Java and JVM expertise: memory model, GC tuning, profiling, and the ability to reason about throughput and latency at the level of bytes on the wire.
  • Hands-on experience building or substantially extending a library that other engineers depend on. You understand that API design compounds, and that a breaking change in a widely used library is a very different thing from a breaking change in an application.
  • Solid instincts on concurrency in the JVM: executors, reactive streams, backpressure, connection pooling, and the failure modes that come with each.
  • Thoughtful, transparent use of modern AI development tools (Claude Code, Cursor, Copilot, or equivalents) combined with strong independent design and code review judgment. We expect engineers to lean on AI where it's genuinely helpful and to be explicit about where they didn't. Resistance to AI tooling is a mismatch for this team and so is over-reliance without the underlying engineering depth to review what comes out.