Senior Software Engineer / Technical Lead, C++ Middleware & Interfaces
Must-have:GitDockerCI/CDSecurityLeadJunior
Summary:
Lead the technical delivery of a customised C++ middleware solution in Singapore. You will turn customer and system requirements into a robust software architecture, run day-to-day development, and ensure the interfaces delivered are reliable, testable and maintainable. The role is hands-on and continues into development after the design phase.
Responsibilities:
- Lead the design, development, integration and verification of customised C++ middleware and software interfaces.
- Act as technical focal point for the software work package, coordinating tasks, priorities, estimates, risks and milestones.
- Analyse customer, system, interface-control and operational requirements, and derive software requirements and acceptance criteria.
- Define the middleware architecture: interface abstractions, data models, message formats, protocol handling, error handling, logging, configuration and service lifecycle.
- Build C++ components for inter-system communications, data translation, protocol conversion, message routing and interface monitoring.
- Resolve technical ambiguities and integration issues with customers, internal teams and third-party suppliers.
- Establish software engineering practices: coding standards, branching strategy, code reviews, build management, unit testing, static analysis and version control.
- Plan and supervise the work of a Junior Software Engineer, providing technical guidance, code reviews and mentoring.
- Produce design documents, interface descriptions, test procedures, release notes, installation guides and technical reports.
- Define and run unit, integration, system and acceptance tests, and support defect investigation and root-cause analysis.
- Support installation, deployment, commissioning, customer demonstrations, site integration and post-delivery defect resolution.
- Identify technical, schedule, cybersecurity, obsolescence and integration risks, and propose mitigations.
- Ensure compliance with customer requirements, project processes, quality procedures and cybersecurity expectations.
Qualifications/Requirements:
Required
- Degree in Computer Science, Computer Engineering, Electrical/Electronic Engineering or a related discipline.
- 5+ years of professional software development, with substantial C++ experience (modern C++, ideally C++11 or later).
- Proven delivery of 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.
- Linux development experience: command-line troubleshooting, process/service management, file permissions, networking tools and log analysis.
- Git and structured configuration management.
- 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, including technical documentation and direct customer engagement.
Preferred
- TCP/IP, UDP, multicast, serial communications, REST APIs, RPC, publish-subscribe or message-oriented middleware.
- Data formats such as JSON, XML, YAML, CSV, Protocol Buffers, ASN.1 or binary message formats.
- CMake, Make, Conan, vcpkg, Docker, CI/CD pipelines or automated build/test environments.
- Cybersecurity practices: 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.