EnergyHub empowers utilities and their customers to create a clean, distributed energy future. As a Software Engineer on the Battery team, you will design and develop backend services that support residential battery programs, improving grid flexibility and enhancing program value.
Responsibilities:
- Develop Java-based solutions, working towards well-structured, high-quality code with automated testing
- Collaborate cross-functionally with product managers, internal engineering teams, and stakeholders to contribute to high-impact projects
- Work within real-world constraints to develop creative solutions that work towards platform flexibility and scalability
- Contribute to best practices for CI/CD, data modeling, and iterative development (e.g., PoCs, rapid prototyping, milestone-based execution)
- Actively participate in a strong technical culture of respect, open communication, and collaboration
- Write and maintain technical documentation
- Drive and embody the “Dev Owns Quality” culture
- Other duties as assigned
Requirements:
- 3+ years professional software engineering experience, preferably in a small to medium-sized team, with a proven exceptional ability as a software engineer
- Eager to learn new technologies and enthusiastic to be a back-end engineer with a focus on application development and data pipelines
- Strong experience developing the full SDLC
- Experience with Java (preferably Java 11+)
- Experience with Python
- Strong problem-solving skills, capable of balancing multiple use cases while enabling flexibility
- Experience with web services and RESTful APIs using Spring
- Knowledge of modern security best practices, authentication/authorization frameworks, and system/API hardening
- Extensive data engineering experience is a huge plus, including addressing data quality issues, building data pipelines, monitoring and alerting
- Experience with relational databases and SQL is a plus
- Experience with S3, MongoDB, AWS, DBT, Snowflake a plus
- Familiarity with CI/CD pipelines and modern software development practices
- Proven ability to deliver high-quality, iterative value while maintaining execution speed
- Strong communication skills, with an emphasis on cross-functional collaboration and working on challenging technical problems