Try to build something that deals with the amount of data that Google has, as quickly as Google handles it, with everything distributed, replicated, load balanced, and with failover to keep the site up when bad things happen anywhere in the system.  (Which happens more often than we would like.)<p>Before you're done you'll have built a lot of pieces of software that do different things that have complex little dependencies on each other.<p>Now iterate that through many generations of development, and build some other systems that tackle similar problems.<p>Do that and you'll discover why Google's infrastructure is complex.