Senior Software Engineer / Technical Lead (C++ Middleware & Interfaces)

ITCAN PTE. LIMITEDSingaporemycareersfuturepublished 11/11/2026
Must-have:GitDockerCI/CDSecurityLeadJunior

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.