Sr Software Engineer - Big Data Team
We’re changing the way people think about transportation. Not that long ago we were just an app to request premium black cars in a few metropolitan areas. Now we’re a part of the logistical fabric of more than 600 cities around the world. Whether it’s a ride, a sandwich, or a package, we use technology to give people what they want, when they want it.
For the people who drive with Uber, our app represents a flexible new way to earn money. For cities, we help strengthen local economies, improve access to transportation, and make streets safer.
And that’s just what we’re doing today. We’re thinking about the future, too. With teams working on autonomous trucking and self-driving cars, we’re in for the long haul. We’re reimagining how people and things move from one place to the next.
About The Role
Uber is on the lookout for top-notch software engineers to join our Big Data team in Seattle. This role involves building and managing robust distributed systems to solve infrastructure challenges that delight our quickly growing platform engineering and product engineering teams, enabling the whole engineering organization to iterate at top speed in an open, decentralized environment.
You have the opportunity to define, design, and develop the system from the ground up. Moreover, your work will be open-sourced. If you love working on software products that touch the physical world and want some serious experience under exponential growth conditions, this is it.
Are you among the rare breed of software engineers with a passion for systems, designing and managing highly reliable infrastructure? You should have a demonstrable ability to debug complicated failures and be able to grok complex systems from high level design all the way down to their syscalls.
What You’ll Do
- Design and deliver software and tools to advance the reliability of infrastructure including availability, performance, efficiency & scaling.
- Systems architecture design, including management of upstream and downstream dependencies.
- Provide technical leadership, influence and partner with fellow engineers to architect, design and build infrastructure that can stand the test of scale and availability, while reducing operational overhead.
- Drive efficiencies in systems and processes through automation: capacity planning, configuration management, performance tuning, monitoring and root cause analysis.
- Participate in periodic on-call rotations and be available for escalations.
- Collaborate with platform, product and security engineering teams, and enable successful use of infrastructure and foundational services.
What You’ll Need
- BS or MS in Computer Science or a related technical discipline, or equivalent experience.
- 5+ years of experience building and managing distributed systems. Sound understanding of fundamentals and principles of distributed systems.
- Highly proficient in one of the following programming languages: Java, Go, C/C++. Good scripting skills and ability to pick up new ones.
- Systematic problem solving approach and knowledge of algorithms, data structures and complexity analysis.
- Experience with a relational database (MySQL, PostgreSQL)
- Good working knowledge of networking (TCP/IP, HTTP, Thrift).
- Grit, drive and a strong feeling of ownership coupled with collaboration and leadership.
Bonus Points If
- Power-user Linux knowledge and willingness to explore Linux internals.
- Under the hood experience with big data analytics technologies such as Apache Hadoop (HDFS and YARN), Hive, Spark, Tez, Presto is a plus.
- Under the hood experience with similar systems such as Vertica, Apache Impala, Drill, Google Borg, Google BigQuery, Amazon RedShift, Kubernetes, Mesos etc. is also a plus.