Favor’s mission is ‘Anything Delivered’. Our engineers make high-touch logistics happen. The Favor technology platform is the engine behind the business enabling millions of Favors. Our technology efficiently manages the real-time assignment of Runners to Favors, facilitates communication between customers, Runners, and support, keeps thousands of customer and Runner mobile applications in sync, and more.
Do you get a thrill when you impact hundreds of thousands of users? Do you want to work for a purpose and value-driven company in a high-growth environment? Our engineers create the tools and applications necessary to connect our customers, Runners, merchants, and support teams. As a Staff Software Engineer at Favor you will be responsible for all phases of development, testing, and deployment of our web applications, back-end services, databases, and data warehouse. You will work closely with our product and operations teams to understand customer needs, build simple solutions to complex problems, and deliver delightful experiences to all our users.
At Favor, we are committed to building a world-class team that shares a passion for modern, clean code and products that make a difference. We need engineers like you to help us achieve our mission of ‘Anything Delivered’.
What you'll do:
- Recommend changes to processes and tools at the team level based on industry standards, patterns, and practices.
- Lead creation of documentation and provide training around technology stacks and standards.
- Help other engineers understand system/application designs.
- Work with engineering and product management to plan solutions for large features.
- Communicate individual and project-level development statuses, issues, risks, and concerns to technical leadership and management.
- Independently build, diagnose, and fix high-complexity technical issues.
Skills you have:
- 8+ years of experience in software engineering.
- Experience in a high-growth startup a plus.
- Ability to lead larger initiatives working with the product, design, and engineering teams.
- Advanced understanding of software design patterns to write clean, well-structured, idiomatic code leveraging the full power of a language.
- Ability to create solutions to problems under various constraints using novel algorithms and data structures.
- Ability to write atomic tests with minimal side effects.
- Strong understanding of test automation techniques.
- Ability to gather and define software requirements considering multiple patterns and strategies to build efficient solutions.
- Ability to use debugging tools to trace and diagnose issues.
- Expert knowledge of REST + JSON, API versioning strategies, and security best practices.
- Communicates difficult technical concepts in precise, concise, and unambiguous terms.
- Understand database concepts such as joins and indexes and the ability to alter data structures.
- Knowledge of how different parts of a system architecture will work together and can diagnose issues within the system.
Who you are:
- Appreciate simple design.
- Love to write clean, well-tested code - test first, or TDD approaches a plus.
- Enjoy working with other engineers in a collaborative and iterative environment.
- Communicate well with technical and non-technical stakeholders.
- Have experience or familiarity with one or more of the following technologies: Kotlin, Java, PHP, Scala, MySQL, Postgres, Kafka, Docker, Kubernetes, Terraform, AWS, Elasticsearch, JUnit, Jenkins