The Engineering team supports Favor’s mission to bring fast, fresh delivery to Texans far and wide. The Favor technology platform is the engine behind the business that enables our Runners (that’s what we call our delivery drivers) to deliver millions of Favors. Our technology efficiently manages the real-time assignment of Favors, facilitates communication between customers, Runners, and Support team, keeps mobile applications in sync, and more.
At Favor, we are committed to building a world class team that shares a passion for products that make a difference with modern, clean code. Do you get a thrill when you make an impact on hundreds of thousands of users? Do you want to work for a purpose- and values-driven company in a high-growth environment? Our team creates the tools and applications necessary to connect our customers, Runners, merchants, and Support team.
As a Staff Software Engineer at Favor supporting our Menus and Checkout squad, you will be responsible for all phases of development, testing, and deployment of our web applications, back-end services, databases, and data warehouse.
What You'll Do
- Independently build, diagnose, and fix highly complex technical issues
- Recommend changes to processes and tools at the team level based on industry standards, patterns, and best practices
- Lead the creation of documentation and provide training around technology stacks and standards
- Help other engineers understand system and application designs
- Work with Engineering and Product Management teams to plan solutions for large features
- Communicate individual and project-level development statuses, issues, risks, and concerns to technical leadership and management
Skills You Have
- 8+ years of software engineering experience
- Experience or familiarity with one or more of the following technologies: Kotlin, Java, PHP, Scala, MySQL, Postgres, Kafka, Docker, Kubernetes, Terraform, AWS, Elasticsearch, JUnit, and Jenkins
- Ability to lead larger initiatives with 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 in order to build efficient solutions
- Ability to use debugging tools to trace and diagnose issues
- Expert knowledge of REST and JSON, API versioning strategies, and security best practices
- Ability to communicate difficult technical concepts in precise, concise, and unambiguous terms
- Understanding of 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 ability to diagnose issues within the system
- Experience in a high-growth startup is a plus
Who You Are
- You appreciate simple design
- You love to write clean, well-tested code (test-first or test-driven development approaches are a plus)
- You enjoy working with other engineers in a collaborative and iterative environment
- You communicate well with technical and non-technical stakeholders