> Markdown version of [/jobs/ext/3859178-principal-c-software-engineer](https://www.wearedevelopers.com/jobs/ext/3859178-principal-c-software-engineer). Every page supports `.md` or `Accept: text/markdown`. Links point to the HTML versions so they work for humans too. Agent guide: [/agents.md](https://www.wearedevelopers.com/agents.md). --- # Principal C++ Software Engineer - **Company:** Indra Group UK & Ireland - **Location:** Redhill, UK (Remote available) - **Experience:** Expert - **Salary:** £116,355.0 - **Contract:** Permanent contract - **Skills:** Clean Code Principles, Microsoft Windows, Systems Engineering, Automation of Tests, Bluetooth, C++ (Programming Language), CMake, Code Review, Cyber Security, Computer Engineering, Continuous Integration, Software Design Patterns, Memory Management, Linux on Embedded Systems, Inter-Process Communication, Linux Servers, Message Queuing Telemetry Transport (MQTT), Object-Oriented Software Development, Software Architecture, Software Engineering, Systems Integration, WebSocket, Windows Desktop, Data Logging, Multithreading, Google Test, Git, Computer Equipment, Build Management, Codebase, Software Coding, Restful APIs, C++14, Docker, Jenkins - **Published:** October 22, 2026 - **Apply:** https://www.adzuna.co.uk/jobs/details/5936602453 ## About the Role * Significant professional experience in C and C++ software engineering, including several years in senior, lead, staff or principal-level responsibilities. * Strong hands-on knowledge of modern C++, ideally including C++11, C++14, C++17 or later. * Proven experience defining software architecture and leading technically complex development or integration activities. * Experience developing software for Embedded Linux, Linux Server or Windows Desktop systems. * Experience integrating software with hardware devices and diagnosing issues across HW/SW boundaries. * Strong understanding of: * Multithreading and concurrency. * Memory management. * Object-oriented design. * State-machine design. * Inter-process communication. * Network and device communications. * Error handling, logging and diagnostics. Experience modernising or migrating large legacy C++ codebases.Strong knowledge of software build and dependency-management tools, particularly CMake.Experience using Git and structured branching, review and release processes.Experience with automated unit and integration testing using frameworks such as Google Test and Google Mock.Experience designing or integrating messaging and service interfaces, including technologies such as: * REST APIs. * MQTT. * WebSockets. Experience with continuous integration and delivery pipelines.Ability to investigate complex production defects and provide technically robust solutions.Experience conducting design reviews and code reviews.Demonstrable technical leadership and mentoring experience.Strong written and verbal communication skills, including the ability to explain technical decisions, risks and trade-offs to engineering and non-engineering stakeholders. Experience in one or more of the following areas is highly desirable: * Automated Fare Collection systems. * Contactless payment and smart-ticketing systems. * Transport ticketing devices. * Card readers and validators. * Gate and station equipment. * EMV contactless payments. * ITSO smart ticketing. * Barcode validation. ## Description The successful candidate will lead the technical delivery of software running on Embedded Linux and Windows platforms, including card readers, validators, gates, ticketing devices and associated station or vehicle systems., This is a senior individual-contributor role combining software architecture, hands-on C++ development, design and code review, technical decision-making, mentoring and cross-team coordination. The engineer will take ownership of complex software changes from initial analysis through implementation, integration, testing, deployment and production support., * Act as the technical authority for one or more C++ software products or project workstreams. * Define software architecture and technical solutions for new products, hardware replacements, platform migrations and legacy-system modernisation. * Design, implement and maintain high-quality software using modern C++. * Lead the migration of legacy C and C++ applications to modern operating systems, hardware platforms, build environments and compiler toolchains. * Analyse existing codebases and identify technical risks, dependencies and modernisation opportunities. * Integrate software with hardware devices such as: * Contactless and NFC readers. * Fare validators and ticketing devices. * POS terminals. * Receipt printers. * Communications modules. * Bluetooth and other peripheral devices. Define and review software interfaces using REST APIs, MQTT, WebSockets and other messaging or communication protocols.Lead software design reviews, code reviews and technical investigations.Establish appropriate software engineering practices, including coding standards, design patterns, automated testing and Clean Code principles.Diagnose and resolve complex defects involving software, hardware, operating systems, communications and distributed-system interactions.Ensure that software is reliable, maintainable and suitable for deployment to field devices.Define build, packaging, deployment and CI/CD approaches using tools such as CMake, Docker, Jenkins and Git.Work closely with systems engineering, hardware engineering, testing, cybersecurity, Back Office teams, project management and external suppliers.Provide technical estimates, identify delivery risks and contribute to project and resource planning.Mentor software engineers and support the technical development of distributed or multidisciplinary teams.Support integration, acceptance, deployment and production investigations when required.