Ah, but Facebook isn't a software company, it's a data company. They don't sell software, they sell eyeballs. When the product is the community you build, the software isn't very important. Look at an actual software or integration (hardware and software) business and I think you'll see a drastically different approach to software design. Where I am it's practically law that you don't open an editor until you have requirements and have worked out a preliminary architecture. The requirements will change and the architecture will adapt to those changes, but what's faster: Reverse engineering a pile of kludges or looking at a design and saying "Oh, we need to make this change here."