Development

We are always looking for enthusiastic Software Developers to join the growing development team at LMAX, where we collaboratively solve interesting and challenging technical problems, developing high quality, low latency, performant software.

Most of our code base is in Java, but don’t be surprised if you find yourself dealing with some Python or JavaScript here and there. We pride ourselves on doing things properly rather than just paying lip-service to best practice.

 

Our Development team design and build new features to the existing code base, as well as research and develop new and innovative solutions to help maintain our edge in the marketplace.

All our products are built from a common platform, so the team works across the whole business. To avoid accumulating knowledge silos, we actively rotate developers around all our sub-teams, ensuring that everyone gains first-hand knowledge on all areas of our codebase.

This means developers here can expect to participate in a wide variety of work: designing and building software for low latency trading systems, investigating new block chain technologies, and doing data analytics work to help senior management make data-led business decisions are a few examples.

 

Employees
30+
Locations
London, New Zealand
Team Lead
Chief Operations Officer

Working collaboratively

The dev team works in a very social and cooperative environment, even when working remotely. We strongly believe that a collaborative process supports developing software at speed and to a high level of code quality. Small cross-functional teams and pair programming – with developers, testers and business analysts working together – are at the heart of our process.

Working together allows multiple ideas or interpretations to combine into better solutions, as well as supporting continued growth of knowledge and sharing of expertise. It creates an enormous sense of everyone being part of one team, leading to a very supportive culture where nobody is ever too busy to answer a question or offer a hand. It is a great way to learn from each other. It is also more sociable and fun!

Collaboration stretches beyond just writing code. New features are analysed and designed as a team. We are given problems to solve and are trusted with the freedom to deliver on them as we think best.

 

Test driven

LMAX relies heavily on test driven development, supported by a strong automated testing infrastructure. Continuous Delivery was pioneered in our team (one of the authors worked here while writing the book), and we’ve gained a decade more experience since then.

Our CI pipeline runs 35,000 end-to-end tests every half an hour in our private cloud, giving developers rapid feedback and a high degree of confidence in the changes we make. There are also extensive unit tests, compatibility, migration and resilience tests. As part of your role at LMAX you will contribute to this and the wide variety of other automated testing we do, ensuring the software we release is of the highest quality.

Operating trading systems brings interesting throughput and latency challenges (processing over a billion orders a day, with 80 microsecond round-trip times), so we care a lot more about software performance than many other organisations. We have a range of continuous performance tests designed to catch any regression before it reaches production, from targeted microbenchmarks to end-to-end replays of production traffic.

Dedicated to quality

We care a lot about quality; we like to dig deep into the code-base and leave things better than we found them – more readable, better modelled, more performant, more consistent.

Software Developer (Core Java) – Feb ‘21 3

There is a permanent expectation of delivering high quality, maintainable code, and minimising technical debt.

You won’t be stressed about deadlines and pressured to cut corners just to get things done quickly. As a team we enjoy building software and seeing that software used, and although we want to deliver things in a timely manner, we always strive to write things properly and cleanly the first time.

Our regular development processes ensure that many eyes have contributed to any code before it goes into production, each bringing a much deeper understanding of the work than an out-of-band reviewer could. This means you will rarely find a code review at LMAX.

 

Always improving

While we like to think that we do many things well (we have spoken at conferences about how we build software and handle challenging performance problems), we recognise that we can always get better. We regularly examine our successes and failures to look at how we can improve both as a team and individually.

Alongside regular internal training sessions, we have a generous budget supporting attendance at conferences or training courses. We give members of the team the freedom to pursue their own interests in deciding what activities would benefit them the most.

We also set aside Friday afternoons as a time for developers to pursue an interest or learn something new, be it exploring a different coding language (e.g. Rust), a spike to learn about B-trees or adding elastic search to our production environment. Our only rule is that you should be happy to tell your teammates how you plan to spend the time, and welcome anyone joining you if they are interested in the project.

Day to day life

Typically, you’ll spend most of your day coding and problem solving; working with your team to design and implement new features.

We start our day with a quick stand-up discussing the project the team is currently working on, any blockers we have, and planning for the day ahead. We then break off into pairs or small groups to complete various pieces of work.

It isn’t all about work at LMAX. You will find most of the team taking a “tea break” at 3pm, where we talk about anything and everything, work related or not. A general time to just chat and catch up with everyone across development.

We hold regular games nights (currently virtual) and in more normal times you’ll often find a group heading out to have lunch together, with many going for a drink or meal together after work too.

We are all passionate technologists and enjoy sharing our interests and discoveries with each other. You’ll regularly catch one of us giving a short talk or presentation on something interesting we’ve worked on, something new and exciting we have recently experimented with or read about online.

 

Our tech stack

Knowledge of all our stack is not a requirement for new candidates, instead we concentrate on problem solving and the ability to communicate and collaborate effectively.

Backend: distributed, event-driven core Java (90% of the code-base), MySQL
Frontend: Javascript, Vue.js
Data analytics: Python & Jupyter notebooks, Parquet, Docker
Blockchain integrations: Bitcoin (& Litecoin, Bitcoin Cash), Ethereum and XRP (Ripple)
Testing: JUnit, Mockito, JMH, JCStress, Jenkins, Selenium, many in-house tools…
OS: Linux (CentOS)

We like to avoid relying on opinionated third-party frameworks, but you’ll find plenty of open source tools and libraries (from mysql and elasticsearch, to netty) in our code-base, and we’ve contributed a few of our own back to the community – such as the LMAX-Disruptor and the Simple-DSL library we use for our own BDD acceptance testing.

We develop on Fedora workstations and remote pair-program via Zoom and VNC. We can run the entire production environment and any test on our developer machines giving us a quick feedback cycle. We use a scalable build system and monorepo to do away with slow builds and dependency hell.

Due to our strict performance requirements, we have a distributed, asynchronous, event-driven architecture. In our core services, working state is held in RAM accessed only by a single thread, with an internal binary messaging protocol between components and no disk or database access on the critical paths.

While we use a variety of cloud technologies in our testing and data analytics environments, our core trading systems run on tuned bare metal hardware – with specific performance critical threads pinned to run on dedicated CPU cores, isolated from other processes and the OS.

We recognise this isn’t all that conventional, and don’t expect you to arrive with an in-depth understanding of it – we’ll teach you that.

What we are looking for is:

  • A good understanding of how to write clean, efficient, well tested code.
  • A keenness to learn and to work in a highly collaborative environment.
  • Strong communication and problem-solving skills.
  • An appreciation that the simple solution to a problem – while often harder to discover than the complex one – is usually best.

Intrested in joining

Joining a healthy and dynamic environment as a Technology Graduate, I’ve experienced an immense growth in (technical) knowledge and processes.

 

Hassa Benfellahi | Technology Graduate

Having a role in which I rotate through different departments has allowed me to experience the heart of the business from a unique perspective.

 

Borna Golley | Operations Support Analyst

The support and trust received are second to none. While exploring the world of technology, I'm pushed to stay out of my comfort zone allowing myself to learn new skills and techniques daily.

 

Feben Hagos | Junior Service Desk Analyst

Everyone here is very friendly and approachable, willing to help if there are any issues. LMAX Group appreciate innovation and ideas, everyone's voice is heard, making working fun and exciting for the future!

 

Victor Cabrera | Junior Internal Auditor

During my time at LMAX Group, the service desk team has been very supportive and helpful. I feel like I have the opportunity to move further in tech.

 

Sofia Okupa | Junior Service Desk Analyst

Working at LMAX Group has shaped my career development and provided me with opportunities to be on the path I wanted to be on. From starting as an apprentice at 18 with little to no experience to now being a team lead.

 

Laura Young | Service Desk Team Lead

As a graduate, LMAX Group was the perfect company to join in the early stages of my career. I was very keen to develop my technical and software skills in an environment that was safe to do so and the startup culture that LMAX Group embraces.

 

Max Pinfield | Junior Security Analyst

Since joining LMAX Group in 2013 I learnt so many new things, this is a great place to grow and develop both professionally and personally. Every day I work with great and dedicated colleagues who share their experience and work together.

 

Rafaela Sandu | Engagement Manager

Since joining LMAX Group in 2018, I’ve seen huge growth in our marketing team. I feel like I am part of a long term project that will not only benefit the business but also improve my career.

 

Gary Burke | Web & Graphic Designer

We want ambitious people. In the years I’ve been at LMAX Group we’ve grown dramatically, significantly expanded our infrastructure as well as launched LMAX Digital, our institutional crypto currency exchange.

 

Tim Turner | Chief Information Officer