Epic Programming Principles
Principles guide the way you work together and make decisions. They are bigger than languages, frameworks, libraries, and tools. They are the foundation of your craft. As the field evolves, the principles guide you in making decisions in the new landscape. While principles do evolve as well, they are more stable than a technology stack. This document represents the guiding principles that you have used to make decisions as software engineers. Everything from what problems to tackle to the tools you use to build solutions for those problems all the way down to the names you give your variables and functions. Though many things aren't spelled out directly, everything guiding you is attached to one or more principles. For more information about how this works, check Principles by Ray Dalio (principles.com). Great read.
Core beliefs behind the approach to coding, relationships, and responsibility.
Development standards, best practices, and decision-making processes.
- Thinking like a craftsperson
- 'Best Practices' do not exist
- Do as little as possible
- Make it work, make it right, make it fast
- Optimize for sustainable velocity
- Optimize for the unknown
- Pragmatism is more important than 'purity'
- Keep it consistent
- Don't confuse simplicity with familiarity
- Balance innovation with stability
- Take ownership
- Use Static Testing Tools
- Don't prioritize temporary problems over long-term problems
- Choosing your tools
Guidelines for testing, performance optimization, and quality assurance.
Principles for debugging, error handling, and building resilient systems.
Principles for improving the development process and team productivity.
Teamwork, ethics, communication, and career development.