Virtues

1. Value Variation (VV)

Values: Evolvability, Continuous Improvement

2. Do Only What’s Necessary (DOWN)

Values: Production Efficiency, Evolvability

  • Beware of optimizations
  • You Ain’t Gonna Need It (YAGNI)
  • Keep it simple, stupid (KISS)

3. Isolate Aspects (IA)

Values: Evolvability

  • Don’t Repeat Yourself (DRY)
  • Separation of Concerns (SoC)
  • Single Level of Abstraction (SLA)
  • Single Responsibility Principle (SRP)
  • Interface Segregation Principle (ISP)
  • Design and Implementation don’t overlap
  • Integration Operation Segregation Principle (IOSP)

4. Minimize Dependencies (MD)

Values: Evolvability

  • Dependency Inversion Principle
  • Information Hiding Principle
  • Law of Demeter
  • Open Closed Principle
  • Tell, don´t ask
  • Interface Segregation Principle (ISP)
  • Integration Operation Segregation Principle (IOSP)

5. Honor Pledges (HP)

Values: Evolvability

aka: Minimize Surprises

  • Liskov Substitution Principle
  • Principle of Least Astonishment
  • Implementation mirrors Design+
  • Favour Composition over Inheritance (FCoI)

Practical

1. Embrace Uncertainty (EU)

Values: Evolvability, Continuous Improvement

  • Version Control
  • Automatized Integration Tests
  • Automatized Unit Tests
  • Mockups (test dummies)
  • Continuous Integration (CI)
  • Inversion of Control Container (IoC)

2. Focus (F)

Values: Production Efficiency

  • Component Orientation
  • Test First
  • Limit WIP

3. Value Quality (VQ)

Values: Production Efficiency

  • Accept High Quality Only
  • Automatized Unit Tests
  • Reviews

4. Get Things Done (GTD)

Values: Production Efficiency

  • Iterative Development
  • Continuous Delivery
  • Limit WIP

5. Stay Clean (SC)

Values: Evolvability, Correctness, Production Efficiency

  • Path Finder Rule
  • Complex Refactorings
  • Simple Refactoring Patterns
  • Static Code Analysis (Metrics)
  • Code Coverage Analysis
  • Source Code Conventions

6. Keep Moving (KM)

Values: Evolvability, Continuous Improvement

  • Read, Read, Read
  • Professional Event Participation
  • Knowledge Transfer
  • Reflect Every Day
  • Root Cause Analysis
  • Error Measurement
  • Issue Tracking
  • Regular Retrospectives