Seven Pillars

(c)agile skills project

Get Started. It's Free
or sign up with your email address
Seven Pillars by Mind Map: Seven Pillars

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 Find Bugs Report Cyclomatic Complexity

11. Collaboration

11.1. Sufficient communication

11.2. Frequent

12. Business Value

12.1. validating

12.1.1. Release Management Flow Stories Story Estimation Story Splitting Story Writing Delivering In Small Slices Incremental Iterative Product Backlog Sprint Backlog frequent delivery Basic Throughput Accounting Cadence Limiting Work in Progress Optimize the whole Value Stream Mapping Kanban

12.1.2. Time management Pomodoro Getting Things Done Timeboxes

12.1.3. customer satisfaction 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 dissapointment friction disconnect disagreement

13.1.2. productive discussion Consent-based decision making Knowledge vs Information 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 Jiggling (Change Agent)

13.3.2. Patrick Lencioni’s Five Dysfunctions of a team Absence of Trust Fear of Conflict Lack of Commitment Avoidance of Accountability Inattention to Results

13.3.3. help Knowing when you're blocked Ask first, conclude later Active Listening Mentoring Helping

13.3.4. whole team attitude Cross-functional teams generalizing specialists product focus responsibility autonomy

13.3.5. permanent team attitude improves productivity enhances commitment 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! Architecture--simplest thing that could possibly work One level of abstraction

14.1.2. Design Patterns Evolutionary Iterative Development Emergent Design Refactoring to Framework Avoid Speculative Generality MVP / MVC Patterns Separation of Concerns FCoI - Favour Composition over Inheritance Modeling CRC (class responsibility collaborator) cards UML diagrams whiteboard discussions

14.1.3. Craftsmanship Coding by Intention Clean Code Boy Scout Rule Source Code Conventions

14.2. Refactoring

14.2.1. SOLID Single Responsibility Principle Open Closed Principle Liskov Substitution Principle Interface Segregation Principle Dependency Inversion Principle

14.2.2. Common Refactorings Compose Method Extract Method Inline Method Rename

14.2.3. Database Refactoring testing databases abstracting away from dbms

14.2.4. Test Refactoring

14.2.5. Modular Design

14.3. Testing

14.3.1. developer tests Unit Testing xUnit Design-for-Testability

14.3.2. test-first Test-Driven Development TDD Cycle - Red, Green, Refactor Which test next? TDD with GUIs Tests Used for Design Behavior-Driven Development StoryTest-Driven Development

14.3.3. customer tests Acceptance Testing Exploratory Testing Testing Quadrants Supporting Programming Robustness / Fault Tolerance Technology Facing Business Facing

14.3.4. Test Automation Test Automation Patterns Test Doubles 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 autonomy mastery 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 Visualization and Presentation Techniques Wireframe/Paper Prototyping working directly with whole team

16.1.2. explicit goals managed scope

16.1.3. measured progress success metrics 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 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 open decision making continuous improvement Plan Do Check Act

17.2.5. Reliable Cadence

17.2.6. Using Version Control Distributed Optimistic vs Pessimistic Locking branching

17.2.7. Continuous Integration (CI) CI Tools automated deployment automated build ten-minute build automated deployment frequent check-in