Senior Software Engineer (Distribution), Engineering
We are seeking a Senior C++ Software Engineer to design, build, and optimize high-performance, scalable software solutions. The ideal candidate will be an expert in modern C++, with deep knowledge of parallel computing, and hands-on experience with containerisation technologies like Docker and Kubernetes.
Requirements
- Extensive professional experience in modern C++ (C++11/14/17/20) development.
- Strong understanding and practical application of parallel computing, multi-threading, concurrency, and memory management.
- Hands-on experience with Docker for containerizing applications and Kubernetes for orchestration.
- Proficiency in developing and debugging on Windows and Linux environments.
- Solid knowledge of data structures, algorithms, and software design patterns.
- Excellent problem-solving and analytical skills.
- Experience with performance profiling and optimization tools.
- Familiarity with High-Performance Computing (HPC) environments and technologies like MPI or OpenMP.
- Knowledge of CI/CD pipelines and DevOps practices.
- Experience with cloud platforms such as AWS, Azure, or GCP.
Role Specifics – Distribution
The individual must be very familiar with computer parallelism and techniques for distributing complex tasks to multiple machines. They must know how distribution systems work and how the associated test harnesses can be used to stress test it. This person must be familiar with using SDKs to integrate 3rd party models and be willing and able to work with developers in our 3rd party partners to implement functionality changes as and when required. This person should be an expert in use of containers and able to write software which can easily be deployed in containers.
Responsibilities & Duties
Product Quality
- Design and develop efficient, reusable, and reliable C++ code for high-performance and low-latency systems.
- Implement and optimize complex algorithms, leveraging parallel computing, multi-threading, and multi-core programming paradigms to maximize performance.
- Identify and resolve performance bottlenecks, memory-related issues, and bugs in a Linux/Unix environment.
- Utilize containerisation technologies to build, deploy, and manage applications, creating and maintaining Docker images and orchestrating with Kubernetes.
- Lead the design and implementation of sophisticated C++ systems, from initial concept through to deployment.
- Collaborate with cross-functional teams to define requirements, conduct code reviews, and ensure the seamless integration of software components.
- Mentor junior developers and contribute to the continuous improvement of coding standards and development processes.
- The individual will be capable of performing unit and integration testing that meets the defined quality criteria.
- The individual will strive to create a highly cohesive and modular product that ultimately lowers the cost of adding new functionality to it.
Project Management
- The individual will be aware of the current milestones and deliverables. The Team Leader will inform this person of these goals.
- The individual will be capable of planning and estimating the timeframe of deliverables that the Team Leader has assigned to them. These will then be passed on to the Team Leader.
- The individual will be responsible for monitoring their progress in producing any deliverables, if slippage occurs or is likely to occur then the Team Leader must be informed.
- The individual will be capable of proactively identifying and managing risk to assist in timely delivery.
Team Management
- The individual may occasionally be given the option of mentoring/managing a small group of developers or becoming a “Project Lead” on a particular deliverable. This responsibility will be given under the R&D Manager’s discretion.
- The individual will be capable of providing advice and recommendation whilst assisting the Team Leader in interviewing suitable candidates for joining the team.
Minimum Qualifications
- BS in Computer Science, Software Engineering, Telecommunications or related experience.
- Experience with software development in a Windows environment is essential.
- 8+ years of experience in developing large scale mission-critical software applications.

