C++ Engineering Role - Building a platform to simulate the world in real-time at a $3B UK Tech Unicorn

United Kingdom - Remote
Roles we're searching for now: – Software Engineering /
Back-End - C++ /
Remote
Our contemporary society is endlessly complex. Ensuring its resilience, security and prosperity is a correspondingly complex task.
From COVID and climate change to sub-threshold conflict and hybrid war, threats to our collective security are fluid, fast-moving and intricately interconnected. Governments and defence organisations need to be able to respond to them in a way that’s fully integrated and every bit as dynamic as the threats themselves.

Just as synthetic environments can help planners and policymakers address the challenges they face, they also help personnel at every level prepare collectively to put those plans and policies into effect.
The latest multi-domain synthetics allow users to analyse the problems they face, explore their options, and understand the cascading, cross-domain consequences of each proposed action.
Ever-evolving and accessible wherever they’re needed, these virtual worlds are already helping to ensure the safety, success and ongoing resilience of US and UK government organisations.
The platform enables government and military users to respond to a diverse range of complex threats in a flexible, tightly integrated way.

Built from the ground up with open standards and supported by an ecosystem of partners from across industry and academia, it’s a more efficient, flexible and cost-effective way to build and operate synthetic solutions.


The Mission
“To develop the world’s leading data analysis, modelling and simulation platform for enabling defence organisations to test decisions, plan and train in digital synthetic environments that accurately represent the largest and most complex multi-domain scenarios.”

About us
- We are a multidisciplinary team of engineers using a variety of languages and frameworks to develop the platform and tooling required to build large-scale scientifically accurate synthetic environments that are used by government and defence organisations to plan and train more effectively.
We are responsible for building:
- The runtime and tools required for development, debugging, and execution of closed, interruptible-closed, real-time human-in-the-loop, and time stepped simulations that integrate and scale new models and existing simulation engines.
- The APIs/SDKs to enable integration of AI/ML agent based models, 3D Game Clients and IoT devices into the simulations as well as connecting together other simulations running in a single simulated environment.

Our Impact
The platform, tools and data framework that we are developing enable modellers and engineers to create and run some of the largest, most complex, and realistic simulations ever built. These simulations enable government and defence organisations to better understand and prepare for action in complex environments so that they can preserve peace and minimise damage and loss of life. Whether it is a power station being destroyed, a road network becoming blocked, or fake news propagating through a social network, our technology enables people to understand these consequences so that more resilient societies can be engineered and our defence and national security is at the cutting edge of capability.

Your Mission
Responsibilities 
- Build a deterministic simulation runtime optimised for both real-time and faster than real-time simulation execution.
- Scale across multiple compute nodes using cutting-edge synchronisation and low-latency networking techniques.
- Create a platform that can efficiently integrate models of real world social, political and technological systems defined in multiple languages, modelling tools and pre-existing simulation engines.
- Use data oriented design and advanced scheduling techniques to maximise processor utilisation.
- Write coherent, well-structured and efficient C/C++ or Go code with a particular emphasis on high-performance engineering.
- Contribute to the services and tools used to build, launch, monitor, test and debug simulations.
- Work closely with our applied scientists and modellers to create intuitive and efficient APIs.

Outcomes 
- Build a next generation product which will help governments gain a richer understanding of their most critical problems through the power of synthetic environments.
- Enable our users to create and run some of the largest and most complex simulations ever developed.
- Understand the requirements of our applied scientists and model engineers and provide them with the SDKs and tools needed to effectively develop, debug and profile complex models.
- Collaborate with other members of our multi-disciplinary team to optimise the end-to-end process of preparing data, running simulations and analysing results; reducing the time it takes for our customers to answer the most critical and time-sensitive questions.
Requirements
- You are a confident C/C++ developer with a passion for producing highly performant software.
- You keep up to date with the latest standards in your language of choice.
- You are passionate about sharing knowledge, learning and collaborating with others.
- You are passionate about mentoring and growing engineers in their technical ability
- You are pragmatic and able to identify the most impactful work among competing requirements.
- You drive integration efforts across teams and the tech stack.
- Knowledge of concurrent programming is preferable.
- Knowledge of networking and distributed systems is preferable.
- Knowledge of Golang is a benefit but not essential.

Opportunities for Growth & Progression 

You will have the opportunity to work with a range of engineering and research teams, leveraging new techniques and growing as an engineer. As an early member of the team, it’s expected that you will be able to take on ownership of key aspects of the system. 

Our Culture 

Culture takes deliberate time, effort and curation so that it reinforces the vision and mission of the organisation and how that translates to our shared values and identity. To achieve this, we need to define what our target culture is, then define and role model the behaviours that demonstrate it, and finally establish the rituals and routines that will reinforce it.
Our focus includes: 
- Customer centricity - We have a passion for our customer experience and a commitment to delivering quality to customers by deeply understanding their challenges
- Diverse and Inclusive - Everyone feels (psychologically) safe and included. We seek diverse perspectives in all we do. We assume good intent & show gratitude to our colleagues
- Growth Oriented - We embrace learning as part of the journey - “F.A.I.L” means ‘first attempt in learning’. We are focused on continual improvement and increased velocity. 
- Adaptable - We are open to change as we mature and scale. We support colleagues on the journey

Logistics 

Role Location 
For those who prefer a hybrid way of working, you would typically spend 1-2 days a week in our UK HQ in central London.
We are also open to candidates who wish to work 100% remotely within the UK. We would very occasionally bring you into the office for all hands and social events on a quarterly cadence. In these instances, we would cover your cost of transport and accommodation 

Interview & Assessment

- Interview with Talent Team - a 30-45 min chat to explore the role in more detail and tell you more about Improbable 
- A 60-min interview with the hiring manager. They would go into much more detail about the intricacy of the role as well as assess if it’s a good fit for you.
- We also include a short 60 min technical screen, either straight afterwards or when diaries permit. The bulk of our interviews come next. Your talent partner will walk you through how to prepare and what to expect in these sessions. These will include:
- A behavioural interview (45 mins) - You will be asked a series of competency-based questions and give specific examples of past experiences to validate them.
- Design a system (60 mins) - This will be with an engineer who will pose a design question; you should think about deep requirements gathering, working collaboratively to find a solution, and so on.
- Technical interview (60-120 mins) - The type of interview will depend on your main language of choice Final interview with a member of the C team