The Agile methodology

The Agile methodology is a way to manage a project by breaking it up into several phases. It involves constant collaboration with stakeholders and continuous improvement at every stage. Once the work begins, teams cycle through a process of planning, executing, and evaluating.

In software development, agile practices include requirements discovery and solutions improvement through the collaborative effort of self-organizing and cross-functional teams with their customer(s)/end-user(s), adaptive planning, evolutionary development, early delivery, continual improvement, and flexible responses to changes in requirements, capacity, and understanding of the problems to be solved.

Agile software development values

Based on their combined experience of developing software and helping others do that, the seventeen signatories to the manifesto proclaimed that they value

  • Individuals and interactions over processes and toolsлюди и взаимодействие важнее процессов и инструментов;
  • Working software over comprehensive documentationработающий продукт важнее исчерпывающей документации;
  • Customer collaboration over contract negotiationсотрудничество с заказчиком важнее согласования условий контракта;
  • Responding to change over following a planготовность к изменениям важнее следования первоначальному плану.

Agile software development principles

The Manifesto for Agile Software Development is based on twelve principles

  1. Customer satisfaction by early and continuous delivery of valuable software. – наивысшим приоритетом признается удовлетворение заказчика за счёт ранней и бесперебойной поставки ценного программного обеспечения;
  2. Welcome changing requirements, even in late development. – изменение требований приветствуется даже в конце разработки (это может повысить конкурентоспособность полученного продукта);
  3. Deliver working software frequently (weeks rather than months) – частая поставка работающего программного обеспечения (каждые пару недель или пару месяцев с предпочтением меньшего периода);
  4. Close, daily cooperation between business people and developers – общение представителей бизнеса с разработчиками должно быть ежедневным на протяжении всего проекта;
  5. Projects are built around motivated individuals, who should be trusted – проекты следует строить вокруг заинтересованных людей, которых следует обеспечить нужными условиями работы, поддержкой и доверием;
  6. Face-to-face conversation is the best form of communication (co-location) – самый эффективный метод обмена информацией в команде — личная встреча;
  7. Working software is the primary measure of progress – работающее программное обеспечение — лучший измеритель прогресса;
  8. Sustainable development, able to maintain a constant pace – спонсоры, разработчики и пользователи должны иметь возможность поддерживать постоянный темп на неопределённый срок;
  9. Continuous attention to technical excellence and good design – постоянное внимание к техническому совершенству и хорошему проектированию увеличивают гибкость;
  10. Simplicity—the art of maximizing the amount of work not done—is essential – простота как искусство не делать лишней работы очень важна;
  11. Best architectures, requirements, and designs emerge from self-organizing teams – лучшие требования, архитектура и проектные решения получаются у самоорганизующихся команд;
  12. Regularly, the team reflects on how to become more effective, and adjusts accordingly – команда регулярно обдумывает способы повышения своей эффективности и соответственно корректирует рабочий процесс.

Advantages of Agile model:

  1. Customer satisfaction by rapid, continuous delivery of useful software.
  2. People and interactions are emphasized rather than process and tools. Customers, developers and testers constantly interact with each other.
  3. Working software is delivered frequently (weeks rather than months).
  4. Face-to-face conversation is the best form of communication.
  5. Close, daily cooperation between business people and developers.
  6. Continuous attention to technical excellence and good design.
  7. Regular adaptation to changing circumstances.
  8. Even late changes in requirements are welcomed.

Disadvantages of Agile:

  1. In case of some software deliverables, especially the large ones, it is difficult to assess the effort required at the beginning of the software development life cycle.
  2. There is lack of emphasis on necessary designing and documentation.
  3. The project can easily get taken off track if the customer representative is not clear what final outcome that they want.
  4. Only senior programmers are capable of taking the kind of decisions required during the development process. Hence it has no place for newbie programmers, unless combined with experienced resources.

5 steps of Agile:

  • Define the work
  • Design – how to build the requirements
  • Build – make the design
  • Test the product and its function
  • Release – give the product to the customer

Agile Quiz(5/5)

  1. A blanket term describing several flexible project management approaches
  2. The release step
  3. A document that describes 4 highly valued concepts in agile
  4. Accomodate
  5. Define, design, build, test, release

Scrum process(5/5)

  • Product Backlog
  • Product Owner
  • Stakeholders
  • Sprints
  • Scrum

Scrum Meeting: Format & Rules – Quiz & Worksheet (5/5)

  1. No more than 15 minutes
  2. Stakeholder
  3. Communication
  4. Person by person and story by story
  5. Future user stories