functional reactive data-oriented
Data should be treated as the foremost asset of any software application. Software systems should be thought of as automatic data transformers, as this mentality will produce wide but relatively flat, unidirectional dependency graphs. Side-effects should be isolated to very specific parts of architecture and data normalization should be treated as a foremost priority.
Care should be taken to choose the best suited programming paradigm for any given task. Business logic is best expressed in terms of database queries. Real-time applications such as UI and user input require a paradigm that treats time as a first-class concept, namely reactive programming. Heavy lifting between these layers should be done as expressively as possible, generally using functional programming or declarative DSLs.