Agile

Agile and Scrum

What is Agile

In software development, Agile is a set of value and principles.

The core of Agile is iterative development. An Agile team use short iterations to better react to requirement changes. This will greatly reduce the risks that the product the team build is not what the customer want.

Benefits of Agile

  • Reduce time to market
  • Responsive to feature request
  • Work is aligned to customer needs
  • Get rid of non productive activity(writing specification for sofeware)

Agile Manifesto

Agile software development values

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

That is to say, favor items on the left to items on the right

Agile Principals

The following principles are based on the Agile Manifesto.

  1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
  3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
  4. Business people and developers must work together daily throughout the project.
  5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
  6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  7. Working software is the primary measure of progress.
  8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  9. Continuous attention to technical excellence and good design enhances agility.
  10. Simplicity–the art of maximizing the amount of work not done–is essential.
  11. The best architectures, requirements, and designs emerge from self-organizing teams.
  12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Scrum

There are different frameworks for Agile: Kanban, Scrum and XP. Scrum is the most popular framework

Scrum breaks down the features into small manageable tasks that can be completed within a timeboxed iteration, called sprint. A sprint is commonly two weeks.

Roles

Product Owner(PO) - The product owner represents the product’s stakeholders and the voice of the customer, is responsible for the product backlog and accountable for maximizing the value that the team delivers.

Scrum Master - Facilitate team meetings, removes team impediments, liaises with the product owner and ensures the team follows agreed processes in the scrum framework.

Delivery Team Member - responsible for delivering product increments every sprint.

Key Concepts

Product Backlog

Product Backlog contains an order list of product requirements that a scrum team maintains for a product. Some requirements are features, bug fixes and non-functional requirements.

Sprint

Sprint is a time-boxed iteration. Usually 2 weeks. Each Sprint starts with sprint planning and ends with sprint review and sprint retrospective.

Sprint Backlog

Spring Backlog cotnains list of work to be addressed for the sprint.

User Story

The team divides the work to be done into functional increments called User Story.

The User story description can have a template like this

1
As a ...(who) I want ... (what) so that ...(why)

A typical User story contains Acceptance Criteria, Story Points and sub-tasks.

  • Acceptance Criteria are a list of statements that defines functional and non-functional requirements.
  • Story points are measures of the size of the User Story, usually in Fibonacci numbers. can use points e.g. 1, 3 or 5
  • sub-tasks are development tasks to complete the user story

Workflow

  1. Product Owner create product backlog for the product
  2. Sprint planning meeting at the beginning of the sprint. Estimate the story point for each user story, determine spring backlog and set a spring goal
  3. Team member volunteer to work on stories. Story status(open, in progress, close) should be updated promptly for others to see
  4. Participant the 15 minute daily stand-up. Answer the following question:
  • What did I accomplish yesterday toward our sprint goals?
  • What do I plan to accomplish today?
  • Do I have any impediments? How to address the impediment?
  1. Spring Review meeting at the end of the sprint. The goal of spring review meeting is to
  • Review work completed and unfinished
  • Demo to stakeholders and answer questions from stakeholders
  1. Retrospective meeting at the end of the sprint

Retrospective

At the end of a sprint, the team hold a Retrospective meeting to reflect on the past sprint and improve development process to make the team more efficient.

Questions to talk about in a retrospective meeting:

  • What went well?
  • What did not go well?
  • What have we learned?
  • How to be more effective?
  • How to improve current process?
  • What should you do differently next sprint?

Pair Programming

Acording to Wikipedia

Pair programming is an agile software development technique in which two programmers work together at one workstation. One, the driver, writes code while the other, the observer or navigator, reviews each line of code as it is typed in. The two programmers switch roles frequently.

Pair programming for all the stories is not resource efficient. It is best to practice pair programming when

  • The work is difficult
  • Share knowledge among team members

Good Reads

Reference