12 Agile Practices - romanSan17/py123 GitHub Wiki
Theoretical Part
Understanding the VUCA World
VUCA stands for:
-
Volatility – Rapid and unexpected changes.
-
Uncertainty – Difficulty predicting the future.
-
Complexity – Many interconnected factors.
-
Ambiguity – Lack of clarity and multiple interpretations.
Application: Agile and Scrum methodologies are designed to thrive in VUCA environments by promoting adaptability and fast response to change.
12 Principles of Agile
-
Customer satisfaction through early and continuous delivery of valuable software.
-
Welcome changing requirements, even late in development.
-
Deliver working software frequently.
-
Business people and developers must work together daily.
-
Build projects around motivated individuals.
-
Face-to-face communication is the most effective method.
-
Working software is the primary measure of progress.
-
Maintain a sustainable development pace.
-
Continuous attention to technical excellence and good design.
-
Simplicity — maximizing the amount of work not done — is essential.
-
Self-organizing teams produce the best results.
-
Regular reflection and adaptation to improve effectiveness.
Methodology Comparison
Agile Methodologies:
-
Adaptive and flexible.
-
Client collaboration is ongoing.
-
Iterative development.
-
Flat, self-organizing teams.
Traditional Methodologies:
-
Rigid structure and fixed stages.
-
Client involved mainly at the beginning.
-
Linear planning and execution.
-
Hierarchical team structure.
Key Concepts:
KISS Principle (Keep It Simple, Stupid)
-
Focus on simplicity in code and design.
-
Easier to read, test, and maintain.
-
Example: Start with basic password login instead of adding 2FA immediately.
CI/CD (Continuous Integration / Continuous Deployment)
-
Frequent integration and automated testing.
-
Immediate deployment of working features.
-
Ensures fast delivery and feedback loops in Agile projects.
Practical Part: Hierarchical Resource Management Game
Project Overview: A console-based simulation game where the player manages resources across multiple levels. Higher levels receive more resources, while lower levels face scarcity.
Development Phases:
- Requirements & Planning:
-
Define number of levels (e.g., 10).
-
Set up rules for resource distribution.
- Iterations:
-
Iteration 1: Basic level and resource setup. Classes: Platform, Resource.
-
Iteration 2: Add logic for moving resources down the hierarchy.
-
Iteration 3: Enable player decisions and simulate survival logic.
Discussion Points:
-
Are class responsibilities clearly defined?
-
Can features be added without major code rewrites?
-
Is the logic simple and modular?
-
Are critical variables well-chosen?
-
Do tests simulate realistic scenarios?