Seven Pillars

(c)agile skills project

Comienza Ya. Es Gratis
ó regístrate con tu dirección de correo electrónico
Seven Pillars por Mind Map: Seven Pillars

1. Static Code Analysis Tools

1.1. Find Bugs Report

1.2. Cyclomatic Complexity

2. Relational vs Hierarchical Thinking

3. easy to use/learn

3.1. simple

3.2. functional completeness

3.3. overall coherence

3.3.1. Evolutionary Design

4. Persistent

5. Collaboration

5.1. Sufficient communication

5.2. Frequent

6. Self Improvement

6.1. intentional practice

6.1.1. book discussions

6.1.2. online communities

6.1.3. Reading

6.1.4. Code Kata

6.1.5. local user groups

6.1.6. open source projects

6.1.7. conferences

6.2. retroflection

6.2.1. Daily self reflection

6.2.2. Self Management

6.2.3. Common Pitfalls

6.2.4. Self Awareness

6.3. balance

6.3.1. Keeping Motivated autonomy mastery purpose

6.3.2. work/ health/ friends

6.3.3. social captial (networking)

6.3.4. slack

7. Product

7.1. vision

7.1.1. clear problem domain Visualization and Presentation Techniques Wireframe/Paper Prototyping working directly with whole team

7.1.2. explicit goals managed scope

7.1.3. measured progress success metrics split testing

7.2. solves real/valuable problems

8. Confidence

8.1. Definition of Done

8.1.1. working software

8.1.2. validated learning

8.1.3. High Quality Zero Bugs

8.2. Visibility

8.2.1. Storyboard

8.2.2. Informative Build

8.2.3. Burn-up/down charts

8.2.4. transparency open decision making continuous improvement Plan Do Check Act

8.2.5. Reliable Cadence

8.2.6. Using Version Control Distributed Optimistic vs Pessimistic Locking branching

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

9. Database Refactoring

9.1. testing databases

9.2. abstracting away from dbms

10. customer satisfaction

10.1. split testing

11. Bugs

12. Performance / Response Time

13. Non-functional requirements

13.1. Load / Capacity

13.2. Robustness / Long Duration

14. Critiquing the Product

14.1. Test Harness for Legacy Code

14.1.1. test seams

14.1.2. dependency breaking

14.1.3. sprouts and strangling

15. Domain-Driven Design

16. JDUF-just enough design up front

17. Code Smells

17.1. Don't Repeat Yourself

17.2. Law of Demeter (Tell Don't Ask)

17.3. Metrics

17.3.1. Test Coverage

17.3.2. Lines of Code (sphags)

18. Business Value

18.1. validating

18.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

18.1.2. Time management Pomodoro Getting Things Done Timeboxes

18.2. avoiding waste (muda)

18.2.1. Extra features

18.2.2. Heavy specs

18.2.3. Handoffs

18.2.4. Waiting

18.2.5. Multi-step analyze-dev-test-verify...

18.2.6. Re-creating knowledge

19. Supportive Culture

19.1. Conflict management

19.1.1. diagnosis dissapointment friction disconnect disagreement

19.1.2. productive discussion Consent-based decision making Knowledge vs Information Facilitation

19.2. respect

19.2.1. Craftsmanship Manifesto

19.2.2. Declaration of Interdependence

19.2.3. Agile Manifesto

19.2.4. growing trust

19.2.5. individuals and interactions over processes and tools

19.2.6. give teams what they need & trust them to get the job done

19.3. commitment

19.3.1. Nudging for Improvement Jiggling (Change Agent)

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

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

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

19.3.5. permanent team attitude improves productivity enhances commitment shared history

19.4. Space to learn

19.4.1. slack

19.4.2. accepting failure

19.4.3. sustainable pace

19.4.4. risk taking

20. Technical Excellence

20.1. Simple Design

20.1.1. KISS - Keep it simple, stupid! Architecture--simplest thing that could possibly work One level of abstraction

20.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

20.1.3. Craftsmanship Clean Code Boy Scout Rule Source Code Conventions

20.2. Refactoring

20.2.1. SOLID Single Responsibility Principle Coding by Intention Open Closed Principle Liskov Substitution Principle Interface Segregation Principle Dependency Inversion Principle

20.2.2. Common Refactorings Compose Method Extract Method Inline Method Rename

20.2.3. Test Refactoring

20.2.4. Modular Design

20.3. Testing

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

20.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

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

20.3.4. Test Automation Test Automation Patterns Test Doubles 3A Pattern: Arrange, Act, Assert