SPAN develops products that accelerate the rapid adoption of renewable energy in the home. The flagship SPAN Smart Panel is the first true evolution for the traditional home electric panel, harnessing enhanced technology for metering, monitoring, and control. An expanded product suite of intelligent, integrated solutions radically lowers the cost and complexity of energy upgrades–including solar, batteries and EVs–empowering homeowners to be active, resilient and informed players in the energy market.
The Team and RoleSPAN’s Device Software team is responsible for all of the software that is physically embodied in our hardware products. Our first product - the SPAN Panel - contains a complex network of microcontrollers and a single board computer that must work together to react quickly to changing conditions with impeccable reliability in order to perform its job. We look for friendly, excellent engineers who enjoy working with their peers to solve complex problems and prioritize trusting that the people we hire are capable of great things when well supported. Engineers work directly with the broader software, product, and hardware teams to ensure the right things get built at the right time.
As an engineer on the Device Software team you will define and implement new features directly related to SPAN’s hardware products focusing on the lowest level - the microcontroller. This includes everything from bootloaders on systems without an OS up through applications in C and C++ inside an RTOS. Hardware products are central to SPAN’s business and writing firmware for even our smallest microcontrollers means working on something that directly impacts the user experience. You will own large user-facing features from conception through implementation on future hardware products, working independently to bring them to completion.
Representative ProjectsDesigning an OTA system that encompasses a variety of communication interfaces, processor types, and products, while achieving both secure goals for hardware-backed encryption and verification and high reliability.
Working with system architects to invent a data steaming architecture for a new product family which can satisfy both the needs of the data science team to access high rate and quality data, as well as safety guarantees around consistency and accuracy.
Representing the Device Software team in group settings and evangelizing engineering best practices. Participating in code and design reviews as well as authoring documents which further reinforce these goals, and supporting engineers across the org in hitting them.
Required Qualifications
We are seeking a Firmware/Embedded Linux engineer with:
5 or more years of experience writing software for a hardware device (on a microcontroller, and/or in Linux, etc) in C++ or C
Strong fundamentals in modern software design with tools like Object-Oriented design, coupled with awareness of concerns like manual memory management
Experience working with standard electrical communication interfaces like UART, I2C, USB, etc
Exceptional interpersonal communication and collaboration skills. Great at building trust and driving decisions to a resolution
Track record of taking ownership over projects and willingness to help others with theirs, from design and code review through to mentorship of new employees
Bonus Qualifications
We do not expect any engineer to have all skills, but we do want you to be excited to learn and grow. Every Device Software Engineer is free to roam up and down our device software stack, so any combination of the following skills is welcome but not required.
Experience with the STM32 microcontroller family
Experience with functional safety and processes and standards like UL 60730, ISO 26262, IEC 61508, and UL 1998
Experience writing higher level system or application software such as diagnostic command line tools or the application side of a communication interface
Wireless technologies like WiFi, Bluetooth and Zigbee
Hands-on experience with electronics lab equipment
Clean energy hardware in a multidisciplinary environment.


