What is Agile

What is Agile

PART III

Agile is not a specific set of features but rather a set of principles and values that guide the development process.

Agile principle can be implemented using agile frameworks like Scrum, Kanban, or Extreme Programming (XP). Tailor the chosen framework to fit your project's specific needs.

AGILE MANIFESTO

The Agile Manifesto, created in 2001, outlines the core values and principles of Agile development. Here are the key features, values, and principles of Agile:

Four Paired Agile Values (from the Agile Manifesto):

  1. Individuals and Interactions over Processes and Tools: Emphasizes the importance of people and effective communication within a team over process and tool.

  2. Working Solutions over Comprehensive Documentation: Prioritizes delivering a functional product over exhaustive documentation. Use less resource documenting.

  3. Customer Collaboration over Contract Negotiation: Encourages close collaboration with customers throughout the development process to better meet their needs. Prevent exhaustive negotiation of requirement before dev. begin.

  4. Responding to Change over Following a Plan: Values the ability to adapt and respond to changing requirements rather than rigidly sticking to a predetermined plan. Traditional changes often have an inefficient and multi-step formal review process, which makes team avoid changes. Hence, agile works on short iterations which allows for easier value driven changes.

Agile Principles (from the Agile Manifesto):

Agile values drive the agile principles

  1. Satisfy the Customer through Early and Continuous Delivery of Valuable Software: Delivering working software in small, incremental releases to provide value early and often. (Evolutionary Approach)

  2. Welcome Changing Requirements, Even Late in Development: Embrace changes in requirements, even in the later stages of development, to better align with customer needs. (Embrace Change)

  3. Deliver Working Software Frequently, with a Preference for the Shortest Timescale: Aim to produce a functional product in short, iterative cycles, known as sprints. (Provides Practical Feedback)

  4. Collaboration between Business People and Developers throughout the Project: Foster continuous communication and collaboration between business stakeholders and development teams. (Business Owner Involvement)

  5. Build Projects around Motivated Individuals, Give Them the Environment and Support They Need: Empower and trust individuals, providing the necessary resources and support for them to excel. (People are Primary Success Factor)

  6. Use Face-to-Face Communication Wherever Possible: Prioritize direct, face-to-face communication to enhance understanding and collaboration.

  7. Working Software is the Primary Measure of Progress: The ultimate measure of progress is the delivery of functional software.

  8. Maintain a Sustainable Pace of Work for Developers and Stakeholders: Avoid burnout by ensuring a sustainable pace of work for all team members.

  9. Continuous Attention to Technical Excellence and Good Design: Focus on maintaining high-quality code, best practice related to refactoring, test dev. techniques and design to ensure the long-term sustainability of the product. (Use Quality Practices)

  10. Simplicity—the Art of Maximizing the Amount of Work Not Done—is Essential: Prioritize simplicity in design and functionality to minimize unnecessary work. (Focus on high Business Value Needs)

  11. Self-Organizing Teams Make the Best Architectures, Designs, and Decisions: Encourage teams to self-organize and make decisions collectively.

  12. Regular Reflection on How to Become More Effective, Then Adjust Behavior Accordingly: Promote continuous improvement through regular retrospectives and adaptation of practices. (Reflect on Improvement)

Agile Practices and Frameworks:

While Agile is based on principles and values, there are several specific practices and frameworks commonly associated with Agile development, including Scrum, Kanban, Extreme Programming (XP), and others. These frameworks provide more concrete guidance on how to implement Agile principles in a development environment.

In summary, Agile is characterized by its emphasis on flexibility, collaboration, customer satisfaction, and iterative development cycles. The values and principles of Agile guide teams to deliver high-quality software that meets the changing needs of customers in a dynamic and collaborative manner.