Software Engineer: Physical Modeling

Richmond, California, United States Full-time

Would you like to see your work have physical impact on our planet?  Do you want to build cloud software that controls a fleet of hundreds, potentially thousands, of industrial-scale clean energy devices in the field?

We're looking for candidates who are ready to get their hands dirty, are as passionate about energy storage as we are, and will do whatever it takes to bring a new energy storage system to market!

What You’ll Do

As Software Engineer, you’ll be developing the software that turns our Refrigeration Battery hardware into smart storage devices.  You’ll directly work with and contribute to cutting-edge physical modeling and energy management algorithms, and you’ll build them into applications that will bring those algorithms to life, thereby having a real-world effect on our customers’ energy savings.
You will work directly with the CTO, the Lead IoT Cloud Engineer, and the Director of Controls Development on the following strategic initiatives:

  • Build software services that apply analytical and numerical physics, thermodynamics, and fluid mechanics models, from the IoT edge to the cloud, to improve energy savings.
  • Design a cloud service & APIs to connect energy management appliances to clients.
  • Enhance our embedded IoT software to leverage your new cloud functionality.
  • Build a web-based analysis platform for generating actionable reports on our system’s performance.
  • Generate metrics to drive beautiful & intuitive displays of energy savings data in our web apps.
  • Many other engineering / software projects not specifically outlined here.

Who You Are

(a general guide - we can bend these rules for an incredible candidate!)

  • B.S. in computer science, computer engineering, or similar.
  • Excellent software design instinct; object orientation should be core to your thinking.  Skilled at algorithm design.
  • Solid programming experience:
  • Python or Java required; experience with both a plus
  • Interest in learning other domain-specific languages
  • Experienced with common web backend frameworks (Python Flask, Java Spring, Node.js / MEAN stack)
  • Linux servers, AWS & EC2 instances, Heroku and other Paas platforms
  • Ability to develop rapidly prototype web applications (Node.js, HTML5 / CSS3, JQuery) a plus
  • Experience with serverless cloud infrastructure a plus 
  • Interested in learning and contributing to a wide variety of software projects, including web backend, IoT Edge, creative data analysis, and control using machine learning algorithms
  • An enthusiastic self-starter who can work with minimal supervision, generates novel and creative solutions to tough problems, and is willing to put in the effort it takes to get this energy storage startup off the ground.
  • Passionate about technology innovation, product development, energy engineering, and energy storage.

Our Preferred Stack

  • Data processing, modelling: Python
  • APIs, data pipeline: Python, Node.js, Java / JAX-RS
  • General purpose web apps: Python Flask, MEAN stack
  • Embedded software: Java

The Fine Print

  • Compensation in cash and equity.
  • Healthcare and 401k.
  • As startups go, the work is demanding and the hours are long, but we’ll make every effort to find an arrangement that works.
  • Some travel, mostly local.

Bonus Question

Please answer any or all of the following questions. You can keep your answers brief - no more than 10 lines each. Use pseudocode, Python, or Java. Thanks!

1) Write three functions that compute the sum of the numbers in a given list using a for-loop, a while-loop, and recursion.

2) Write a function that combines two lists by alternatingly taking elements. For example: given the two lists [a, b, c] and [1, 2, 3], the function should return [a, 1, b, 2, c, 3].

3) Write a function that computes the list of the first 100 Fibonacci numbers. By definition, the first two numbers in the Fibonacci sequence are 0 and 1, and each subsequent number is the sum of the previous two. As an example, here are the first 10 Fibonnaci numbers: 0, 1, 1, 2, 3, 5, 8, 13, 21, and 34.

Apply for this opening at