Building software frameworks is a great thing; frameworks encapsulate and hide the complexity required to solve problems while exposing only the bare minimum functionality in an easy to use manner.
So far so good, yet there is a core issue which I faced several times during my career: The ones who design and develop these frameworks rarely use them. In other words, they do not eat their own dog food. With the exception of a couple of minimalistic sample apps and unit tests(*), framework creators almost never use in real applications the stuff they’ve built.
(*)Even worse, those samples and unit tests are written by another team.
I do believe this should change.
Every architect and developer should create a functional app using the frameworks they designed and implemented.
Not only does this provide a different perspective, by getting a chance to look at your frameworks from the user’s point of view. There are other benefits, too:
- Feel the pain of your users
- You’ll most probably notice if your APIs are unnecessarily complicated, over-engineered, or poorly documented
- Are important features missing? You’ll realize soon.
- You may even catch some bugs! (in spite of the great unit test coverage ;))
Yet, the biggest benefit is this:
You won’t make the same design and implementation mistakes next time.
(Unless you are utterly stubborn, and unable to learn from your own mistakes – but let’s assume this is not the case. :))