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 ResponsibilitiesProvide input to design architecture and system requirementsImplement detailed designs based on provided requirementsProvide advice on technical problems and review project work for technical accuracy and adequacyFirmware (embedded software) development based on system requirements. This includes code development, unit test development, as well as design and development documentationDevelopment level testing throughout the implementation process which includes code debugging and participating in code reviewsDebugging code by incorporating hardware signals and lab equipmentProduction 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 codeSupport products from release to quality assurance through to field trials and production including fixing bugs reported by QAGeneration of BSPs and chip driversParticipating in an Agile development environmentOther duties as assignedPosition Requirements6+ years of experience in firmware development4+ years of experience with embedded C programming languageWorking knowledge of the internal architecture of MCUs to enable making use of a variety of peripheralsWorking 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 debuggingAbility to understand binary protocols and comfortable working with binary dataExperience with multi-threaded programmingFamiliarity with LinuxExperience with source code management/versioning tools and practicesExperience with Python and MATLAB/OctaveAbility to produce detailed technical documentationStrong problem solving and analytical skillsDemonstrably excellent organizational, communication and interpersonal skillsAbility to work both independently and as a team contributorAbility to produce detailed technical documentationBachelor’s degree in electrical & electronics engineering, computer science, or similar degreePosition AssetsWorking experience with FreeRTOSExperience with ARM Cortex-M family of MCUsExperience with battery operated and low power applicationsExperience with TCP/IPExperience within an Agile development environmentWe 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.