Software Engineer – Cluster framework for agent-based modelling – London

Overview

We are seeking a Software Engineer to join a growing team building out a cloud-based cluster framework for large-scale, data-driven agent-based modelling (ABM). The framework is used for the calibration and exploration of data-driven ABMs used to support strategic decision-making. These processes are highly iterative, and compute and data-intensive. The goal of the framework is to efficiently and reliably scale across thousands of compute nodes in the cloud.

The framework includes:
– a distributed dataflow engine
– an API for developing computational graphs

The team includes software engineers, devops engineers and data scientists.

For more about what we do, see our blog.

Responsibilities

  • Develop and maintain an ABM cluster framework.
  • Develop and maintain an API for computational graphs.

Skills & Requirements

MSc or PhD in Computational Science, Computer Science, Software Engineering, or related field.

Knowledge of distributed systems, parallel computing, dataflow engines.

Required experience:

  • Programming using languages like Python, Golang, Rust, C, C++
  • Building distributed systems.
  • Development for Linux-based systems
  • Agile methodologies: Scrum; Kanban; TDD; BDD

Desirable to have experience or interest in:

  • Parallel programming: MPI; OpenMP
  • RPC frameworks: gRPC; Thrift
  • Data serialisation: Protocol Buffers; FlatBuffers; Capn’Proto
  • Databases: relational and NoSQL
  • Containers: Docker; rkt
  • HPC/ Cloud architectures
  • Developing for the Cloud: AWS; GCP
  • Version control systems: git

We develop for Linux on Macbooks, push to Bitbucket, communicate via Slack, and organise using Trello.