Backend, Python - Senior Software Engineer
Engineering – Backend
Are you passionate about building scalable, fast and fault-tolerant applications? Are you excited about cloud native architectures and would love to apply the latest and greatest advancements in software design into practice? Do you often feel underwhelmed by backend software development opportunities and want to do more if given the opportunity?
At Undefined Labs we are empowering developers to do more, faster. Our first product to market gives engineering teams unprecedented visibility into their CI process to quickly identify, troubleshoot and fix failed builds. To accomplish this, we need you to develop a scalable, reliable and performant backend application to collect, store and analyze large amounts of distributed tracing information, making it instantly available to a diverse set of clients. Are you up for the challenge?
What you’ll do
- Architect our backend application with performance, scalability and simplicity in mind.
- Help build and lead a team of passionate software engineers.
- Create and enforce best practices for software development that consistently results in high quality code.
- Design and implement a reliable, scalable, zero-downtime real time data ingestion pipeline for distributed tracing events.
- Design and implement a reliable, scalable and performant GraphQL API for querying data in near real time, as well as a streaming service for client updates.
- Make sure the application can be deployed, scaled, upgraded and rolled back safely in any Kubernetes cluster.
- You code it, you ship it, you own it - from development to production.
- Be a role model for your team, inspiring your colleagues with a drive for excellence.
What we’re looking for
- You have architected, developed and owned complex cloud-native applications for several years.
- You have mentored and coached other engineers in the past.
- Python is one of your native tongues.
- You design clean, developer-friendly, high quality APIs, and know common patterns for handling multi-tenancy, pagination, errors, authentication and authorization.
- You design highly performant, elegant, simple code; you apply well known design patterns as appropriate to maximize code scalability and reusability, and you write code that is easily testable and debuggable.
- You have experience designing and developing software architectures based on microservices, and you regularly keep up with new technologies and products in the space.
- You are a Docker wizard and have used it on a regular basis for everything from development to running things in production.
- You have extensive experience using SQL databases (i.e. MySQL, PostgreSQL...). You know data access patterns and how to properly structure data for optimal read/write throughput.
- You want to work in high growth startup environment where ownership and accountability is a given.
What we’d prefer to see
- You have designed stateful applications for deployment into Kubernetes clusters.
- You use observability tools (i.e. ELK, AppDynamics, NewRelic, Datadog, Sentry…) to continuously monitor, fix and improve the performance of your code.
- You discovered GraphQL and refuse to work with REST anymore.
- You have implemented a streaming API before (i.e. websockets) and are familiar with its design pattern.
What we offer
- A company culture that values passion, integrity and excellence.
- An engineering culture that values development agility, automation, high quality code, ownership and continuous learning.
- Weekly team lunches, monthly get-togethers, and bi-annual company retreats.
- Yearly tech conference sponsorships.
- Quarterly team hackathons (with prizes!).
- Linux or Mac? Dual monitors? Trackpad or mouse? Headphones? Make your work setup the perfect setup.
- An opportunity to share our collective success by owning a piece of the company.