Principles provide guidance for your decisions. They clash, they demand compromises. Every pattern and article on this site is such a compromise.
Extend your understanding
You understand requirements and their business domain well enough to start confidently and allow yourself to learn along the way, because knowing all beforehand starts nothing. Therefore you redo things done wrong and you document lessons learned. E.g. bugs get fixed before new features get done, captured metadata, requirements will change.
Know your limits
You know which constraints act on you and your effort and which are hard or soft limitations, because boundaries are the things that force and guide solution trade-offs. Therefore you make choices towards where you can grow and balance them against extending your understanding.
| Practice | Intent |
|---|---|
| Do not anticipate business needs | Avoid making decisions that others can judge better |
Stay relevant
You draw the line and keep things lean, because otherwise you miss out on work that adds value. Therefore you tightly manage scope, assumptions, and technical debt.
| Practice | Intent |
|---|---|
| Do not anticipate business needs | Avoid working on something with an undetermined value |
Build enduring
You design for change to keep disruptions and maintenance cost low, because bugs and unnecessary rework destroy credibility and drain resources. Therefore you spend time and effort to have your solutions withstand changes, anticipated or not.
| Practice | Intent |
|---|---|
| Anticipate technical issues | Develop to ensure robustness, graceful degradation and exception handling. This can violate "Do not anticipate business needs" if you are not careful. |
| Filter early | Remove all unnecessary data as soon as possible. Borrowed from Cary Millsap's posting. |
Do right
You ethically apply the laws, morals, values, and codes of conduct of your company, because they align with your believes. Therefore you join a team that fosters your personal believes and you say no to improper requests. E.g. no plain-text passwords, only opt-out mailings, no credit card numbers.
You distribute knowledge and data as much as possible, because innovation thrives on learning new things. Therefore you are conflicted between sharing and doing right. E.g. customer service sees address history and marketing offers, manufacturing sees material cost, marketing and sales match credit scores against ZIP codes.