Basic principles:
- communication
- simplicity of solutions
- feedback from customer
- courage for new solutions, code rewriting etc.
Basic techniques
- fast iterations
- communication with customer
- clear abstract models of system
- pair programming
- test-driven development
- no working overtimes (in period longer than one week)
- coding standards