Associate Engineer, Software Tools
Role details
Job location
Tech stack
Job description
Graduate Software Engineer - Compiler & Full-Stack Tooling for Battery-Management ICs (BMS) Are you excited by sustainable technology and motivated to help build the software that powers the future of electric vehicles? We're seeking a talented Graduate Software Engineer to join our team and contribute to both compiler development for Battery Management System (BMS) ICs and the creation of web-based tools that engineers use to configure, visualize, and deploy battery-management logic. This role is ideal for someone who enjoys working across system-level compiler tooling while also building modern, interactive full-stack applications. About the Role You will join a multidisciplinary team developing:
- A custom compiler toolchain that translates high-level BMS configuration rules into optimized machine-level instructions for our battery-management ICs.
- A React-based front-end application that allows engineers to visualise IC behaviour, configure system parameters, and validate designs.
- A Node.js backend service that interfaces with the compiler, manages data models, serves configuration artefacts, and integrates with silicon evaluation tools.
You'll be supported by experienced engineers while working on real production-grade tools used throughout the company. Location: Edinburgh, Scotland. Key Responsibilities: Compiler Development
- Contribute to the design and implementation of compiler modules including lexing, parsing, code generation.
- Work with hardware engineers to understand IC architecture, memory maps, registers, and hardware execution models.
- Help create automated tests that verify correctness across a wide range of input programs and battery use cases.
Full-Stack Tooling Development
- Develop new React components and pages for visualising configuration models, hardware states, and generated outputs.
- Build responsive UI features such as interactive configuration editors, charts, dashboards, and validation tools.
- Contribute to API design (REST or GraphQL) for transporting configuration data and artefacts between the UI, backend, and compiler.
- Write automated tests for both front-end and backend components.
General Responsibilities
- Participate in design discussions, code reviews, and sprint planning.
- Debug and troubleshoot issues across the full stack - from compiler output to UI behaviour.
- Collaborate with embedded, systems, and algorithm engineers to integrate end-to-end toolchain functionality.
- Support deployment, CI/CD workflows, and documentation of the tools you help build., * Work on unique engineering problems at the intersection of compilers, embedded systems, and modern web tooling.
- Build highly transferable skills across full-stack development, toolchain engineering, and embedded silicon workflows.
- Learn from engineers with expertise spanning software, hardware, and automotive systems.
- Contribute to technology that enhances EV battery safety, reliability, and sustainability.
- Join a team that values innovation, learning, and technical excellence.
Requirements
- Degree (or final-year status) in Computer Science, Software Engineering, Electronics, or related field.
- Basic knowledge of React, JavaScript/TypeScript, or modern front-end development principles.
- Foundational understanding of backend development - ideally Node.js.
- Strong understanding of algorithms, data structures, and programming language concepts.
- Interest in compilers, embedded systems, or full-stack development (or all three!).
- Curiosity about batteries, electronics, or hardware-software interactions.
Bonus Points (Nice-to-Have)
- Experience developing React apps or Node.js services beyond small scripts.
- Exposure to embedded systems, microcontrollers, or register-level programming.
- Familiarity with battery technology or automotive software.
- Awareness of quality standards such as ISO 26262 or Automotive SPICE.
- Experience working with evaluation boards, firmware, or low-level debugging tools.