Software development is riddled with explicit and implicit costs. Every decision you make has a cost attached to it. When you're writing code, you're making an investment, the size of which will for a long time define the costs of your future growth. Making right decision about these investments is very tricky and the cost of wrong decisions might be crippling for both business and teams that support it.
Extreme Programming and Test Driven Development in particular are practices that are aiming at supporting development effort by making it easier to introduce change. That said, sometimes those tools can become a problem of its own when applied in the wrong way or for the wrong context. Understanding software cost forces is a very important skill of successful teams and something that helps understand how to apply XP and TDD in different contexts.
6. SOFTWARE FORCES
• Creation - Introduction of a brand new feature
• Change - Business-driven modification of existing feature
• Ownership - Physical capability to change a feature
• Control - Capability to sustainably change a feature
82. 4 RULES OF MIN-MAXING
1. Begin from owning nothing ( )
2. Take ownership reluctantly ( )
3. Control everything you own ( )
4. Continuously reassess your control ( )