My rules I followed when working on the solutions.
- Clean and readable code.
- Refactor throughout the process, not just after.
- Don't optimize prematurely, but don't do stupid stuff.
- Use of Linq where appropriate.
- Methods should not mutate their inputs, if needed use encapsulation.
- Use new and advanced language features, but don't be too smart.