Agile Software Development

Introduction 

 
Agile is not primarily a process to follow a single model. Agile is a mindset that needs to be applied. There are many Agile frameworks like Scrum, XP, Combination of Scrum-XP or you can have one for your organization by combining other models to get the best output.
 

What is Agile?

 
Previously, products were built using a waterfall model like approach in which we first gather requirements, develop the software and then test it. In that model, each thing comes one at a time. While Agile focuses on quality delivery very fast. In Agile, after each sprint time (sprint time: A decided minimal time by the product owner/client at which team presents working software) a quality working part of software that is tested as well.
  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation, and
  • Responding to change over following a plan
Above are the four points that Agile mostly focuses on. Things are not completely unnecessary but need to be done only when required otherwise making it process will cost overhead. The customer's first need is always working software.
 

Why Agile?

 
Agile delivers part of the working software after every 15 or 30 days, which gains the confidence of customers and helps bring new opportunities from customers.
 

Parts of Scrum Work Process 

 
Three key members working together in Scrum can deliver anything more than expected,

Product Owner, Scrum Master, Team members 
 
Product Owner (Client)
 
Role of product owner is to finalize the requirements. The product owner will communicate with stakeholders and decide the project cost and team required. If the team at any time faces confusion regarding what they need to deliver as part of the product backlog item or user story, then the product owner should clear the idea and expectation for the product backlog item.
 
Scrum Master
 
The role of the scrum master is to make sure team members don’t face any hurdle during sprint or iteration time. If the team requires any resource for some requirements, it is the job of a scrum master to intervene and find the required person who can fulfill the expectations. If there are any people from another team disturbing the team members for their work, then the scrum master must make sure that the deliverable product is not being affected by them. If this person is technical it is a plus point because he can help team members during any development hurdles.
 
Team Member
 
The role of the team member is to deliver an expected product that meets the requirements. If, at any time, team members face difficulties, the first thing they should do is highlight the risk as soon as possible to scrum master. Following that, the scrum master should highlight the risk to the product owner regarding the same thing. If a team member at any time fails in delivering the expectation or highlighting the risk, It can disturb the whole chain. So, If you don’t want escalations this is where you start.
 

Terms to know for Scrum

  1. Product Backlog Item(PBI)/User Story
    It's a type of contract between the product owner and Team specifying requirement which should be completed at the end of sprint.

  2. Tasks
    Tasks are sub-items of PBI. It divides PBI into measurable part so team can work on it.

  3. Sprint/Iteration
    It's a timeline mostly of 1/2/4 weeks at the end of which Team will demo the work done in PBIs taken in sprint.

  4. Story Points/Efforts
    It depicts the complexity of PBI/Story.

  5. Velocity
    Let's say 'Sprint 1' team completes 50 points, then velocity is 50.

  6. Average Velocity
    In 'Sprint 2' team completes 10 points then velocity will be 30 (50+10 /2). At any time during development of product there should not be any major change in average velocity without valid points because it gives the wrong impression of the team.

  7. Burndown Chart
    It tracks the sprints as well as products remaining time to complete based on above parameters.

  8. Retrospective Meeting
    This meeting happens after the sprint demo is complete. In this meeting, there are two parts,

    • What went well - This point describe what went well and why so those practices can be followed for next sprint.
    • What needs to be improved - This point describe what didn't go well and why so we don't make same mistakes going forward in other sprints.

  9. Sprint Demo/Sprint Review
    At the end of the sprint, Team will demo the part of workable software to the product owner and he will mark PBI 'Done' if work satisfies the criteria.

  10. Daily Stand up meeting
    This meeting happens with Scrum master every day of a sprint at a decided time with the below points:

    • What work has been done the previous day?
    • What will you do today?
    • Is there any impediment?
    • This meeting must mostly take 10-15 minutes, not more, because your scrum master is there only to resolve the 3rd point and verifying 1st and 2nd point. So, don't explain your point technically in deep, but explain your impediment as in simple words. He will take care of the rest. Make meetings productive but not time-consuming. 
There are many other Agile practices like XP being followed by industry. However, Scrum is the methodology being followed by many organizations.