Lessons from Software Engineering at Google: Part 9 - Dependency Management