0% found this document useful (0 votes)
4 views

Java Software Engineer (Core)

LMAX is a global FX exchange operator seeking Java Software Developers to work on high-performance, ultra-low latency trading systems. The role emphasizes collaboration, continuous learning, and a strong coding culture, with a tech stack primarily in core Java, Kafka, and MySQL. The application process includes a technical phone screen followed by a coding exercise and an in-depth interview to assess problem-solving and communication skills.

Uploaded by

Do Wen Rei
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views

Java Software Engineer (Core)

LMAX is a global FX exchange operator seeking Java Software Developers to work on high-performance, ultra-low latency trading systems. The role emphasizes collaboration, continuous learning, and a strong coding culture, with a tech stack primarily in core Java, Kafka, and MySQL. The application process includes a technical phone screen followed by a coding exercise and an in-depth interview to assess problem-solving and communication skills.

Uploaded by

Do Wen Rei
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

Java Software Developer

WARNING: this was written by the people you will be working with, not
the HR team.

About LMAX

We design, build and operate FX exchanges in London, Tokyo and New York -
facilitating the exchange of over $20 billion a day of currencies between a wide
range of customers, including most of the world’s top banks and other financial
institutions.

With 11 offices worldwide, LMAX Group builds and runs its own high performance,
ultra-low latency global exchange infrastructure which includes matching engines in
London, New York, Tokyo and Singapore. LMAX Group services and facilitates the
exchange of currencies between a wide range of customers spanning 100 countries,
including leading banks, asset managers and retail brokerages.

LMAX’s mission is to transform trading in the world’s biggest financial markets,


bringing fairness, openness and transparency - creating a level playing field for all
to participate. We are looking for people who want to help us change the game,
not just play it.

About the role

LMAX is renowned for its high-performance, ultra-low latency (we measure in


microseconds) exchange written in core Java. We constantly push technology
further than most, especially in our greenfield projects, driving the financial industry
in new directions.

Developers are encouraged to constantly develop and learn new skills. Pair
programming supports continual growth of knowledge and sharing of expertise,
alongside regular team rotations ensuring everyone gains first-hand knowledge on
all areas of our codebase. Friday afternoons are set aside as personal
development time where you can explore a different coding language, research
bleeding edge technologies, or play around with one of our environments. There is
also regularly scheduled time to improve developer experience and reduce technical
debt – directed by developers.

Our continuous integration and testing culture allows us to have confidence in our
builds and develop quickly. We have over 30,000 acceptance tests running every
25 mins in our CI, alongside extensive test suites (performance, compatibility,
migration, resilience). Continuous Delivery was pioneered at LMAX one of the
authors worked here while writing the book). Due to pair programming and testing
we don’t do pull requests, we push directly to our monorepo with a “revert first, ask
questions later” attitude.

If you want to work with great developer practices like fast feedback across all
aspects of your work, a cooperative culture, and only shipping things when they’re
ready, while being at the heart of a thriving exchange with opportunities to learn
about the finance industry, then LMAX is for you!

Working at the heart of a thriving exchange provides a great opportunity to learn


about the finance industry and see first-hand some of the intricacies of financial
markets

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), Kafka,


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 (Fedora for development, Rocky in production)

The LMAX way is to use the right tool for the job so this is just a flavour of what
you’ll be working with, and isn’t a list of requirements!
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.

Learn more about us

Low Latency Trading Architecture at LMAX Exchange


https://www.infoq.com/presentations/lmax-trading-architecture/
When the OS gets in the way
https://www.youtube.com/watch?v=1bUVbcvqBSA

Testing@LMAX
https://www.symphonious.net/testing-at-lmax/

Continuous Delivery @ LMAX


https://www.infoq.com/presentations/cd-lmax/

Our GitHub:
https://github.com/lmax-exchange/

Learn more about us

• Smart, friendly colleagues keen to share their knowledge and learn new
things from you
• The opportunity to work on a wide variety of projects, including cutting edge
technology, and interesting technical & performance challenges
• A culture where high quality maintainable code is valued over quick hacks
• Generous funding pot for training courses and conferences
• Flexible working options, and home working support
• Competitive salary + Bonus
• 25 days holiday (increasing to 30 with service), plus bank holidays
• A benefits suite including ride to work & electric car schemes, private
medical
• insurance, life insurance and critical illness cover, pension plan, gym
membership & more
• Relaxed dress-code
• Think you know every IntelliJ shortcut? Think again. (yes, this is a benefit!)

The Application Process

Stage 1: The technical phone/zoom screen: Two members of the development


team will call you for around half an hour. They will ask you about your
questionnaire answers and CV. They will assess your level of Java fluency. They
will examine whether you can clearly explain work you have done, and opinions
that you have about Software.
The last few minutes of the interview are reserved for you to ask questions of us.

Stage 2: The face to face (or zoom to zoom) interview: Two senior members of
the development team will interview you at LMAX (or currently, over zoom) for up
to two hours. These two people will be different to your phone screeners; one of
them will be the head or deputy head of software (for consistency, not to be
frightening).

We start with a coding exercise which won't be testing any algorithm knowledge or
anything cryptic. You will be presented with a small Java project in IntelliJ IDEA,
that we’ve put together especially for the interview process. This will be on a Linux
laptop with a UK keyboard layout (or on a shared VNC session, while we’re all
remote). It will be connected to a second screen to allow us to watch without
crowding you out. We will explain what the code does and how it works, then
working together, we’ll attempt to fix an existing bug in the code before adding a
new feature if time permits. This is a test of being able to read code, explain what
you're doing and ask questions where needed. There are also tests, don’t ignore
them!

After the coding exercise, we will spend the remaining time having a conversation
about your development experience; this may be driven from your CV or
questionnaire, but we reserve the right to ask almost anything. We're trying to have
an interesting conversation about software; about developing it, delivering it and
maintaining it. We recognise there is rarely one well defined right answer to our
questions here; but we do expect candidates to be able to defend their opinions
with evidence. There are no trick questions or brain teasers - we are trying to
understand your attitude, opinions and the way you work, rather than looking for
specific pieces of knowledge. That said, you should be prepared to answer
questions on anything that you tell us you have done in your CV - particularly if
we find it interesting!

Once again, the tail end of the interview is reserved for questions from you; we
usually leave ten minutes for this but we're happy to take longer if you have a lot
of questions.

You might also like