Agile

A highly adaptable software engineering methodology providing high customer satisfaction via customer collaboration in each of it’s phases. Agile projects are managed through frameworks like Scrum, and Kanban.

Tldr

Agile methods break projects down into smaller, manageable chunks and prioritize adapting to changing requirements.


Steps in Agile Model:

  1. Client input
    1. Conception
  2. Client input
    1. Initialization
    2. Analysis
  3. Client input
    1. Design
    2. Construction
  4. Client input
    1. Testing
    2. Deployment

I can be said that Agile is a mindset, based on 4 values, and described by 12 principles.

The Agile Values:

  • Focus on People & Teamwork: Agile values individuals and their interactions over rigid processes and tools.
  • Embrace Change: Welcome new ideas and customer feedback throughout the project.
  • Working Software: Delivering functional software in short bursts is more valuable than lengthy documentation.
  • Collaboration is Key: Close collaboration between customers and developers is essential.

The 12 Guiding Principles:

  • Customer Satisfaction Through Early & Continuous Delivery: Focus on delivering valuable features to customers frequently, not waiting for a grand finale.
  • Welcome Changing Requirements: Even late in development, changes are seen as opportunities to improve the product based on customer feedback.
  • Deliver Value Frequently: Break down large projects into smaller chunks and deliver them in short cycles (weeks or months) to get faster feedback and course-correct if needed.
  • Break Down Silos: Encourage collaboration across different teams (development, design, business) to ensure everyone is on the same page.
  • Empower Motivated Individuals: Build projects around skilled and passionate people. Trust them to do their jobs and give them the support they need.
  • Face-to-Face Communication is Best: Direct and clear communication is essential, especially within the development team.
  • Working Software is the Primary Measure of Progress: The actual functionality delivered is the most important indicator of success.
  • Sustainable Development Pace: Agile promotes a balanced approach that prioritizes the well-being of the development team to avoid burnout.
  • Continuous Improvement: Always strive to improve your processes and tools to become more efficient and effective.
  • Simplicity is Key: Focus on doing what's necessary and avoid unnecessary complexity.
  • Self-Organizing Teams Deliver the Most Value: Empower teams to make decisions and manage their workload without micromanagement.
  • Reflect and Adapt: Regularly assess how your approach is working and make adjustments to improve your effectiveness.

Pros and Cons:

  • High collaboration:
    • Close cooperation between business and development team.
    • Close cooperation between teams and end users.
    • Client input is required throughout the product development.
    • High emphasis on end users.
    • Agile believes in end results through responses and feedbacks.
    • After each sprint/cycle test plan is discussed.
    • The testing part can be started before the development of the entire product.
  • High Adaptability:
    • Changes can be made at any stage.
    • Changes can be applied easier given dynamic requirement changes.
    • Late and further changes are allowed.
    • Agile Method is known for its flexibility.
    • Products is delivered in a dynamic manner in small parts.
  • Project Management:
    • A Small team is sufficient for Agile project management.
    • May consist of self organizing cross-functional teams
    • Coordination among project teams is required to ensure correctness.
    • It is really useful in large and complex projects.
    • The cost of development is less, but cannot be used to cut cost during development.
    • Rapid development and delivery of project.
    • Higher customer satisfaction
    • more focused on continuous delivery.

Notes:

  • Lean and Scrum methodologies can be considered frameworks of Agile Methodology.