About the Role
The Fulfillment platform is the foundation powering the logistics behind fulfilling user orders from any Uber app. It operates life cycles of orders, trips, drivers, eaters, and other user sessions when they interact with Uber. These interactions are real-time and high-scale when millions of concurrent riders, drivers, and eaters are using Uber. We support both Uber Rider businesses (pool, airports, hourly rentals, intercity trips, reservations, package delivery, uber health) and Uber Delivery businesses (groceries, uber eats, delivery API).
Our tech challenges are in both the business layer (data modeling of complex products, building reusable higher order business APIs to share across products) and the Infrastructure layer (storing high write & transient data, language framework, search & ranking, events & data streaming systems)
Over the next few years, this team will be innovating with new offerings like car rentals, third-party drivers, package deliveries, and reenvisioning the Fulfillment Platform. This is a high-impact role where you will partner with Engineering, Product, and Ops leaders across the company to launch new products as well as improve the overall efficiency of the marketplace.
What You'll Do:
- Code: Writes high-quality code (i.e., reliable, readable, efficient, testable), provides quality code reviews, and creates comprehensive tests and quality documentation using software engineering principles. This includes knowledge of data structures, algorithms, programming and associated programming languages and frameworks, and major phases/activities of the software research and development life cycle (e.g., requirements, design, build, experiment, test, debug, deploy, monitor). Identifies, reports, and solves technical problems according to standards and best practices.
- Design: Uses software design principles and methods, knowledge of the capabilities and limitations of existing software solutions at Uber, and an understanding of own work's impact on other areas to reuse, extend, or, when needed, build effective architectures that are integrated with existing solutions and in alignment with needs and goals across areas. Learns and anticipates current and future design requirements and evaluates trade-off decisions to design systems that meet current needs and can be extended for future needs
- Execute: Executes work with drive and appropriate sense of urgency to deliver technical and business impact. Plans, organizes, and manages tasks, resources, and relationships to accomplish work accurately and on time. Defines and diagnoses problems and determines an appropriate solution, recommendation, or decision while logically evaluating alternatives and factors (e.g., resources, costs, tradeoffs). Accepts responsibility and accounts for own actions and work.
- Collaborate: Builds trusting and collaborative relationships and rapport with different types of people and teams. Respects the unique backgrounds and contributions of others. Recognizes conflict or disputes among people and situations, learns and works to understand different points of view. Resolves and aligns discrepancies across teams and organizations to accomplish team-, organization-, or Uberwide goals. Provides constructive feedback to others in a tactful and impactful manner.
- Be efficient: Creates and promotes efficiency and speed within Uber technology, people, and teams by leveraging and extending existing solutions when possible, and by developing solutions that balance long-term productivity with short-term needs. Identifies and addresses inefficiencies and redundancy in day-to-day work. Improves and advocates for processes and technologies that enhance the efficiency and performance of software and systems
- Create culture: Enhances the effective functioning of Uber by participating in and promoting activities and efforts that contribute to excellence and shape and evolve team, organisation, and Uber-wide culture (e.g., reviewing diffs, refactoring code, participating in recruiting, hiring, and promotion activities, joining an ERG). Contributes to the broader community through participation in internally- and/or externally-focused engagements (e.g., tech talks, open source, conferences, team building)
What You'll Need:
We are looking for experienced smart engineers who are passionate about the domain and the technology. Those who have a track record of ownership, execution quality and customer obsession.
- Bachelor's degree in Computer Science or related technical field or equivalent practical experience
- At least 4+ years of professional experience in software development.
- Experience in coding using general purpose programming language (eg. C/C++, Java, Python, Go, C#, or Javascript)
- Strong experience in architecture design, high-availability, and high-performance systems.
- Deep understanding of distributed systems.
Bonus Point, If:
- You have knowledge of a backend stack (some examples include: Java, Node.js, Python, Redis, Kafka, Golang or similar).
- Ability to learn quickly on the go. We're looking for software engineers who thrive while learning new technologies and don't believe in one-size-fits-all solutions. You should be able to easily adapt to meet the needs of our massive growth and rapidly-evolving business environment.
Bias toward action. You believe that speed and quality aren't mutually exclusive. You've shown good judgment about shipping as fast as possible while ensuring your products and platforms are built in a sustainable, responsible way- -and you're comfortable making mistakes, provided you learn from them.
- Passion and energy. Because you love what you do, you bring infectious enthusiasm to all your endeavours. You always perform at your absolute best and see new challenges as an opportunity to contribute, make an impact, and grow.
- Unquenchable thirst for growth. You're not just looking for the next interesting challenge, but looking to push yourself to keep pace in our hyper-growth environment.