One of the goals of Zend Framework is “to provide a lightweight, loosely-coupled component library simplified to provide 4/5s of the functionality everyone needs and that lets you customize the other 20% to meet your specific business needs.”
When I began using ZF, I thought having 4/5ths of the functionality done from the get go would mean I would do 1/5th the work for 5/5ths the credit. Sounds perfect.
Fortunately for my customers, it didn’t quite happen that way. Cutting out 4/5s of the low-level grunt work coding let me focus on the interesting problems, the usability of the interface, the missing pieces. It let me focus on the business side of code.
Sure, many developers love to design a really sweet algorithm for hashing files, or sorting associative arrays, or even sending emails. Developers can easily wrap their heads around these intrictate technical problems and provide elegant solutions. But what does that do for the business? If business problems are not solved just as elegantly; nothing.
It is the job of developers to create elegant business solutions, also. But, It is often hard to find time for both. We fall into the comfort of technical problems and pass off responsiblity for business solutions to other (think PMs, customers, business analysts, QA).
Instead of eliminating 4/5ths of my work, using a Framework freed me up to spend that time on business solutions. It led to a far better understanding of business problems and therefore more sound business (and technical) solutions.
The fractions here are simple, but implementing a technical framework so your developers can focus on business solutions can be challenging. I have found success by identifying the 4/5ths of code that are core to my business, Facebook Development. I have created a framework to support that core, leaving only the business details of each application.
You can be successfuly by spending time up front to identify the core objectives of your business and matching your framework to those objectives. Doing so will allow you to spend 4/5ths of the time solving 6/5ths of the original problem.
And, if you’re good, you’ll get 7/5ths of the credit.