Distributed Systems Software Engineer

Software Development London, United Kingdom


Description

Distributed Systems Software Developer

The Company

G-Research is a well-established and rapidly growing firm with a leading platform for developing quantitative research and systematic investment ideas. We have created a community designed to inspire the best minds in the world to tackle the toughest intellectual challenges and deliver the best work of their careers. Our platforms and technologies are constantly evolving to meet the real-world scenarios we throw at them and we are seeking world-class software engineers to join us.

Traditionally a .NET and Microsoft house, as a successful and well-funded business G-Research are broadening the scope of the platforms and development tools we use.  We aim to use the best tools available for the job and are actively extending the use of open source and Linux-based technologies in the areas that they can make a real difference.  Developers with experience in these technologies can make a big impact - we are happy to hire people with a diverse range of skills, there's no specific requirement for experience with .NET. Technologically the sky is the limit and we are looking for the brightest and best developers in the world to take our capability to the next level.  This is an exciting time to join G-Research.

The Role

A challenging distributed systems software development role is open within the Data Development Group (DDG) responsible for understanding, processing and organising large research and realtime datasets. The team processes and streams tick data in real time to generate aggregates and advanced indicators from a variety of locations; imports exotic datasets from third party providers (social media, economic data, graph data, geographical data, etc.); stores it and serves it to the realtime and research platforms.

Within a collaborative environment, distributed systems developers work closely with other teams within the business including those within the Production and Research divisions to deliver outstanding data resources, and are responsible for end-to-end design and implementation.

Primary responsibilities of the role will include:

  • Designing and implementing high-quality code to process and manipulate large datasets.
  • Building cutting-edge tools and infrastructure supporting core facilities in the firm.
  • Strong data management skills;  advising cross-team initiatives;  assessing frontier technologies
  • Occasional full stack development – even though we’re primarily a backend team.
  • Optimising data storage and modelling.
  • Responding to the ever-changing requirements of the business.

 

The platform that the firm provides is used 24 hours a day, and all developers in the group have a responsibility to support production issues encountered in the data processing.  This will include a share of overnight calls from within the firm.

The Individual

The candidate must be a strong, competent, and practical software developer.  They should be enthusiastic and have a genuine interest in the latest software technology.

Required skills & experience:

  • A proven ability to develop high-quality software in an OO language.
  • An appreciation of good software architecture, CompSci fundamentals & data structures.
  • Demonstrable understanding of database design and use, or other data management techniques, both relational and non-relational.
  • Experience with SOA, distributed systems.
  • Experience of TDD and the ability to write clean code.
  • Experience of agile methodologies and a familiarity with retrospectives and continuous improvement processes.
  • A demonstrable desire to stay informed on the latest technologies and practices.
  • A keen interest in applying continuous delivery principles.

 

Financial experience may be useful but is not required.  Candidates from non-financial backgrounds are encouraged to apply.

Key technologies

Agile, TDD, SOA, Micro services, REST, EDA, Kafka, Sql, NoSql, DDD, Event Sourcing, Stream Processing, Batch Processing