There is the Unix philosopy of implementing mechanism and pushing policy to the upper layers. While software development I try to follow this philosophy. But lately I have been struggling a bit to achieve this. How do you stay on course with this philosophy when developing medium to large scale project?