Thoughts
Some of the core principles I follow when programming:
* Good data. Bad data structures make good code impossible
* Follow semantics of the real world as closely as possible. Code that is messy in the same way as the real world is better than code that is messy in a different way
* Functional programming when appropriate: pure functions, expressions that transform constant values, are preferred to branches and mutations
* Single source of truth, both for logic and for data (DRY is training wheels for SSOT)
* Separation of concerns and responsibilities. Code should know as little as possible about other code
* As little code as possible (in terms of complexity, not word count). Don't handle things you don't need to