Position Overview
The Embedded Systems Engineer is responsible for designing, developing, and maintaining high-performance embedded software that powers innovative products and systems. This role is focused on hands-on software development, system integration, and delivering reliable, efficient solutions in resource-constrained environments.
You will work closely with cross-functional teams to build robust embedded platforms, contribute to system-level integration, and ensure high standards of performance, quality, and maintainability.
Key Responsibilities
Embedded Software Development
-
Design, implement, and test embedded software across a range of hardware platforms
-
Develop efficient, reliable, and maintainable code for real-time and resource-constrained systems
-
Optimise software for memory usage, processing efficiency, and overall system performance
-
Contribute to the development and maintenance of embedded software architectures
System Integration & Collaboration
-
Collaborate with hardware engineers, software developers, and product teams to ensure seamless system integration
-
Support the integration of embedded systems with peripheral hardware components
-
Assist in translating system and product requirements into software implementations
Testing, Debugging & Maintenance
-
Troubleshoot and debug software and system-level issues, identifying root causes and implementing effective solutions
-
Support verification and validation activities to ensure system performance and reliability
-
Maintain and improve existing software, addressing bugs and enhancing functionality
Development Process & Continuous Improvement
-
Participate in the full software development lifecycle, from requirements through to deployment and maintenance
-
Follow established development practices, including version control, documentation, and testing standards
-
Stay up to date with emerging technologies and best practices in embedded systems and software development
-
Contribute to knowledge sharing and continuous improvement within the team
Qualifications & Experience
Required:
-
Degree in Computer Science, Electrical Engineering, or a related field
-
Experience in embedded software development, with understanding of real-time systems and microcontrollers
-
Proficiency in C and/or C++
-
Familiarity with embedded operating systems (e.g., FreeRTOS, embedded Linux, or bare-metal environments)
-
Experience with debugging tools, development environments, and version control systems
Preferred:
-
Experience with hardware-software integration and low-level interfaces
-
Familiarity with scripting or higher-level languages (e.g., Python)
-
Experience working in complex or performance-critical systems
Ideal Candidate
-
Experience working with AMD Xilinx Zynq or similar SoC/FPGA platforms
-
Familiarity with embedded Linux build systems such as PetaLinux or Yocto
-
Experience developing or working with Linux device drivers
-
Proficiency in Python for scripting, testing, or automation
-
Comfortable working close to hardware, including debugging at the interface of software and electronics
Soft Skills Requirements
-
Strong problem-solving and analytical skills
-
Ability to work independently and as part of a team
-
Good communication and collaboration skills
-
Willingness to learn and continuously develop technical expertise
-
Professionalism, reliability, and attention to detail
About the Role
This role offers the opportunity to work on challenging technical problems and contribute to the development of high-impact products. You will be part of a collaborative engineering team focused on building reliable, high-quality embedded systems.