Device Software Engineer Intern

SPANSan Francisco, CA
1dOnsite

About The Position

At SPAN, we are building products to enable the rapid adoption of renewable energy. As more distributed energy resources like solar and storage come onto the grid, it’s increasingly important to be able to improve the technology that sits between the grid, the home, and those distributed energy resources. SPAN’s smart panel replaces the electrical panel to become the center for connected power in the home. With SPAN, homeowners receive all the safety features of a standard panel with revolutionary insights and edge-of-grid controls through our mobile app. As an intern on the Device Software team you will work with SPAN’s full time engineers to solve complex technical challenges directly related to our hardware products. The Device Software team is responsible for all of the software running physically in our products, from simple 8-bit microcontrollers running RTOS up through embedded Yocto Linux computers, as well as the internal tooling to support and improve them. We do this in a collaborative environment so expect to be given independence to work on complex tasks on your own, and the support to learn what you need to execute on them successfully. SPAN’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. During a typical internship on the SPAN Device Software team you might expect to work on projects such as Writing a profiling library that allows us to measure request/response latency to the various tasks in our main microcontroller Writing a tool in Python to help the systems team explore the communication protocol of a new solar inverter Learn Rust, and improve user-facing features in our Linux Gateway Characterizing the (mis)behavior of various solar equipment in our lab using a logic analyzer or Wireshark to nail down subtle protocol issues

Requirements

  • Is working towards a BS or MS in Computer Science, Computer Engineering, Electrical Engineering, or a related field
  • Is excited to learn and grow in a cooperative team environment, working on robust solutions to complex problems
  • Has experience writing software in one or more of C, C++, Python, or Rust, with well established computer science fundamentals and experience with modern development processes
  • Is interested in writing application-level software that runs on a hardware device (in Linux and/or on a microcontroller)

Nice To Haves

  • Deep experience with C and C++, especially memory management, pointers, and concurrency
  • Exposure to real time operating systems (especially FreeRTOS) or low-level systems programming in general
  • Familiarity with a higher level language like Python/C++/Java/Rust/Go/etc and Object Oriented design
  • Wireless technologies like WiFi, Bluetooth, LoRa, Matter, or Zigbee
  • Experience with home automation and web technologies like Home Assistant, Matter, and MQTT
  • Experience being hands-on with electronics lab equipment

Benefits

  • Great opportunity to begin your career at a mission driven climate focused company
  • Competitive compensation at a well-funded, venture-backed company
  • Comfortable, sunny office space located near BART and Caltrain public transit
  • Strong focus on team-building and company culture (events, meet-ups, clubs)
© 2024 Teal Labs, Inc
Privacy PolicyTerms of Service