Agile is a software development methodology to build a software incrementally using short iterations (called sprint) of 1 - 4 weeks so that the development process is aligned with the changing business needs. Instead of a single-pass development of 6 to 18 months where all the requirements and risks are predicted upfront, Agile adopts a process of frequent feedback where a workable product is delivered after a iteration. Compared to traditional waterfall delivery, Agile method could adjust the goal based on the circumstances and changes in last iteration, making it more flexible and adaptive to deliver the product.
There are three main roles in Agile team: scrum master, product owner and development members. Every agile should have about 5 to 10 members, typically comprised of 1 product owner, 1 scrum master, 3-4 developers, 1 tester and 1 technical lead.
A scrum master is a team leader and facilitator who helps the team members to follow agile practices so that they can meet their commitments. The responsibilities of a scrum master are as follows:
A product owner is the one who drives the product from business perspective. A product owner’s responsibilities are as follows:
The development team consist of 3-4 developers, 1-2 testers and 1 technical lead. They make the code contributions, ensure code qualities and prepare for product release.
There are a few concepts to known before understanding how an Agile team plan its work.
The relationship of user story and task
An Agile team works in iterations to deliver user stories where each iteration is of 10 to 15 days. A iteration is also called Sprint. At sprint 0, the Agile team should describe the road map of the product release and decide what should be deliver in each sprint in general. And also, product should give the general requirements and their priority, which could be adjusted and changed in the afterward sprints. In the same time, development team should also prepare technical knowledge, framework learning and other tools for coding. From sprint 1 on, the agile team pick up user stories from the backlog, and the product owner give a requirement refinement and clarification to the team, to ensure that the developers are clear with the stories. Product owner should also give acceptance criteria for the stories so that testers could create detailed test cases for the stories. Then the agile team should divide the user story into small tasks, which need to be estimated in hours and totally sum up as story points for the story. Poke Game is a famous tool for task estimation. In estimation phase, developers should think carefully about the implementation of the task and whether it will run into difficulties, which will be risks of the sprint and the product. Each task should not be greater than 5 man day (1 week), otherwise it should be divided into smaller tasks. If there are too many thing unknown for a task, the development team should ask for a POC (Prove of Concept) for the task. After estimation, the agile team decides how many story points they could deliver based on its capacity and task estimation. Those user stories in the backlog are yet not developed, are changeable and adjustable for the future sprints. Even the current developing stories are changeable, but there are extra hours for the related tasks.