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
City of Edinburgh