Agile development is a software development method in which the software is developed in short timeboxes. Each timebox is called as Sprint. Each sprint is usually 30 days. Small feature or small change will be developed in each sprint. We have to plan the sprint activities at the start of the sprint. Also before exiting each sprint, new code has gone through some testing.
A small team of people will be working on a specific features only. Each team consists of atleast 1 Project Manager, 1 Developer, 1 Tester. One of them will be assigned as a virtual Feature Team Manager. They will build the feature seperately. And the feature will be merged into the Main only if the developed feature is stable. It is not necessary for a team member to work on the same feature. Once they are done, they can move on to another feature team.
Pros of Feature Team:
- Clear PM, Dev, Tester ownership on each feature
- Quick turnaround(Once the feature is completed, cant go back)
- Bugs are found earlier
- Main build unlikely be destabilized too long
- Alpha/Beta builds are ready very early
Cons of Feature Team:
- It is difficult for the direct manager to evaluate performance
- Since we can move to another feature once we completed, it is hard if any failure occurs in our previous feature.
Scrum meeting:
There will be a daily meeting called the scrum meeting where the team members will meet. The scrum meeting should be held daily and it is usually not more than 15 mins. They have to make quick decision on everything.
Eg: This requires a change of spec, can we do that?
I finish early, What should I do to help?
I cant finish writing all P2, P3 test cases. can I move them to next sprint?
The meeting go around with each person saying:
1. What they have done since last meeting?
2. What they are working on?
3. Are they blocked by other work or anything?
A person will be assigned as a scrum master. The scrum master have to make sure that discussion does not take too long. And the scrum master will update the scrum tools like task-estimation and product backlog.
Pros of Agile development:
- Not so far to ship at anytime since atlease a single feature is developed in every sprint
- Easier to estimate what can be achieved since each sprint is a short period
- Regression bugs can be found immediately
- Less duplicated work to waste
- Constant communication in the group because of the scrum meeting
- More collaboration and better morale
- Higher productivity
- Less big surprises
- Take changes efficiently
Cons of Agile development:
- Difficult to determine the shipping date ahead
- May be caught in infinite sprint loops
- No clear requirement, design or test spec
- Product backlog can grow too big
- Lower priority to develop test automation
- Need to allocate time for System testing
- Need to break down big feature. It will be complicated to develop the big feature in a single sprint
- Difficult to apply in V1 (Version 1)
Comparison between Waterfall and Agile method:
Waterfall:
- More planning. Will plan for the entire period
- Develop big features at a time
- Long shipping cycle
- Milestones set from planning to ship
- More features or work got wasted some times
- Customers pay a lot during upgrade
- Examples: MS Office(Earlier versions), Windows Vista
Agile:
- Less planning. Will plan for every sprint
- Develop small changes
- Short shipping cycles (includes Alpha/Beta)
- Less but more realistic milestones set
- Less features or work got wasted sometimes
- Easy deployment and dont affect customers
- Example: MSN, Messenger, Web Applications like EBay, Amazon, Google.
Agile Development