Seven Pillars

(c)agile skills project

Jetzt loslegen. Gratis!
oder registrieren mit Ihrer E-Mail-Adresse
Seven Pillars von Mind Map: Seven Pillars

1. Relational vs Hierarchical Thinking

2. Collaboration

2.1. Sufficient communication

2.2. Frequent

3. Persistent

4. Self Improvement

4.1. intentional practice

4.1.1. book discussions

4.1.2. online communities

4.1.3. Reading

4.1.4. Code Kata

4.1.5. local user groups

4.1.6. open source projects

4.1.7. conferences

4.2. retroflection

4.2.1. Daily self reflection

4.2.2. Self Management

4.2.3. Common Pitfalls

4.2.4. Self Awareness

4.3. balance

4.3.1. Keeping Motivated

4.3.1.1. autonomy

4.3.1.2. mastery

4.3.1.3. purpose

4.3.2. work/ health/ friends

4.3.3. social captial (networking)

4.3.4. slack

5. Product

5.1. vision

5.1.1. clear problem domain

5.1.1.1. Visualization and Presentation Techniques

5.1.1.2. Wireframe/Paper Prototyping

5.1.1.3. working directly with whole team

5.1.2. explicit goals

5.1.2.1. managed scope

5.1.3. measured progress

5.1.3.1. success metrics

5.1.3.2. split testing

5.2. solves real/valuable problems

6. easy to use/learn

6.1. simple

6.2. functional completeness

6.3. overall coherence

6.3.1. Evolutionary Design

7. Confidence

7.1. Definition of Done

7.1.1. working software

7.1.2. validated learning

7.1.3. High Quality

7.1.3.1. Zero Bugs

7.2. Visibility

7.2.1. Storyboard

7.2.2. Informative Build

7.2.3. Burn-up/down charts

7.2.4. transparency

7.2.4.1. open decision making

7.2.4.2. continuous improvement

7.2.4.2.1. Plan Do Check Act

7.2.5. Reliable Cadence

7.2.6. Using Version Control

7.2.6.1. Distributed

7.2.6.2. Optimistic vs Pessimistic Locking

7.2.6.3. branching

7.2.7. Continuous Integration (CI)

7.2.7.1. CI Tools

7.2.7.2. automated deployment

7.2.7.3. automated build

7.2.7.3.1. ten-minute build

7.2.7.4. automated deployment

7.2.7.5. frequent check-in

8. Code Smells

8.1. Don't Repeat Yourself

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

8.3. Metrics

8.3.1. Test Coverage

8.3.2. Lines of Code (sphags)

8.3.3. Static Code Analysis Tools

8.3.3.1. Find Bugs Report

8.3.3.2. Cyclomatic Complexity

9. Performance / Response Time

10. Non-functional requirements

10.1. Load / Capacity

10.2. Robustness / Long Duration

11. Technical Excellence

11.1. Simple Design

11.1.1. KISS - Keep it simple, stupid!

11.1.1.1. Architecture--simplest thing that could possibly work

11.1.1.2. One level of abstraction

11.1.2. Design Patterns

11.1.2.1. Evolutionary Iterative Development

11.1.2.2. Emergent Design

11.1.2.2.1. Refactoring to Framework

11.1.2.2.2. Avoid Speculative Generality

11.1.2.3. MVP / MVC Patterns

11.1.2.4. Separation of Concerns

11.1.2.5. FCoI - Favour Composition over Inheritance

11.1.2.6. Modeling

11.1.2.6.1. CRC (class responsibility collaborator) cards

11.1.2.6.2. UML diagrams

11.1.2.6.3. whiteboard discussions

11.1.3. Craftsmanship

11.1.3.1. Coding by Intention

11.1.3.2. Clean Code

11.1.3.3. Boy Scout Rule

11.1.3.4. Source Code Conventions

11.2. Refactoring

11.2.1. SOLID

11.2.1.1. Single Responsibility Principle

11.2.1.2. Open Closed Principle

11.2.1.3. Liskov Substitution Principle

11.2.1.4. Interface Segregation Principle

11.2.1.5. Dependency Inversion Principle

11.2.2. Common Refactorings

11.2.2.1. Compose Method

11.2.2.2. Extract Method

11.2.2.3. Inline Method

11.2.2.4. Rename

11.2.3. Database Refactoring

11.2.3.1. testing databases

11.2.3.2. abstracting away from dbms

11.2.4. Test Refactoring

11.2.5. Modular Design

11.3. Testing

11.3.1. developer tests

11.3.1.1. Unit Testing

11.3.1.1.1. xUnit

11.3.1.2. Design-for-Testability

11.3.2. test-first

11.3.2.1. Test-Driven Development

11.3.2.1.1. TDD Cycle - Red, Green, Refactor

11.3.2.1.2. Which test next?

11.3.2.1.3. TDD with GUIs

11.3.2.2. Tests Used for Design

11.3.2.3. Behavior-Driven Development

11.3.2.3.1. StoryTest-Driven Development

11.3.3. customer tests

11.3.3.1. Acceptance Testing

11.3.3.2. Exploratory Testing

11.3.3.3. Testing Quadrants

11.3.3.3.1. Supporting Programming

11.3.3.3.2. Robustness / Fault Tolerance

11.3.3.3.3. Technology Facing

11.3.3.3.4. Business Facing

11.3.4. Test Automation

11.3.4.1. Test Automation Patterns

11.3.4.1.1. Test Doubles

11.3.4.1.2. 3A Pattern: Arrange, Act, Assert

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. JDUF-just enough design up front

14. Bugs

15. Critiquing the Product

15.1. Test Harness for Legacy Code

15.1.1. test seams

15.1.2. dependency breaking

15.1.3. sprouts and strangling

16. Supportive Culture

16.1. Conflict management

16.1.1. diagnosis

16.1.1.1. dissapointment

16.1.1.2. friction

16.1.1.3. disconnect

16.1.1.4. disagreement

16.1.2. productive discussion

16.1.2.1. Consent-based decision making

16.1.2.2. Knowledge vs Information

16.1.2.3. Facilitation

16.2. respect

16.2.1. Craftsmanship Manifesto

16.2.2. Declaration of Interdependence

16.2.3. Agile Manifesto

16.2.4. growing trust

16.2.5. individuals and interactions over processes and tools

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

16.3. commitment

16.3.1. Nudging for Improvement

16.3.1.1. Jiggling (Change Agent)

16.3.2. Patrick Lencioni’s Five Dysfunctions of a team

16.3.2.1. Absence of Trust

16.3.2.2. Fear of Conflict

16.3.2.3. Lack of Commitment

16.3.2.4. Avoidance of Accountability

16.3.2.5. Inattention to Results

16.3.3. help

16.3.3.1. Knowing when you're blocked

16.3.3.2. Ask first, conclude later

16.3.3.3. Active Listening

16.3.3.4. Mentoring

16.3.3.5. Helping

16.3.4. whole team attitude

16.3.4.1. Cross-functional teams

16.3.4.2. generalizing specialists

16.3.4.3. product focus

16.3.4.4. responsibility

16.3.4.5. autonomy

16.3.5. permanent team attitude

16.3.5.1. improves productivity

16.3.5.2. enhances commitment

16.3.5.3. shared history

16.4. Space to learn

16.4.1. slack

16.4.2. accepting failure

16.4.3. sustainable pace

16.4.4. risk taking

17. Domain-Driven Design