Software Engineer (C++)
Role details
Job location
Tech stack
Job description
design, build, and maintain high-performance trading and analytics systems used across our business. You'll work on low-latency, mission-critical applications, applying modern C++ to solve complex engineering problems and ensure system reliability at scale. Beyond feature development, you'll play a key role in diagnosing and resolving production crashes, performing deep-dive debugging at the OS and runtime level. You'll collaborate closely with global colleagues, end users, and brokers, contributing to planning and delivery while mentoring junior engineers. This is a hands-on role for an engineer who thrives in fast-paced, high-performance environments and wants to make a tangible impact on the stability and performance of trading infrastructure. Role Responsibilities Design, develop, and maintain robust, low-latency C++ applications with focus on performance, scalability, and resilience. Take ownership of complex technical problems, including crash investigation, low-level debugging
Requirements
and optimisation. Perform deep crash analysis (call stacks, disassembly, memory corruption) and deliver long-term fixes. Collaborate with peers and leads in design discussions and technical decision-making. Conduct code reviews to ensure best practices and high engineering standards. Mentor junior developers and enhance team capability. Partner with QA, DevOps, product managers, and business users to deliver high-quality solutions. Drive improvements in debugging, testing, and development processes. Experience / Competencies Professional C++ development experience (C++11/14/17). A background in finance, trading systems, or other low-latency, high-throughput environments. Expertise in modern C++ (memory management, concurrency, templates, STL, metaprogramming). Skilled in crash dump analysis, memory leak detection, runtime debugging (WinDbg, VTune, Visual Studio). Hands-on optimisation of multi-threaded, real-time systems. Proficient in OOP, SOLID principles, RAII, and design patterns. Strong knowledge of testing, CI/CD, and version control (TDD, Git, pipelines). Familiarity with Windows internals (Win32 APIs, MFC/ATL), networking, IPC, and relational databases. Exposure to distributed systems, microservices, and cloud platforms. Strong communication and collaboration in Agile/SCRUM environments. Nice-to-have: advanced Windows internals debugging, disassembly-level crash forensics, HFT performance tuning, distributed messaging (Kafka, Solace, ZeroMQ), containerisation (Docker/Kubernetes), scripting (Python/C#), and trading domain knowledge. Job Band & Level: Professional / 5 #LI-Hybrid #LI-ASO Not The Perfect Fit? Concerned that you may not meet the criteria precisely? At TP ICAP, we wholeheartedly believe in fostering inclusivity and cultivating a work environment where everyone can flourish, regardless of your personal or professional background. If you are enthusiastic about this role but find that your experience doesn't align perfectly with every aspect of the job description, we strongly encourage you to apply. You may be the ideal candidate for this position or another opportunity within our organisation. Our dedicated Talent Acquisition team is here to assist you in recognising how your unique skills and abilities can be a valuable contribution. Don't hesitate to take the leap and explore the possibilities. Your potential is what truly matters to us. Company Statement We know that the best innovation happens when diverse people with different perspectives and skills work together in an inclusive atmosphere. That's why we're building a culture where everyone plays a part in making people feel welcome, ready and willing to contribute. TP ICAP Accord - our Employee Network - is a central to this. As well as representing specific groups, TP ICAP Accord helps increase awareness, collaboration, shares best practice, and holds our firm to account for driving continuous cultural improvement. Location UK - 135 Bishopsgate - London", "salary_raw": "Row(double=None, string=None)"}