• I agree wholeheartedly that there are a lot of arbitrary decisions typically made in custom application development on many levels that could - and should - be standardized. The waste, inefficiency, and poor quality that results from such arbitrariness is huge I am sure. The analogy to the Indy 500 engines is beautiful.

    Having said that, it isn't exactly a new idea. In fact there is not a single shop I have worked for in my career where the concept was not part of the discussion of the practice of software development (maybe I've just been lucky but I don't think so).

    I would however make some different choices in the "tiering" than what was presented in the article. For example, I often put some of the "rules" of an app, if not most, in the DB server. That way no rogue application or updates can bypass them. In fact my motto is "The usefulness of a database to it's owners over the course of it's lifetime is directly proportional to the proportion of data constraints that are placed in the DB server vs. the application code"

    I haven't worked through the example code yet but I expect it would not be a problem to put the important rules in the DB tier?

    ken