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

  1. Customer satisfaction through early and continuous delivery of valuable software.

  2. Welcome changing requirements, even late in development.

  3. Deliver working software frequently.

  4. Business people and developers must work together daily.

  5. Build projects around motivated individuals.

  6. Face-to-face communication is the most effective method.

  7. Working software is the primary measure of progress.

  8. Maintain a sustainable development pace.

  9. Continuous attention to technical excellence and good design.

  10. Simplicity — maximizing the amount of work not done — is essential.

  11. Self-organizing teams produce the best results.

  12. 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:

  1. Requirements & Planning:
  • Define number of levels (e.g., 10).

  • Set up rules for resource distribution.

  1. 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?