In the same way we have coding standards, can there be things such as architecture standards?
These would be high level principals that we can pass to our less experienced programmers so when they start designing changes or small applications they know what we expect to see without the more experienced programmers having to correct them (note this isn't instead of review, just preventing obvious mistakes as early as possible).
I'm thinking potentially it could contain things such as "Always normalise your database unless there is a specific and clearly understood reason for not doing so", "Always separate out presentation, logic and persistence".
Do people think that this would be too high level to be of any practical use? Or that such generalisations are almost impossible given the variety of functionality we might be asked to code? Or might it be useful?
If you think they're useful and realistic what would you include?
(If it helps clarify I'm thinking about Java/.NET level programming for corporate style business systems).