Let's say that you want to build the highest building in your {village,town,county,state,country}. Your resources are limited, as they always are. Should you start building from the ground up? Or should you make use of the community foundation that Open Source developers have created? Your choice should be obvious. You may choose to build from the ground up, but your competitors are not likely to make that mistake.
In a free market, over time, competition in the production of a commodity product will eliminate all profits. Bread-makers can sell their bread for enough money to cover the cost of the capital invested in the bakery, the cost of the flour, yeast, sugar, and water, the fuel needed for firing, and the salary of the baker. They can earn no more money than that. If they did, then another bakery would be established which would price its products lower, splitting that profit between the customer and the owner of the new bakery.
I recently got myself a Flickr Pro account, and have been using Flickr for more of my photos. I find myself more and more annoyed at the rough edges in the Flickr user interface. For example, when you want to delete a tag from something, you click on the [x] to the right of the tag. Flickr asks you "Do you want to delete the tag?" Cancel/Ok:
Many, many programs written in C or C++ use a file called "config.h" which contains #define statement that control the compilation of the program. These programs are also nearly always built using 'make'.
I claim that these two attributes are in conflict with each other. Or, in layman's terms, "config.h sucks". The problem is that when you have multiple options in config.h, every file which may be compiled differently depending on the values defined therein must be recompiled whenever config.h changes.