12 Agile Principles - DariaHalchenko/meetod GitHub Wiki

Agile (agile methodologies)

Agile is a set of methodologies and principles focused on flexibility and quick adaptation to changes in the development process. Agile is based on the principle of working in small iterations (cycles), when the team receives regular feedback and can quickly adjust the product or development process. An important element is collaboration with the customer and continuous improvement of the product.

Advantages of Agile:

1. Flexibility and the ability to respond quickly to changes.

2. Quicker delivery of functionality and getting feedback.

3. More team involvement in the development process.

Disadvantages of Agile:

1. Difficulty in predicting exact timelines and budgets.

2. May have scaling issues for large projects.

3. Dependence on team skill and self-discipline.

  1. Customer satisfaction through early and continuous delivery

    The primary priority of Agile is to satisfy customer needs through early and continuous software delivery. This allows for quick feedback and better ROI (Return on Investment).

    Example:

    In an e-commerce site, user experience updates are made every few weeks, adding small improvements so customers can immediately enjoy better functionality and provide feedback.

  2. Welcoming changes even in late development stages

    Agile teams are ready for changes even in late development stages to provide value and a competitive edge to the client.

    Example: A software development company accepts customer requests even in the later stages of the project when customers need new features. The team quickly adapts the plan to include these changes, such as improving the website's user-friendliness.

  3. Frequent delivery of value

    Agile teams deliver value frequently, preferably in short cycles, to reduce time spent on planning and increase development pace.

    Example:

    In developing a new mobile app, new features are added every few weeks, so users can continuously try something new, avoiding a large update all at once.

  4. Developing projects across organizational teams

    Agile supports the collaboration of cross-functional teams to simplify communication and ensure a smooth development process.

    Example:

    Marketing and development teams meet every day to discuss ongoing campaigns and new features, ensuring a unified approach and that development supports the marketing strategy.

  5. Building projects around motivated individuals

    The success of a project depends on the motivation and trust of the team. It gives the team the freedom and trust to make decisions independently.

    Example:

    The team consists of self-directed professionals who are trusted with decision-making to achieve the highest quality work without constant guidance.

  6. The most effective communication is face-to-face

    According to Agile, the fastest and most effective way to convey information is through face-to-face communication or rapid communication channels.

    Example:

    A remote team uses daily video calls to discuss issues and make quick decisions, much like face-to-face communication, avoiding long email exchanges.

  7. Working software is the primary measure of progress

    Development performance is measured by working software, not deadlines or bug fixes.

    Example:

    The mobile app team focuses primarily on ensuring that each feature is usable and working well, regardless of how much time and resources it takes to develop.

  8. Sustainable work pace

    Agile processes support a steady work pace to avoid burnout and ensure continuous progress.

    Example:

    The development team sets a goal to maintain a steady work pace, avoiding overload and ensuring that every employee gets enough rest to support long-term productivity.

  9. Continuous attention to technical excellence and good design

    High-quality technical solutions and designs make development more sustainable and flexible.

    Example:

    A software development company prioritizes code quality checks to keep the project well-structured, which simplifies error prevention and future development.

  10. Simplicity is key

    The simplicity principle focuses on maximizing the amount of work not done, avoiding unnecessary components.

    Example:

    Projects are planned so that no excessive complexity is added to each function. For example, in e-commerce, only the essential information is displayed to customers, avoiding unnecessary details.

  11. Self-organizing teams produce the most value

    Motivated teams that are given freedom deliver the greatest value to the client.

    Example:

    The development team independently decides on additional features for the project, as they understand the client's needs best and can therefore provide the greatest value.

  12. Continuous reflection and adaptation

    Agile teams regularly analyze their work and adjust processes to increase efficiency.

    Example:

    After each development project, the team assesses their work, analyzes what could be improved, and adjusts processes in the next project to avoid previous mistakes.

Pros:

  1. Clear Structure and Planning: Traditional methodologies, such as Waterfall, offer a well-structured process with predefined stages of development.

  2. Predictability and Control: Timelines and budgets are easier to plan, as the process is strictly sequential, which helps better control the process and avoid unpredictable changes.

  3. Complete Documentation: These methodologies require the creation of full documentation, which is useful for future maintenance and scaling of the product.

  4. Less Dependent on the Team: Traditional methods are less dependent on the self-organization of the team, as decisions are made at higher management levels.

  5. Suitable for Large and Well-Defined Projects: They are particularly useful for projects where requirements are clearly defined and do not change frequently (e.g., in construction or manufacturing).

Cons:

  1. Less Flexibility: Due to the clear structure and sequence of stages, traditional methods do not allow for quick adaptation to changes, which can be problematic in rapidly changing conditions.

  2. Slow Product Delivery: The result is often delivered only after completing all stages, which slows down the process and may cause delays in releasing the product.

  3. Lack of Early Feedback: Feedback from clients or users comes too late, which can lead to misunderstandings of requirements and expectations.

  4. More Bureaucracy and Documentation: Traditional methodologies often require significant efforts in creating documentation, which can be a labor-intensive and costly process.

  5. Difficulty in Changing Requirements: Changes in the project often require reworking previously completed stages, which increases costs and time required to complete the project.

Methodology Advantages Disadvantages
Agile - Flexibility and ability to quickly respond to changes. - Fast delivery of functionality and receiving feedback. - Higher team involvement in the development process. - Difficulty in predicting exact timelines and budgets. - Issues with scaling for large projects. - Dependence on team skills and self-discipline.
Traditional Methodologies (e.g., Waterfall) - Clear structure and planning. - Predictable timelines and budgets. - Complete documentation at each stage. - Less flexibility in case of changes. - Long cycle before releasing the first working product. - Difficulty implementing changes in later stages.

What is the difference?

  • Flexibility: Agile allows you to react quickly to change, while traditional methodologies require strict adherence to pre-planned milestones.
    
  • Development Cycle: In Agile, the product is built and tested in phases with feedback, while in traditional methods the product can only be fully completed at the end of all phases.
    
  • Customer Engagement: In Agile, customer engagement occurs regularly and throughout the project, whereas in traditional methodologies the customer may only be involved at the requirements gathering stage and at the delivery of the finished product.
    

When to use it?

Agile is better suited for projects where requirements can change during the development process and flexibility is required.

Traditional methodologies are better suited for projects where requirements are predefined and it is important to follow a strict sequence with a fixed timeframe and budget.

Characteristic Flexible Methodologies Traditional Methodologies
Adaptability Highly adaptable, allowing quick changes during the project Follows a fixed sequence, less adaptable to changesCustomer Engagement
Development Process Iterative, broken into small cycles with frequent feedback Linear, with planning at the beginning and phased implementationTeam Dynamics

VUCA

VUCA (Volatility, Uncertainty, Complexity, Ambiguity)

1.1 Understanding the VUCA World

VUCA is an acronym that represents the complex and unpredictable environments that characterize many project settings today.

  • Volatility – The environment changes quickly and unexpectedly.
    • Example: Large fluctuations in raw material prices or new technologies that change the entire market.
    • Adaptation: Preparation and quick responsiveness.
  • Uncertainty – It is difficult to predict the future, and changes come unexpectedly.
    • Example: It is unclear in projects how the final result will meet the client's needs.
    • Adaptation: Flexible strategies and readiness for change.
  • Complexity – Projects are influenced by various interrelated factors.
    • Example: An international project involves many different teams, technologies, and cultural factors.
    • Adaptation: Systematic thinking and the ability to manage various dependencies.
  • Ambiguity – Many aspects are not clearly defined or are open to interpretation.
    • Example: The project is uncertain about which technology is the best solution.
    • Adaptation: Testing, experimental approach, and continuous feedback.

1.2 Importance of Working in the VUCA World

Using VUCA analysis enables project managers and teams to assess the environment and adapt to changes. Agile and Scrum are popular methodologies because they support teams in working in such unstable and unpredictable environments.