see also CodeMyopia
I've been floating a new analogy in my head lately about carving paths through a mountain. We have tools that allow us the ability to dig unlimited numbers of tunnel through a huge mountain, allowing people to travel from one city to another. Because it's so easy to dig, we can accommodate almost any whacky request from any citizen who wants a very specific path direct from one side to the other. Problem is, after a while it's very easy to damage other tunnels while building or maintaining new ones and not know it, because we're not in the tunnel we just caved in, we're in this one. Or we get inadvertant intersections that suddenly allow citizen Bob to turn left when he should have kept going straight, and now Bob's gone wrong.
And now we've got 10,000 tunnels, and only 10 diggers. So ... how do we make sure all of these tunnels still do what they're supposed to do, short of running all the citizens through the paces and getting their complaints back (and digging some of them out).
With automation, we can build robots (robots! whiz-bang!), one for every tunnel we build to make sure each tunnel is fine.