Spire Global is a space-to-cloud analytics company that owns and operates the largest multi-purpose constellation of satellites. Its proprietary data and algorithms provide the most advanced maritime, aviation, and weather tracking in the world. In addition to its constellation, Spire’s data infrastructure includes a global ground station network and 24/7 operations that provide real-time global coverage of every point on Earth.
As a software engineer at Spire on our Maritime team, you’ll move fast, iterate quickly, and solve global problems. You might be the right fit if you love exciting technical challenges, hate getting bored, and enjoy collaborating with engineers who are changing the way the world thinks about space, satellites, and data. You will join a team responsible for the design and maintenance of our ground-side data processing pipeline, from ingesting satellite data all the way through designing and scaling the APIs that our customers depend on for global data insights.
We are looking for a senior engineer to help build world-class data-centric products that solve industry and customer problems. This is an engineer who has the experience with programming, architecture, infrastructure and DevOps; one with the drive we need to help us relentlessly push the boundaries of an entire global industry. The successful candidate will have the opportunity to contribute to multiple areas in the team and will be collaborating with the product team to align the engineering roadmap with business goals. This is a software development role: your job will be to build products that drive customer value. This is also a specialist role: you will be the on-team expert in infrastructure, networking, automation and DevOps.
We care a lot about the quality and expressiveness of our code. We think TDD is great, and we’re doing Continuous Deployment to our staging environments and working our way to make that true for production as well. We know that DevOps is a culture and it’s a big part of how we work. We recognize that professional growth comes from operating at the boundaries of our comfort zones, and we encourage and support each other through code reviews, pair programming, and lots of communication. If this sounds like your cup of tea, we’d love to hear from you!
Responsibilities of your role:
- Working with a team to design and deploy web applications, services and customer facing and customer centric data products
- Design data intensive services and their supporting infrastructure
- Work with microservices and streaming APIs
- Design applications that work with Event Sourcing, Feature stores, and other data models.
- Have the expertise in infrastructure, including cloud (VPCs, managed services, etc) and networking technologies from low level (DNS + TCP/ID), to high level, queues, event logs.
- Be able to design, manage and deploy infrastructure in a heterogeneous environment with defined SLAs to support and enable application development
- Understand DevOps processes and methodologies; apply them to improve process and enable clean deployments and stable products
- Develop and deploy distributed applications using Go and gRPC in AWS
- Develop in multiple languages, at least Go, python and JVM targeting Apache Beam
- Work in AWS and GCP using infrastructure-as-code
- Work closely with Product management and the Engineering Lead to define and enhance customer-centric products and applications
- Work in an agile process, ensuring process is healthy, and reliable methods are being used
- Mentor and educate the team on infrastructure and automation technologies
- Being on call
- Professional experience and expertise in at least one programming language
- 5+ years of practical and applicable programming experience
- Proven track record meeting SLAs within a production environment
- Have familiarity with tools and techniques in distributed systems and with handling large volumes of streaming data: queues, RPCs, serialization, data versioning
- Have an in-depth knowledge of infrastructure, such as Docker, AWS cloud offerings, managed services and self-hosted services. Able to understand trade-offs between technologies
- Have in-depth knowledge of API design principles and best practices, caching strategies, and designing for resiliency and scalability
- Building fault tolerant distributed systems in environments with intermittent and high-latency connectivity
- Extensive experience supporting in production systems, including triaging and debugging
- Experience building stable, customer-oriented software products and the processes and tools used to ensure reliability, such as CI/CD, Unit Testing, integration testing, monitoring etc.
- Polyglot programming, with strong skills in at least one programming language, preferably Go, and professional experience and comfort in at least one other language, preferably Python or JVM (Java, Kotlin, Scala etc). It is preferable to have experience programming with multiple paradigms of programming, such as OOP, functional, imperative, etc.
- Ability to operate in an environment where the team operates its own infrastructure and deployments through Terraform, Kubernetes, Nomad and similar technologies. Able to design systems and define best practices with these tools
- Experience using stream processing tools like Kafka or Beam
- Deep experience with Linux and POSIX environments in production, including defining images, and debugging issues that are OS or distro specific
- Displays strong writing skills and the ability to communicate and present arguments and recommendations via the written word (i.e. writing)
Spire is Global and our success draws upon the diverse viewpoints, skills and experiences of our employees. We are proud to be an equal opportunity employer and are committed to equal employment opportunity regardless of race, color, ancestry, religion, sex, national origin, sexual orientation, age, marital status, disability, gender identity or veteran status.