Software Engineer - Maritime at Spire

About Spire

In the time it takes you to read this job description our low earth orbit nanosatellites would have passed overhead at least three times traveling at around 8km a second. Onboard the satellites are collecting and downloading radio signals from over 80 thousand vessels that are moving 90% of the world's cargo around the globe.


The Maritime team at Spire is focused on taking that data and impacting the world in positive ways.



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 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!


Your responsibilities will include

Working as part of a small team to design and deploy web applications, services, and data streaming/processing systems

Designing and implementing robust and scalable APIs

Developing and deploying distributed applications on AWS

Working closely with Product Management to define and enhance customer-facing products and applications

Helping to lead the design, implementation, and deployment of new features

Ideally, you:

Have 2+ years of experience programming REST APIs and backend systems in Python

Are comfortable with full-stack web development tasks, from designing and implementing UIs all the way down through domain modeling, data processing, and database tuning

Know how to develop in and deploy to POSIX environments

Enjoy working as part of a team, but can also take on and complete tasks on your own



As a bonus, you also have experience with some or all of the points below:

Writing automated unit and integration tests, ideally in a TDD fashion

Have worked within distributed teams & multicultural environments

In­-depth knowledge of API design principles and best practices, caching strategies, and designing for resiliency and scalability

Building faul­t tolerant distributed systems in environments with intermittent and high­-latency connectivity

Working with relational and non­ relational database theory and practice e.g. PostgresQL, Redis, ORMs, consistent hashing

Familiarity with tools and techniques in distributed systems and handling large volumes of streaming data: queues, RPCs, serialization, versioning, eventual consistency, exactly/at-­most/at­-least-once message semantics

Displays strong writing skills and the ability to communicate and present arguments and recommendations via the written word (i.e. writing)