Principles - Why use them?
The main benefit of principles is they dramatically increase your capability and align behaviors with other people.
Principles increase capability as they are logical recipes for behavior that allow you to adopt someone else's successful behaviors to make you more capable.
Principles align behaviors by sharing interrogatable logical reasons for why things are the way they are, allowing anyone to understand the logic behind a course of action.
For Engineers, that means you become a better developer and work with developers who think similarly to you. For leaders, your teams are more capable, aligned, and more productive.
Benefits for engineers
- You will become a better Software Engineer because principles increase your capability through logical understanding.
- You can work at higher levels of complexity. The brain can hold 4 items in working memory 1, which means it cannot hold many complex conscious thoughts in the mind simultaneously. With principles written down, you can offload your brain's limits and filter your decision-making process through principles.
- Other people's code looks like your code. Following the same principles on a team will mean everyone will finally be on the same page when it comes to code structure.
- Work on more interesting problems. Once you are aligned and working at higher levels of complexity, code structure will be taken care of so you can focus on the fundamentals.
- It keeps you relevant. Your learnings are based on fundamentals, not on a fashionable technology of the day.
- Make you more convincing
Benefits for leaders
- Aligned teams - Your teams aren't arguing about minor issues.
- Building assets - Instead of throw-away code, the Engineers build things in a deliberate and principled way.
- Continuity - Teams based on principles will have their decision-making encoded, so onboarding engineers is much easier. When an engineer leaves, the amount of institutional knowledge lost is reduced as their behaviour has already been encoded within the team.
- More productive. The team is working in alignment; aligned teams work effectively together.
- You can multiply yourself through effective principles.
- Engineers are incentivized to work for the team rather than themselves. Because the Engineers want to work on an aligned code base, they will enjoy it more and want the unit to succeed rather than trying to stand out as the 10x developer.