Agile Methodologies
Agile is a mindset and set of values for software development that emphasizes flexibility, collaboration, and customer satisfaction. It's not a single method but a family of approaches that share common principles.
The Agile Manifesto
AGILE MANIFESTO (2001)
======================
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on
the right, we value the items on the left more.
Scrum Framework
SCRUM FRAMEWORK
===============
Product Owner -> Sprint Planning -> Sprint Backlog
| |
v v
Sprint (1-4 weeks) Daily Standups
| |
v v
Sprint Review Sprint Retrospective
|
v
Potentially Shippable Increment
Roles:
- Product Owner: Defines what to build
- Scrum Master: Facilitates process, removes blockers
- Development Team: Builds the product
Artifacts:
- Product Backlog: All desired work
- Sprint Backlog: Work for current sprint
- Increment: Working software
Kanban
KANBAN BOARD
============
+-----------+-----------+-----------+-----------+
| Backlog | To Do | In | Done |
| | | Progress| |
+-----------+-----------+-----------+-----------+
| Feature A | Feature D | Feature G | Feature J |
| Feature B | Feature E | Feature H | Feature K |
| Feature C | Feature F | | Feature L |
+-----------+-----------+-----------+-----------+
Kanban Principles:
1. Visualize workflow
2. Limit work in progress (WIP)
3. Manage flow
4. Make policies explicit
5. Implement feedback loops
6. Improve collaboratively
Extreme Programming (XP)
XP emphasizes technical practices that support Agile values:
- Pair Programming: Two developers work on one computer
- Test-Driven Development: Write tests before code
- Continuous Integration: Integrate code multiple times per day
- Simple Design: Build only what's needed now
- Refactoring: Continuously improve code structure
Key Takeaways
- Agile values individuals, working software, collaboration, and responding to change
- Scrum uses time-boxed sprints with defined roles and ceremonies
- Kanban visualizes work and limits work-in-progress
- XP emphasizes technical excellence through specific practices