Senior Software Engineer
Planet · San Francisco, CA
Welcome to Planet. We believe in using space to help life on Earth.
Planet designs, builds, and operates the largest constellation of imaging satellites in history. This constellation delivers an unprecedented dataset of empirical information via a revolutionary cloud-based platform to authoritative figures in commercial, environmental, and humanitarian sectors. We are both a space company and data company all rolled into one.
Customers and users across the globe use Planet's data to develop new technologies, drive revenue, power research, and solve our world’s toughest obstacles.
As we control every component of hardware design, manufacturing, data processing, and software engineering, our office is a truly inspiring mix of experts from a variety of domains.
We have a people-centric approach toward culture and community and we strive to iterate in a way that puts our team members first and prepares our company for growth. Join Planet and be a part of our mission to change the way people see the world.
Planet is headquartered in San Francisco, California, Earth.
About the Role:
Planet’s User and Access team is developing systems to better enable, control, and measure access to our global scale imagery. They are responsible for granting access to resources on the platform as well as capturing data to help customers and internal stakeholders better understand usage patterns.
This role will be responsible for the infrastructure and software making out our access, quota metering, authentication and authorization layers controlling access to the Planet platform. Our tech stack is Go, Python, Postgres, BigQuery, Pub/Sub, and Kubernetes running on Google’s Cloud. We believe strongly in engineering resilient software through a solid software engineering process.
The User and Access team is highly distributed and you will thrive in an environment of remote work and asynchronous communication. You’re expected to have strong written communication skills and be able to develop working relationships with coworkers in locations across several North American time zones.
- Build services in Go and Python to provide administration and access control APIs
- Understand design tradeoffs when designing technical solutions for our user focused stories
- Write high-quality, maintainable, highly-available, well-documented production code
- Evaluate system risks and improve reliability via code, process, documentation, architecture and other improvements
- Own operation of services by measuring performance, creating alerts, runbooks, and responding to incidents and performance anomalies during on-call rotations
- Experience building services that leverage cloud-based infrastructure and tooling such as AWS or GCP
- History of working with monitoring tools like SignalFX, New Relic and Graphite (or equivalent)
- Comfortable with using Docker containers in a production environment
- Experience with SQL databases (Postgres or MySQL) and NoSQL databases (e.g. Bigtable, Redis, HBase, etc.), and understand when to use each
- Experience with a large shared codebase and Continuous Integration and Deployment workflows and tooling
- Solid grasp of database internals. You’ve seen both good and bad indexes on databases and know what questions to ask to distinguish between the two. We expect you’ll have a good idea of how things like indexing, query planning and replication work in your favorite database.
- Comfortable working in a Linux operational environment. Experience using and troubleshooting networking APIs and other system calls. While this is a software engineering team, we do largely manage our own operations (with the exception of Kubernetes control/worker pools, CI tools and the like), including participating in on-call rotation.
- Comfortable with distributed systems concepts, reasoning about concurrency and making consistency tradeoffs.
- Experience with user management and access control systems
- Familiarity with OpenID Connect, OAuth 2.0, and other authentication flows
- Familiarity with geospatial concepts, and how they are applied in popular open source software like GEOS/GDAL.
- Experience with containerized build and deployment processes and container orchestration systems like Kubernetes.
Education & Experience
- Bachelor or Master degree in Information Systems, Computer Science, Engineering or equivalent job-related experience with 4+ years experience as a Software Engineer working on data platforms (batch/stream processing, high-qps and/or large-scale data store services).
- Excellent interpersonal and communication skills, written and oral.
Benefits While Working at Planet:
- Comprehensive Health Plan
- Wellness program and onsite massages in specific offices
- Flexible Time Off
- Recognition Programs
- Commuter Benefits
- Learning and Tuition Reimbursement
- Parental Leave
- Offsites and Happy Hours
- Volunteering Benefits
Some Press About Us:
Tiny, privately owned satellites are changing how we view the Earth features in NBC News
Why we care so much about Belonging.
We’re dedicated to helping the whole Planet, and to do that we must strive to represent all of it within each of our offices and on all of our teams. That’s why Planet is guided by an ultimate north star of Belonging, dreaming big as we approach our ongoing work with diversity, equity and inclusion. If this job intrigues you, but you’re thinking you might not have all the qualifications, please... do apply! At Planet, we are looking for well-rounded people from around the world who can contribute to more ways than just what is listed in this job description. We don’t just fill positions, we aspire to fulfill people’s careers, most excited about folks who are motivated by our underlying humanitarian efforts. We are a few orbits around the sun before we get to where we want to be, so we hope you’re excited to come along for the ride.