First seen by Alion on Nov 4, 2026.
About the role
Lead the technical delivery of a customised C++middleware solution for a customer environment. The role is responsible for translating customer and system requirements into a robust software architecture, managing day-to-day software-development activities, and ensuring the delivered interfaces are reliable, testable, maintainable, and suitable for integration into the customer’s wider system. This role shall also participate in the software development after the design phase.
Responsibilities
- Lead the design, development, integration, and verification of customised middleware and software interfaces in C++.
- Act as the technical focal point for the software work package, coordinating software tasks, priorities, estimates, risks, and delivery milestones.
- Analyse customer, system, interface-control, and operational requirements; derive clear software requirements and acceptance criteria.
- Define the middleware architecture, including interface abstractions, data models, message formats, protocol handling, error handling, logging, configuration, and service lifecycle management.
- Design and implement C++ components for inter-system communications, data translation, protocol conversion, message routing, and interface monitoring.
- Review interface specifications and work with customers, internal engineering teams, and third-party suppliers to resolve technical ambiguities and integration issues.
- Establish and maintain software engineering practices, including coding standards, branching strategy, code reviews, build management, unit testing, static analysis, and version control.
- Plan and supervise the Junior Software Engineer’s work, provide technical guidance, conduct code reviews, and support capability development.
- Develop software design documents, interface descriptions, test procedures, release notes, installation guides, and technical reports.
- Define and execute unit, integration, system, and acceptance testing; investigate defects and support root-cause analysis.
- Support software installation, deployment, commissioning, customer demonstrations, site integration, and post-delivery defect resolution where required.
- Identify technical, schedule, cybersecurity, obsolescence, and integration risks, and propose practical mitigation actions.
- Ensure developed software complies with applicable customer requirements, project processes, quality procedures, and cybersecurity expectations.
Requirements
- Degree in Computer Science, Computer Engineering, Electrical/Electronic Engineering, or a related technical discipline.
- At least 5 years of professional software-development experience, including substantial experience in C++.
- Demonstrated experience delivering production-quality C++ software for distributed, embedded, industrial, maritime, defence, communications, automation, or other integration-heavy systems.
- Experience designing middleware, software interfaces, communications gateways, protocol adapters, or data-integration solutions.
- Strong understanding of modern C++ principles and practices ideally C++11 or later.
- Experience with Linux-based development environments, including command-line troubleshooting, process/service management, file permissions, networking tools, and log analysis.
- Experience with Git and structured software configuration management.
- Experience with software debugging, profiling, automated testing, and defect investigation.
- Ability to interpret interface control documents, protocol specifications, data dictionaries, and system requirements.
- Strong written and verbal communication skills, including the ability to produce clear technical documentation and engage directly with customers and multidisciplinary engineering teams.
Preferred Qualifications andExperience
- Experience with TCP/IP, UDP, multicast, serial communications, REST APIs, RPC, publish-subscribe architectures, or message-oriented middleware.
- Experience with data formats such as JSON, XML, YAML, CSV, Protocol Buffers, ASN.1, or binary message formats.
- Experience with CMake, Make, Conan, vcpkg, Docker, CI/CD pipelines, or automated build/test environments.
- Familiarity with cybersecurity practices for software and networked systems, including secure coding, authentication, access control, certificate handling, vulnerability management, and audit logging.
- Experience in regulated, safety-critical, high-availability, maritime, defence, industrial, or customer-acceptance environments.
- Prior experience technically leading a small team or mentoring junior engineers.
- The Junior Software Engineer is effectively guided and contributes independently to defined development work packages.
- Customer and internal stakeholders receive timely, clear technical updates and well-managed issue resolution.
When you apply, you voluntarily consent to the disclosure, collection and use of your personal data for employment/recruitment and related purposes in accordance with the Tech Aalto Privacy Policy, a copy of which is published at Tech Aalto’s website (https://www.techaalto.com/privacy/)
Confidentiality is assured, and only shortlisted candidates will be notified for interviews.
Skills
Software Debugging, Distributed Platforms, Software Requirement Specification, Lifecycle Management, Computer Engineering, Development, Linux Development, Middleware Interfaces, Software Engineering, C Language, Data Dictionary, Middleware, Software Configuration Management, Software Delivery, Customer Service, C for Embedded Systems

