Position Overview
We are seeking a Senior Embedded Software Engineer to design, develop, integrate, test, and improve reliable software for embedded and connected products. The role combines strong C/C++ and real-time systems expertise with sound architecture, hardware-software integration, cybersecurity, automation, and product-engineering practices. You will work with systems, hardware, application, platform, quality, cybersecurity, manufacturing, and product teams to translate complex requirements into robust, testable, maintainable, and production-ready software.
Responsibilities
Embedded Software Design and Development
Translate product, system, and hardware requirements into embedded software architecture, interfaces, designs, implementation plans, and acceptance criteria.
Design, develop, test, and maintain firmware, device drivers, board-support software, middleware, hardware-abstraction layers, and real-time applications.
Develop software for microcontrollers, processors, embedded Linux, real-time operating systems, or bare-metal environments.
Implement and optimise communication protocols, data acquisition, control logic, diagnostics, state management, and device-management functions.
Apply modular design, object-oriented or component-based practices, design patterns, coding standards, and reusable engineering approaches.
Hardware-Software Integration and System Performance
Integrate processors, microcontrollers, sensors, actuators, communication modules, storage devices, and other hardware components.
Perform board bring-up, interface verification, hardware-software integration, fault isolation, and system debugging using appropriate engineering tools.
Analyse and improve timing, concurrency, memory usage, startup behaviour, power consumption, reliability, throughput, and overall system performance.
Support system integration across embedded devices, backend services, applications, APIs, messaging technologies, and external interfaces.
Document interfaces, timing assumptions, resource budgets, error handling, operating limits, and technical decisions.
Verification, Automation and Product Quality
Develop unit, integration, regression, system, simulation, software-in-the-loop, and hardware-in-the-loop tests appropriate to the product.
Build or improve automated test harnesses, manufacturing diagnostics, static analysis, code-quality checks, and continuous-integration workflows.
Collaborate with
Product Owners, Systems Engineers,
Developers, and QA/Test Engineers to refine requirements, user stories, acceptance criteria, and test coverage.
Investigate defects and production issues, perform root-cause analysis, implement corrective actions, and verify closure.
Prepare design documentation, interface specifications, test evidence, release notes, runbooks, and product handover materials.
Secure Delivery and Lifecycle Support
Apply secure coding, least-privilege, secrets protection, secure communications, software-update, logging, and vulnerability-management practices.
Support build, release, configuration, versioning, traceability, deployment, rollback, and maintenance processes for embedded software.
Contribute to risk assessments, design reviews, production-readiness reviews, and quality or cybersecurity assurance activities.
Support product industrialisation, manufacturing integration, field diagnostics, lifecycle maintenance, and continual improvement.
Balance performance, reliability, security, cost, schedule, maintainability, and hardware constraints when making technical decisions.
Technical Leadership and Collaboration
Lead technical design and code reviews, establish engineering standards, and improve team practices for quality, maintainability, security, and reuse.
Mentor engineers, share knowledge, and help resolve complex software, integration, and debugging challenges.
Communicate technical trade-offs, risks, dependencies, and recommendations clearly to technical and non-technical stakeholders.
Work effectively in Agile, Scrum, or hybrid delivery teams and collaborate across locations and disciplines.
Stay current with embedded architectures, real-time software, developer tooling, cybersecurity, automation, and relevant engineering practices.
Requirements
Experience and Education
Bachelor's or Master's degree in Computer Science, Computer Engineering, Electrical or Electronic Engineering, Robotics, or a related discipline, or equivalent practical experience.
At least 5 years of relevant professional experience developing embedded, firmware, real-time, device, or systems software.
Demonstrated ownership of embedded software across design, implementation, integration, verification, release, and lifecycle support.
Experience mentoring engineers, leading technical reviews, or driving engineering practices within a product or delivery team.
Technical Skills
Strong proficiency in C and C++, including data structures, concurrency, memory management, debugging, and software design.
Hands-on experience with microcontrollers or embedded processors and at least one of embedded Linux, a real-time operating system, or bare-metal development.
Experience with hardware interfaces and protocols such as UART, SPI, I2C, CAN, USB, Ethernet, or equivalent technologies.
Experience using debuggers, oscilloscopes, logic analysers, trace tools, profilers, build systems, Git, and automated test tools.
Understanding of boot sequences, interrupts, scheduling, inter-process communication, error handling, and resource-constrained design.
Experience with unit testing, code review, static analysis, continuous integration, configuration management, and release practices.
Ability to translate system and hardware requirements into reliable, testable, secure, and maintainable software.
Key Competencies
Strong analytical thinking and structured problem-solving skills.
Excellent attention to detail and a disciplined approach to engineering quality.
Strong ownership, sound technical judgement, and the ability to work independently in an evolving environment.
Clear written and verbal communication and effective stakeholder collaboration.
A pragmatic mindset that balances technical excellence with delivery feasibility, product risk, and business outcomes.
Preferred Skills and Experience
Experience developing device drivers, board-support packages, bootloaders, Linux kernel modules, middleware, or real-time control software.
Experience with CMake, Make, Yocto, Buildroot, cross-compilation, package repositories, Docker, or equivalent build and development tooling.
Experience with messaging and integration technologies such as MQTT, AMQP, Kafka, or equivalent protocols.
Knowledge of secure boot, cryptography, over-the-air updates, identity, vulnerability management, or embedded cybersecurity.
Experience with simulation, software-in-the-loop, hardware-in-the-loop, manufacturing tests, performance profiling, or field diagnostics.
Familiarity with functional safety, reliability engineering, regulated product development, or formal software-development standards.
Relevant professional certifications in embedded systems, cloud, cybersecurity, Agile, Scrum, or software architecture.
What We Offer
Meaningful work on modern embedded and connected products with real users and measurable outcomes.
Opportunities to work across the full product lifecycle, from architecture and prototyping to production and continual improvement.
Collaboration with multidisciplinary teams across hardware, systems, software, data, platform, cybersecurity, quality, manufacturing, and product disciplines.
Ownership of embedded architecture, reusable engineering patterns, technical delivery, and opportunities to mentor others.
A professional and collaborative environment that supports learning, responsible innovation, and career development.
Why choose ST Engineering:
14 days Annual leaves + 3 Sick leaves
Private Health Insurance
Annual Salary Review
Performance Bonus
100% salary in probation period
Free LinkedIn Learning Account
Company Events & Team Building