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

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