Senior Java Distributed Systems Engineer - Fintech - Barcelona
Adaptive is hiring a Java engineer in Barcelona to work on Aeron Sequencer, its state-machine-replication technology for capital markets. Day to day the person designs and builds distributed systems, writes high-performance Java, evolves messaging protocols, and uses testing, benchmarking and profiling to improve correctness and performance.
- Compensation
- Not disclosed
- Location
- Barcelona, Spain
- Work setup
- Hybrid
- Seniority
- Senior
- Employment
- Not specified
- Experience
- Not specified
- Category
- Software engineering
- Posted
Skills
Must have
- Experience designing, building, debugging, and operating distributed systems
- Strong experience developing server-side software in Java
- Experience designing and evolving messaging protocols or software libraries
- Experience using different forms of testing to support software quality, including correctness and performance
- Experience measuring, benchmarking, and profiling components or systems
- Strong written and verbal communication skills
- Collaborative approach with a genuine interest in sharing knowledge and learning from others
- Judgement to prioritise competing demands based on long-term value and explain priorities to stakeholders
- Confidence to challenge the status quo and suggest technical and cultural improvements
Nice to have
- Messaging technologies or deterministic, replicated state machines
- Low-latency, high-throughput, or predictable-performance systems
- Property-based testing or deterministic simulation testing
- Financial interchange protocols such as FIX or ITCH
- OMS, EMS, or exchange systems
- C, C++, or other programming languages
- Build tools and engineering automation, such as Gradle or GitHub Actions
- Cloud platforms such as AWS, GCP, or Azure
- Container orchestration platforms such as Kubernetes
- Pre-sales or customer-facing technical discussions
- Public technical presence through blogs, conference talks, or external video content
Full description
At Adaptive, we partner with capital, commodity and digital market participants, and we see technology as a true differentiator. Our experienced teams design and deliver complex front-office technology solutions, using our proven accelerators to create long-term competitive advantage.
Our clients include the world's leading investment banks, investment managers, fintechs and capital market service providers. With offices in London, New York, Barcelona, Montreal and Manila we have a proven track record of delivering trading technology that is powerful, elegant and intuitive.
We are hiring a Senior Java Distributed Systems Engineer to help build Aeron Sequencer, our technology for applying state machine replication to capital markets. You will work on distributed systems that enable other engineering teams to build performant, reliable software. This is a hands-on role with the opportunity to influence product decisions, architecture, engineering practices, and how we communicate our work.
YOU ARE:
- Collaborative, with a genuine interest in sharing knowledge and learning from others.
- Able to use your judgement to prioritise competing demands based on long-term value and explain those priorities to stakeholders.
- Confident in challenging the status quo and suggesting improvements, both technical and cultural.
YOU HAVE:
- Experience designing, building, debugging and operating distributed systems.
- Strong experience developing server-side software in Java.
- Experience designing and evolving messaging protocols or software libraries.
- Experience using different forms of testing to support software quality, including correctness and performance.
- Experience measuring, benchmarking and profiling components or systems.
- Strong written and verbal communication skills.
YOU WILL:
- Analyse, design, discuss and develop distributed systems built on replicated state machines.
- Write clean, efficient Java code that is maintainable and self-documenting.
- Design and evolve messaging protocols and software libraries.
- Troubleshoot and debug Java applications and distributed systems.
- Drive improvements in correctness and performance through testing, benchmarking, measurement and profiling.
- Raise the quality of our work through code reviews, pairing and technical discussions.
- Contribute to product decisions, not just task execution.
- Keep up to date with relevant software engineering technologies and practices.