Pros
-First software company I've worked for where friends/family immediately understand what you actually do -Write code that lots of people actually use and pay for...gives a real sense of satisfaction to see your work live in production -Lots of worthwhile problems to solve -Great location in SF
Cons
From a coding standpoint, Uber is a weird mix of incredible sophistication and, shall we say, not so great code. From what I've seen, this is probably a function of startup style code trying to get features out the door, the large number of engineers at the company and lack of bureaucracy (empowerment applies equally regardless of skill level), and the small team oriented nature of the company built around services. While a service oriented architecture scales well and has a myriad of benefits, what no one seems to talk about that I've witnessed firsthand is that isolated services don't necessarily get the influence of some of the technically strongest people. Some services are incredibly well written, others will probably need to be rewritten before long. This has really been my one frustration with Uber. And to put my complaints in perspective, I'd at least say that problems like this should be seen as why Uber is trying to hire more great people to get in there and resolve those issues. I otherwise don't know how management could easily influence this in a better direction. Otherwise, things are run fairly well I think to the best of reasonable expectations.