Sr. Software Engineer - Data Engineering at Sunrun
Denver, CO, US
Staff Software Engineer - Data Engineering
 
We're looking for a seasoned Senior Software Engineer with a potential to be a technical lead to help our team build massively scalable consumer systems for clean energy.  
 
About Sunrun
 
Sunrun is the #1 residential solar company in the country and our mission is to bring clean solar power service  affordably to every house in America. We help people upgrade their home to solar energy without the big upfront costs. 
 
About Sunrun Software Engineering
 
We're hiring world-class software engineering talent to help our infrastructure keep up with daunting growth rates. We are literally working to change the world by revolutionizing the way people use energy.
 
Want to work on massively scalable consumer systems? Re-invent how consumers use energy? Have a measurable impact on one of humanity’s biggest challenges? Come to Sunrun. You'll work alongside passionate engineers engaged in the design and development of a product that is changing the world.
 
As a Senior Software Engineer, you’ll help lead technical direction for all data engineering solutions at Sunrun and will also lead the way in transforming our systems to self-healing, reliable and reactive systems.

Responsibilities

  • Help establish the development and architectural standards for the team in areas of technical excellence.
  • Work collaboratively with Product Management, DevOps, and other software developers to develop applications that can be easily tested and perform well under a variety of network conditions.
  • Champion adherence to best-practice development methodologies.
  • Design and code appropriate, scalable, and secure algorithms, data structures, and software components.
  • Lead design and code reviews.
  • Facilitate automated testing so all teams can innovate at a rapid pace.
  • Mentor and build skills across the team through effective standards setting, code reviews, and pairing. 
  • Tune production applications to maximize efficiency.
  • Demonstrated technical leadership skills with ability to conduct code reviews and architect solutions.

Qualifications

Technical Skills Needed

 

 

  • 8+ years experience designing and coding enterprise level applications 
  • Strong experience developing complex enterprise applications with NodeJS (Javascript) and/or Java.
  • Experience with REST API architecture and development especially using Swagger or Apigee. 
  • Strong knowledge of Git including version control, branching, merging/rebasing, and pull requests.
  • Solid understanding of MVC and MVVM patterns, architectures, and frameworks. 
  • Strong focus on automation including Continuous Integration / Deployment with writing unit and integration tests.
  • Experience with NodeJS development and build tooling (especially npm, yarn, mocha, chaijs, and eslint).
  • Experience with the Kotlin and/or Python languages.
  • Good security practices and experience writing code that manages customer data.
  • Impeccable communication and team skills with shared ownership of code and other deliverables.
  • Willingness to work with and learn new technologies
  • Experience architecting solutions in GCP, specifically using: Cloud functions, Composer, Cloud pub/sub, Data flow and Stackdriver.
  • Familiarity with managed cloud services (e.g. GCP, AWS, Azure) and their associated offerings.
  • Familiarity with real-time data processing.

 

 

Bonus Technical Skills

 

  • Familiarity with distributed systems and federated authentication systems.
  • Familiarity with Docker and Serverless architectures like GCP Cloud Functions, AWS Lambda, GCP Datastore, DynamoDB, GCP Dataflow, ECS, S3, GCP Pubsub, SQS, CloudFormation, Terraform, and/or other similar cloud services.
  • Experience in machine learning (especially TensorFlow and XGBoost), deep learning, computer vision, and/or natural language processing.
  • Experience with Maven/Gradle build systems.
  • Experience with Groovy / Jenkins CICD pipelines.
  • Familiarity with team development tooling (especially with Jira and Github)
  • Understanding of BFF (Backend-for-Frontend) patterns.
  • Experience with development of self-healing, reliable and reactive systems.

 

Education

 

  • BS/MS in Computer Science, Engineering or Math is preferred.