From the source, directly... and some of these things aren't super clear to me yet. "Rules" for example. These bullets align with the "[[Complect]]" definition of complexity. Coding constructs that are complex: - State - everything it touches - Object - state, identity, value - Methods - function and state, namespaces - Syntax - meaning, order - Inheritance - types - Switch/matching - multiple who/what pairs - Vars - value, time - Imperative loops - what/who - Actors - what/who - ORM - OMG Coding constructs that are simpler: - Values - use final, persistent collections - Functions - use stateless methods - Namespaces - use a language with good support for namespaces - Data - use maps, arrays, sets, XML, JSON, etc. - Polymorphism - through protocols, type classes - Managed refs - Clojure, Haskell - Set functions - via libraries - Queues - via libraries - Declarative data manipulation - via SQL, LINQ, Datalog - Rules - via libraries or natively in Prolog **** # More ## Source - https://www.infoq.com/presentations/Simple-Made-Easy/ ## Related - [[Simple vs Easy]] - [[Pure Function]]