Learning how to write quality, maintainable code has been a question left to intuition, personal reinvention (after repeated failure), and the memorization of maxims such as "Tell Don't Ask", "Feature Envy", SOLID, et al.

But can we compare these maxims – these learned lessons – across paradigms, and arrive at a generalization which serves as a sort of guiding "Grand Unified Theory of Software Development" (Jim Weirich)?

Some of this work has been done, and the resulting concept and vocabulary is not only simple to explain (and immediately applicable) to early learners, but can serve as a metric for quantifying maintainability and refactoring opportunities at all levels of software architecture.