Java Developer – (Ref:2779) – (Mid Level) – 50-75K
- Job Title
- Java Developer
- Work From Home
- Java 8
- Highly distributed systems
- Pair Programming
- TDD / BDD / DDD
- Continuous delivery
- 2 years Java experience
- Care for writing clean, re-usable code
- Happy in a paired environment
- Worked on highly transactional sytems
- Attends meetups/conferences
- Strong academics - Computer Science Degree
- Multi threaded programming
Their architecture is driven by their strict performance targets – processing 10’s of thousands of orders a second, with consistent end-to-end latencies under 100 microseconds.
The core of their tech stack is Java (they keep up to date with releases, so are currently using Java 8 and expect to migrate to Java 9 pretty swiftly once it is released). They believe that Java offers a good balance for high performance coding and developer productivity. They experiment with other languages around the edges of their system, but for the main code base they value consistency.
To meet their latency targets they operate a highly stateful application – with all live/working state held in memory, and work hard to eliminate unnecessary complexity. They use quite a few open source libraries – and contribute back a number of projects themselves – but they avoid tying themselves to 3rd-party frameworks. They want to understand and be in control of their whole stack, and not beholden to someone else’s design. Data archival and reporting occur out-of-band, mainly using Percona (a commercially supported MySQL derivative). They also have an in-house high performance time series datastore for market data, and an application & system metrics database built on top of LevelDB.
Internally between services they use a binary messaging format, operating on top of a 3rd party reliable multicast messaging system. Externally, clients connect to them over FIX and via HTTP (web UIs and APIs) and they also distribute market data though a binary UDP multicast protocol.
Being one of the pioneers of continuous delivery, development follows an agile/lean model, based on pair programming, continuous delivery and automated testing. Developers work closely with the business analysts to refine and deliver business requirements in a series of rapid iterations. While they employ a number of technology specialists, each developer is expected to be proficient in the full range of technologies used, and will build, test and deliver fully functional system components that may span the full technology stack.
They are community minded and are often out attending or speaking at conferences.
They manage their workflow to free up Friday afternoons to work on self-chosen projects outside of the immediate business priorities.