We are looking for a motivated team player to be part of our embedded software design team, where they will play a key role in designing, developing, and enhancing our metering products. Our products are deployed in large numbers globally and assist our customers in managing their water networks. The successful candidate will have a passion for developing embedded software systems; a keen eye for reliable embedded software design, and the methodologies needed to achieve it; and a tenacity for problem solving and debugging, leaving no stone unturned in the pursuit of quality and performance. Collaborating with internal stakeholders and a multi-disciplinary engineering team, they will help to guide our products through every step of the design lifecycle: from inception all the way through sustaining engineering.
Key Responsibilities
Provide input to design architecture and system requirements
Implement detailed designs based on provided requirements
Provide advice on technical problems and review project work for technical accuracy and adequacy
Firmware (embedded software) development based on system requirements. This includes code development, unit test development, as well as design and development documentation
Development level testing throughout the implementation process which includes code debugging and participating in code reviews
Debugging code by incorporating hardware signals and lab equipment
Production level code debugging to find the root cause of and fix bugs that occur infrequently and only on statistically significant sample sizes (1000+ devices)
Produce well documented and easy to read code
Support products from release to quality assurance through to field trials and production including fixing bugs reported by QA
Generation of BSPs and chip drivers
Participating in an Agile development environment
Other duties as assigned
Position Requirements
6+ years of experience in firmware development
4+ years of experience with embedded C programming language
Working knowledge of the internal architecture of MCUs to enable making use of a variety of peripherals
Working knowledge of hardware to facilitate integration efforts. This includes the ability to read hardware schematics and using test equipment like oscilloscopes, logic analyzers, signal generators, power supplies, ... to facilitate code development and debugging
Ability to understand binary protocols and comfortable working with binary data
Experience with multi-threaded programming
Familiarity with Linux
Experience with source code management/versioning tools and practices
Experience with Python and MATLAB/Octave
Ability to produce detailed technical documentation
Strong problem solving and analytical skills
Demonstrably excellent organizational, communication and interpersonal skills
Ability to work both independently and as a team contributor
Ability to produce detailed technical documentation
Bachelor's degree in electrical & electronics engineering, computer science, or similar degree
Position Assets
Working experience with FreeRTOS
Experience with ARM Cortex-M family of MCUs
Experience with battery operated and low power applications
Experience with TCP/IP
Experience within an Agile development environment
We are an equal opportunity employer. All qualified applicants will receive consideration for employment without regard to race, color, religion, sex, sexual orientation, gender identity, national origin, disability, status as a protected veteran, or any other category protected by law.