In almost all the non-trivial projects I have built, I have had to make the decision about whether I should use an existing framework or write my own. You may not think that those are the only two options. You may think that your project doesn’t need a framework for whatever reason. However, in most non-trivial applications, you will end up building something that resembles a framework. Most of the time it starts out by combining similar code from different areas of the project to simplify maintenance. Before you knowit you have a database abstraction layer, base classes, abstract classes, and eventually, you’ve got yourself a framework. So in reality, it really does boil down to just those two choices. When you look at it in that light and assuming your project is non-trivial, the “Why” becomes apparent. You use a pre-existing framework to save you the time and hassle of having write one yourself.