Principal Software Engineer
Lumen Energy
About Lumen
Commercial building owners face mounting pressure from investors, tenants, and regulators alike to decarbonize their portfolio. Taking action to select a strategy, choose a technology configuration and financing type has been confusing, slow, and at best done 1-building-at-a-time with expensive consulting reports that end up on a shelf.
Lumen Energy’s platform guides building owners to uncover the precise financial and environmental value of solar, batteries, and EV chargers across their portfolio of buildings using a novel, technology-first approach. We start by evaluating the physical viability of a given building, building up likely historical energy bills, and then optimizing several different system configurations for different financing types, based on local policy. Building owners can edit and download cash flow models to underwrite to their own assumptions and criteria. When they are ready to transact, we run a competitive marketplace with technology that levelizes bids and provides a recommendation on how to proceed.
About you
We are seeking a principal engineer to build the platform as Lumen scales its business. You are as comfortable building a simple solution to complex problems as you are shaping the product roadmap. You take immense pride in your craft and are always looking for ways to up-level your team. You listen as well as you lead, and are sought after by your peers and teammates for advice and ideas. You thrive in highly autonomous, empowered team environments and feel most energized when making a positive impact.
Primary responsibilities
Lead technical strategy and architecture for the entire Lumen platform, balancing short-term iteration with long-term resilience and scale
Create and maintain the tools that make it delightful for our external and internal users to understand the complicated factors affecting their energy usage, costs and carbon emissions
Be a force multiplier, by mentoring and guiding a small group of high-performing engineers. Help the team make strategic engineering decisions and establish the practices that create just the right amount of technical debt
Continuously improve and refine our development practices, including our testing paradigms, tooling choices, documentation practices
Collaborate closely with other teams and Lumen’s leadership to align platform vision with business needs
Foster a culture of ownership, technical excellence, and collaboration within the company
About our technology stack
Python, Flask, SQLAlchemy, PostgreSQL, Rust, TypeScript, React, GraphQL, Google Cloud Platform (See more about the code at the end of this posting)
What you need to be successful
6+ years of professional full stack software development experience
2+ years experience at an early-stage startup
Strong cross-functional collaboration skills, rooted in empathy, humility, and accountability
Strong written and verbal communication skills with the ability to articulate technical concepts to both technical and non-technical audiences
Strong product sense
Passion for decarbonization
About the interview
45 minutes: Introduction call with Kerri Devine (Head of Engineering)
60 minutes: Technical evaluation interview with 2 engineers
45 minutes: Leadership & cross-functional collaboration discussion with Peter Light (CEO)
We may request subsequent interviews here if we didn’t get enough signal in a particular competency.
(Optional): You’re welcome to have conversation(s) with your cross-functional peers to interview us.
About the code
$ scc --exclude-file generated -c --include-ext py,ts,tsx,rs ─────────────────────────────────────────────────────────────────────────────── Language Files Lines Blanks Comments Code ─────────────────────────────────────────────────────────────────────────────── Python 1400 216635 24755 18350 173530 TypeScript 627 130346 7344 2804 120198 Rust 28 12268 704 333 11231 ─────────────────────────────────────────────────────────────────────────────── Total 2055 359249 32803 21487 304959
We use Python with Flask+SQLAlchemy on the backend.
We use TypeScript with React on the frontend.
-
We wrote a few Rust modules for where performance matters.
Utility tariff rate calculations
Spreadsheet calculations: we wrote an Excel interpreter so that we can express financial calculations in the format our users understand.
-
We choose boring technology. Our single deploy is the Python app, packaged in a Dockerfile, running on a GCP VM, talking to Postgres.
We spent one of our tokens to write our own queue on top of Postgres to get the right characteristics for our app. It spans about 1000 lines of Python.
-
We rely on machines for automating type checks and deploys.
Our Python code is just about fully type-annotated.
We use immutable data classes wherever possible.
Code changes are deployed automatically when tests pass. About 30% of our python code is tests.
We believe that getting the data model right will let the rest of the code flow easily. We’ve rarely gotten the data model right the first time.
We create pull requests for all code changes for visibility, but don’t require code review.