Dukosi

Principal Software Engineer

City of Edinburgh

Posted 21 days ago

On-site

Full-time

Senior Level

Dukosi is a leading-edge technology company developing revolutionary technologies that dramatically improve the performance, safety, and efficiency of battery systems, and enable a more sustainable battery value chain. Our unique cell monitoring platform based on chip-on- cell technology and proprietary contactless communication protocol is transforming battery systems for electric vehicles (EV), industrial transportation and stationary energy storage markets. Our environmental purpose is at the heart of our business and drives our search for new ideas and approaches to improve the technologies that can help transition to net-zero emissions and a sustainable clean energy economy.

The Principal Software Engineer leads the development and delivery of embedded software for Dukosi products, owning technical direction, architecture, and execution across complex, multidisciplinary systems.

This role combines deep technical expertise with hands-on delivery leadership, ensuring software is developed to the highest standards of quality, safety, and performance, and successfully delivered into production. It serves as the technical lead for software development activities within a product or major subsystem, influencing design decisions, development practices, and cross-functional alignment.

This role is primarily a technical leadership position; however, candidates with experience in people's leadership or an interest in developing into a management role are highly desirable.

KEY DUTIES

Technical Leadership & Delivery

Lead the end-to-end development of embedded software for Dukosi products, from concept through to production and support Own the technical delivery of major software subsystems, ensuring alignment with product requirements, quality, and schedule Provide technical leadership to a team of engineers, guiding design, implementation, and problem-solving activities Act as the primary technical point of contact for software within cross-functional project teams Contribute to planning, estimation, and technical risk management.

Architecture & System Design

Define software architecture and contribute to system-level design, including HW/SW partitioning and interface definition Ensure robust integration across embedded firmware, ASIC, system software, and tools Drive design decisions that balance performance, scalability, safety, and maintainability Support system-level trade-offs and architectural decisions across the product.

Software Development & Quality

Contribute directly to implementation of critical software components (hands-on development) Ensure adherence to high standards of software quality, including coding standards (e.g. MISRA), testing, and documentation Support debugging and resolution of complex system-level issues across hardware and software boundaries Contribute to definition and execution of verification and validation strategies.

Process & Continuous Improvement

Contribute to and improve software development processes, including CI/CD, testing, and code quality practices Support adoption of structured development approaches aligned with industry standards (e.g. ASPICE, ISO 26262, ISO 21434) Drive improvements in efficiency, quality, and team effectiveness.

Collaboration & Mentoring

Mentor and support engineers, providing technical guidance and fostering development Collaborate with hardware, systems, validation, and applications teams to refine requirements and deliver integrated solutions Promote best practices in software engineering across the team.

Experience

10+ years of experience in embedded C software development Proven track record of delivering complex embedded software systems into production Strong experience working at both module and system level in multidisciplinary environments Demonstrated experience leading technical work across projects or teams, including guiding or coordinating engineers Experience developing low-level embedded software (e.g. drivers, RTOS, or bare-metal systems) Experience with embedded toolchains (e.g. IAR or equivalent), debugging tools, and hardware interfaces.

Desired Skills

Strong programming skills in C/C++ (embedded), with additional experience in Python or similar Strong understanding of embedded architectures, real-time systems, and hardware interfaces (SPI, I²C, UART, etc.) Ability to design and reason about complex systems spanning hardware and software Strong debugging and problem-solving skills across system boundaries Ability to balance hands-on development with technical leadership responsibilities Experience with modern development practices (version control, CI/CD, automated testing) Ability to support and develop engineers through mentoring, coaching, and feedback Experience balancing technical leadership with team coordination responsibilities Excellent communication skills and ability to influence across teams.

Skills

Embedded C

C++

Python

Embedded Architectures

Real-Time Systems

Hardware Interfaces

Debugging

Problem-Solving

Software Quality

CI/CD

Automated Testing

Technical Leadership

Mentoring

Collaboration

System Design

Software Development