Stay in Touch

TITLE

 

Software Engineer - Golang Performance

COMPANY

 

Uber

LOCATION

 

San Francisco, CA, US

Description

At Uber, we ignite opportunity by setting the world in motion. We take on big problems to help drivers, riders, delivery partners, and eaters get moving in more than 600 cities around the world.

 

We welcome people from all backgrounds who seek the opportunity to help build a future where everyone and everything can move independently. If you have the curiosity, passion, and collaborative spirit, work with us, and let’s move the world forward, together.

About the Role

 

You will work with other Go developers and performance engineers to solve backend performance bottlenecks and related issues.

 

What You’ll Do

 

  • Use performance analysis tools (such as PProf, GPerftools, and Linux Perf) to debug application-level problems.
  • Build tools to further such performance analysis, through collection of application specific data, or to further analysis of existing performance data.  Tools will help collect such data, especially relevant samples during periods of anomalous behavior.
  • Diagnose system performance issues, propose and identify code improvements to achieve desired system performance.
  • Fix code-level performance problems in (micro)services (primarily written in Go and Java)
    • Use data including time-series metrics, CPU profiles, Memory/Heap profiles, etc.
    • Have ability to read and interpret flamegraph data
    • Run the full cycle from diagnosis, code change/review, deployment, and verifying impact
  • Understand systems-level performance effects such as:
    • Transaction latency and throughput
    • Kernel or user-space level Scheduling effects
    • Blocking effects such as file/network IO, locking, and synchronization

 

What You’ll Need

 

  • Ability to reason methodically about performance: what matters most, is it CPU usage? Allocations? GC pressure? Locks? How do you know?
  • Minimum 2 years experience with the Go language
  • Experience benchmarking and profiling Go code
  • Experience improving the performance of a Go (micro)service

 

Bonus Points If

 

  • Knowledge of Linux systems including procfs CPU accounting (top et al), thread state, and CFS scheduler effects
  • Familiarity with typical performance data presentations, such as a flamegraph, critical path graph, or a simple top-N hot functions list
  • Familiarity with performance methodologies, like the USE method
  • Experience analyzing and improving things like request latency, throughput, error rate, and resource utilization within a distributed system
  • Experience diagnosing and fixing parallel computation effects like lock contention, channel utilization, and goroutine interaction
  • Experience profiling and reducing CPU utilization and heap allocations

 

About the Team

 

The Efficiency Team is comprised of two critical functional areas:  Performance Engineering and Capacity Engineering. The team’s charter is to help ensure that Engineering teams are taking full advantage of the resources allocated to them.



 

Perks

  • Employees receive generous Uber credits every month,

  • The rare opportunity to change the way the world moves. We're not just another social web app, we're moving real people and assets and reinventing transportation and logistics globally,

  • Smart, engaged co-workers.

 

Benefits

  • 401(k) plan, gym reimbursement, paid company holidays,

  • Full medical/dental/vision package to fit your needs,

  • Unlimited vacation policy; take time when you need it.

 

Uber is an equal opportunity employer and enthusiastically encourages people from a wide variety of backgrounds and experiences to apply. Uber does not discriminate on the basis of race, color, religion, sex (including pregnancy), gender, national origin, citizenship, age, mental or physical disability, veteran status, marital status, sexual orientation or any other basis prohibited by law.

Apply for the job

Subscribe to our blog.


 

Blog & Newsletter Signup