← Back

As individual teams kept racing ahead, Uber’s overall “organizational velocity” kept getting slower. There were three signs that the company was stalling. First, engineers were spending more time “wrestling with fixing things or dealing with mundane maintenance issues” and less time writing new code. Second, more teams had trouble implementing new features because they needed help from other teams, but weren’t getting it. Or were blocked by other teams that were opposed to the new feature. Third, software outages were on the upswing. “Engineers and developers were responsible for their own code and on call for their services. That meant one proxy for technical debt was sleep debt.” The sleep debt kept getting worse. Skilled engineers “mired” in such “grunt work” kept leaving for companies such as Google, because they didn’t like being “woken up in the middle of the night fifteen times a week.” As Thuan explained, this “technical debt” resulted from a structure that was too decentralized and norms that encouraged people to charge ahead without collaborating and coordinating with other teams—so more and more employees engaged in firefighting to make temporary and local repairs that kept the system running but didn’t fix root causes. Thuan added that further organizational debt was created because, as the company raced to scale fast, it hired and promoted too many inexperienced managers. These inexperienced managers were too focused on racing ahead and achieving short-term wins and were not focused (or skilled) enough to understand when to slow down and do things right and to coordinate their work with other teams.