Established in 1914, NOCO designs and creates premium consumer battery chargers, jump starters, and batteries, as well as a wide range of accessories. Through these world-class offerings, NOCO has effectively set the new standard in design, performance, and safety of its products in the consumer, commercial, and industrial markets.
What You Will Be Doing with Us
This position will provide senior embedded firmware development as part of the NOCO R&D group in the Phoenix northwest valley to provide software development and verification support for NOCO's market-leading, best-of-class consumer electronics such as vehicle boosts, smart lithium batteries, smart chargers, fast chargers, air pumps, and other products. This position leans heavily towards electrical engineering, and is NOT a full stack software development opportunity.
In this role you will:
Architect and design code for ARM microcontroller-based industry best-of-class NOCO products
Design and implement control algorithms for electric charging systems
Support existing products with ongoing software feature enhancements
Troubleshoot and determine root cause and resolution of production software issues
Devise best-practice software verification methodology and work with test engineers to implement automated testing
Devise algorithms to maximize performance on both virtual and real hardware
Work with prototype hardware and come up with ways to exploit and enhance new hardware capabilities
Work closely with hardware and test engineers, so knowledge of electrical hardware design is a plus. You will be coding software for user interfaces and management of fast charging/discharging of lithium batteries using industry standard interfaces such as USB-A, USB-C, CAN Bus, I2C, and others.
What You Will Need
10+ years of relevant hands-on software development, or equivalent
Working knowledge of methods for charging/discharging lithium batteries using industry standard interfaces such as USB-A, USB-C, and others
Familiarity with serial communications interfaces and protocols such as CAN Bus, I2C/SMBus, & SPI
Proven ability to determine root-cause of software performance issues
Proficient in C/C++, with an understanding of best-practice software development, source management, and verification methodologies targeting real-time systems
Ability to exercise good judgement and operate independently, as well as being able to work well in a cooperative and positive team environment, including mentoring junior developers
Be able to multi-task across multiple projects concurrently
Excellent communication, collaboration, and coordination skills as well as a talent and desire for mentoring junior engineers
Experience using Windows-based and/or Linux-based code development environments
What We Would Also Like
Familiarity with real-time OS, ARM microcontrollers, Eclipse-based IDEs
Good working knowledge of electrical hardware design, ability to read and interpret schematics
Ability to develop PC-based apps using Python/C/C++, and ability to write scripts to automate the software development workflow
Familiarity and experience with machine learning
Familiarity and experience with closed-loop control system design
Working knowledge and experience in Matlab Simulink modeling
Integral knowledge and experience with CAN Bus and associated protocol stacks, as well as other popular industry standard interfaces
Bachelor of Science (or higher education) in Computer Science, Computer Engineering, Electrical Engineering, or similar field.
Ability to learn new technologies and product areas quickly
Other Information
Must be willing to work mostly on-site with high voltage electromechanical/electrochemical systems.