Code should be formatted the same way and enforced automatically using tools.
Data should be held in one location, duplicates of that data should be by reference only.
Software entities should be open for extension, but closed for modification.
Make relevant information visible so things can be clearly understood
Always plan for a way to switch your work off
A simple solution is better than a complex one.
Every module, class or function in a computer program should have responsibility over a single part of that program's functionality, and it should encapsulate that part
Methods and classes should explicitly require any collaborating objects they need in order to function correctly
high level modules should not depend on low level modules; both should depend on abstractions.
Write code to respond to external events, such as from an existing framework
Capture your understandings separately to the team and then come together to align
Act on unalignment rapidly to ensure happy teams
When creating something, it is better to understand the picture - at a high level - instead of focusing on the thing you need to create immediately.
Build your infrastructure as something disposable that can be destroyed if it fails (cattle) rather than something precious that has to be looked after (pets)
The greater the number of people who can work on a problem, the higher the probability of an optimal solution.