1. Bugs
2. Relational vs Hierarchical Thinking
3. Performance / Response Time
4. Non-functional requirements
4.1. Load / Capacity
4.2. Robustness / Long Duration
5. Critiquing the Product
5.1. Test Harness for Legacy Code
5.1.1. test seams
5.1.2. dependency breaking
5.1.3. sprouts and strangling
6. easy to use/learn
6.1. simple
6.2. functional completeness
6.3. overall coherence
6.3.1. Evolutionary Design
7. Domain-Driven Design
8. Persistent
9. JDUF-just enough design up front
10. Code Smells
10.1. Don't Repeat Yourself
10.2. Law of Demeter (Tell Don't Ask)
10.3. Metrics
10.3.1. Test Coverage
10.3.2. Lines of Code (sphags)
10.3.3. Static Code Analysis Tools
10.3.3.1. Find Bugs Report
10.3.3.2. Cyclomatic Complexity
11. Collaboration
11.1. Sufficient communication
11.2. Frequent
12. Business Value
12.1. validating
12.1.1. Release Management
12.1.1.1. Flow
12.1.1.2. Stories
12.1.1.2.1. Story Estimation
12.1.1.2.2. Story Splitting
12.1.1.2.3. Story Writing
12.1.1.3. Delivering In Small Slices
12.1.1.3.1. Incremental
12.1.1.3.2. Iterative
12.1.1.4. Product Backlog
12.1.1.4.1. Sprint Backlog
12.1.1.5. frequent delivery
12.1.1.6. Basic Throughput Accounting
12.1.1.6.1. Cadence
12.1.1.6.2. Limiting Work in Progress
12.1.1.6.3. Optimize the whole
12.1.1.6.4. Value Stream Mapping
12.1.1.7. Kanban
12.1.2. Time management
12.1.2.1. Pomodoro
12.1.2.2. Getting Things Done
12.1.2.3. Timeboxes
12.1.3. customer satisfaction
12.1.3.1. split testing
12.2. avoiding waste (muda)
12.2.1. Extra features
12.2.2. Heavy specs
12.2.3. Handoffs
12.2.4. Waiting
12.2.5. Multi-step analyze-dev-test-verify...
12.2.6. Re-creating knowledge
13. Supportive Culture
13.1. Conflict management
13.1.1. diagnosis
13.1.1.1. dissapointment
13.1.1.2. friction
13.1.1.3. disconnect
13.1.1.4. disagreement
13.1.2. productive discussion
13.1.2.1. Consent-based decision making
13.1.2.2. Knowledge vs Information
13.1.2.3. Facilitation
13.2. respect
13.2.1. Craftsmanship Manifesto
13.2.2. Declaration of Interdependence
13.2.3. Agile Manifesto
13.2.4. growing trust
13.2.5. individuals and interactions over processes and tools
13.2.6. give teams what they need & trust them to get the job done
13.3. commitment
13.3.1. Nudging for Improvement
13.3.1.1. Jiggling (Change Agent)
13.3.2. Patrick Lencioni’s Five Dysfunctions of a team
13.3.2.1. Absence of Trust
13.3.2.2. Fear of Conflict
13.3.2.3. Lack of Commitment
13.3.2.4. Avoidance of Accountability
13.3.2.5. Inattention to Results
13.3.3. help
13.3.3.1. Knowing when you're blocked
13.3.3.2. Ask first, conclude later
13.3.3.3. Active Listening
13.3.3.4. Mentoring
13.3.3.5. Helping
13.3.4. whole team attitude
13.3.4.1. Cross-functional teams
13.3.4.2. generalizing specialists
13.3.4.3. product focus
13.3.4.4. responsibility
13.3.4.5. autonomy
13.3.5. permanent team attitude
13.3.5.1. improves productivity
13.3.5.2. enhances commitment
13.3.5.3. shared history
13.4. Space to learn
13.4.1. slack
13.4.2. accepting failure
13.4.3. sustainable pace
13.4.4. risk taking
14. Technical Excellence
14.1. Simple Design
14.1.1. KISS - Keep it simple, stupid!
14.1.1.1. Architecture--simplest thing that could possibly work
14.1.1.2. One level of abstraction
14.1.2. Design Patterns
14.1.2.1. Evolutionary Iterative Development
14.1.2.2. Emergent Design
14.1.2.2.1. Refactoring to Framework
14.1.2.2.2. Avoid Speculative Generality
14.1.2.3. MVP / MVC Patterns
14.1.2.4. Separation of Concerns
14.1.2.5. FCoI - Favour Composition over Inheritance
14.1.2.6. Modeling
14.1.2.6.1. CRC (class responsibility collaborator) cards
14.1.2.6.2. UML diagrams
14.1.2.6.3. whiteboard discussions
14.1.3. Craftsmanship
14.1.3.1. Coding by Intention
14.1.3.2. Clean Code
14.1.3.3. Boy Scout Rule
14.1.3.4. Source Code Conventions
14.2. Refactoring
14.2.1. SOLID
14.2.1.1. Single Responsibility Principle
14.2.1.2. Open Closed Principle
14.2.1.3. Liskov Substitution Principle
14.2.1.4. Interface Segregation Principle
14.2.1.5. Dependency Inversion Principle
14.2.2. Common Refactorings
14.2.2.1. Compose Method
14.2.2.2. Extract Method
14.2.2.3. Inline Method
14.2.2.4. Rename
14.2.3. Database Refactoring
14.2.3.1. testing databases
14.2.3.2. abstracting away from dbms
14.2.4. Test Refactoring
14.2.5. Modular Design
14.3. Testing
14.3.1. developer tests
14.3.1.1. Unit Testing
14.3.1.1.1. xUnit
14.3.1.2. Design-for-Testability
14.3.2. test-first
14.3.2.1. Test-Driven Development
14.3.2.1.1. TDD Cycle - Red, Green, Refactor
14.3.2.1.2. Which test next?
14.3.2.1.3. TDD with GUIs
14.3.2.2. Tests Used for Design
14.3.2.3. Behavior-Driven Development
14.3.2.3.1. StoryTest-Driven Development
14.3.3. customer tests
14.3.3.1. Acceptance Testing
14.3.3.2. Exploratory Testing
14.3.3.3. Testing Quadrants
14.3.3.3.1. Supporting Programming
14.3.3.3.2. Robustness / Fault Tolerance
14.3.3.3.3. Technology Facing
14.3.3.3.4. Business Facing
14.3.4. Test Automation
14.3.4.1. Test Automation Patterns
14.3.4.1.1. Test Doubles
14.3.4.1.2. 3A Pattern: Arrange, Act, Assert
15. Self Improvement
15.1. intentional practice
15.1.1. book discussions
15.1.2. online communities
15.1.3. Reading
15.1.4. Code Kata
15.1.5. local user groups
15.1.6. open source projects
15.1.7. conferences
15.2. retroflection
15.2.1. Daily self reflection
15.2.2. Self Management
15.2.3. Common Pitfalls
15.2.4. Self Awareness
15.3. balance
15.3.1. Keeping Motivated
15.3.1.1. autonomy
15.3.1.2. mastery
15.3.1.3. purpose
15.3.2. work/ health/ friends
15.3.3. social captial (networking)
15.3.4. slack
16. Product
16.1. vision
16.1.1. clear problem domain
16.1.1.1. Visualization and Presentation Techniques
16.1.1.2. Wireframe/Paper Prototyping
16.1.1.3. working directly with whole team
16.1.2. explicit goals
16.1.2.1. managed scope
16.1.3. measured progress
16.1.3.1. success metrics
16.1.3.2. split testing
16.2. solves real/valuable problems
17. Confidence
17.1. Definition of Done
17.1.1. working software
17.1.2. validated learning
17.1.3. High Quality
17.1.3.1. Zero Bugs
17.2. Visibility
17.2.1. Storyboard
17.2.2. Informative Build
17.2.3. Burn-up/down charts
17.2.4. transparency
17.2.4.1. open decision making
17.2.4.2. continuous improvement
17.2.4.2.1. Plan Do Check Act
17.2.5. Reliable Cadence
17.2.6. Using Version Control
17.2.6.1. Distributed
17.2.6.2. Optimistic vs Pessimistic Locking
17.2.6.3. branching
17.2.7. Continuous Integration (CI)
17.2.7.1. CI Tools
17.2.7.2. automated deployment
17.2.7.3. automated build
17.2.7.3.1. ten-minute build
17.2.7.4. automated deployment
17.2.7.5. frequent check-in