Although every team has its flavor of following and implementing the Agile software development process, some best practices can be followed to have a streamlined development process.
Vision: Every project starts with a vision. Vision is captured as a high-level (60,000 feet) view of the project. The stakeholder defines their vision in a few sentences.
I want to develop a mobile banking platform.
Project Planning in Agile Software Development: Once the vision is defined, it’s time to get together with stakeholders, project managers, engineers, etc., and develop a high-level (30,000 feet) view of the project by defining Epics. These Epics intend to capture the feature set required for accomplishing the overall vision.
EPIC-1: Customers can send money to other members using their phone numbers.
Milestone Planning: After capturing Epics, project milestones need to be defined, which will also help in release planning. Based on priorities, Epics are assigned to milestones in an Agile Software Development Process.
Milestone 1.0 will include EPIC-1, EPIC-2, and EPIC3.
Milestone 2.0 will consist of EPIC-4 and EPIC-5.
Sprint Planning: Engineers commit to developing these prioritized features during the sprint planning sessions. In these sessions, engineers get together with the product owners and stakeholders to dive deep into the committed features. It is essential to define acceptance criteria during this process.
Story Estimation: Engineers vote on estimating the features in this Agile Software Development stage. Estimation determines the effort level required to implement the story. Every team has its flavor of assessment. Some follow the Fibonacci series, and some follow the number of days, etc. The story is broken into smaller stories if the estimate is too big and can not be completed in one sprint. The story should be short enough to be completed within the sprint.
Iteration Start: Stories are then assigned to the next iteration. Engineers start working on it when the iteration begins. Iterations represent the heartbeat of the project. Iterations are usually between 1–4 weeks, but most teams follow two-week iterations. At the end of the iterations, there should be some demo-able product.
Daily Stand Ups: Quick feeback is vital to the Agile Software Development process; therefore, the engineering team meets with their product owners daily and provides updates on the project progress. These updates are short and are focused on three things.
What did I do yesterday?
What do I plan on doing today?
Does something block me?
QA: Good quality software is essential for the project’s success. Therefore it is also crucial to ensure the software is built per acceptance criteria, can handle various error scenarios, and meets the security and performance criteria. All these are verified and tested during the QA phase. Once the engineer feels comfortable with the implementation, the story becomes Demoable.
Demo: At the end of the iterations, there should be some demo-able stories. During the demo meeting, engineers demo the completed stories to the product owner and stakeholders. If the demo meets the acceptance criteria defined in the story, the story is accepted and considered complete else; it goes back to in progress.
Retrospectives: A retrospective meeting usually follows a demo meeting. During the retrospective, the team reviews their performance and deficiencies. They focus on identifying what worked and areas that need improvement. Once the team identifies problem areas, they brainstorm for a solution. They pick a solution to try out in the next iteration, and that’s how they engage in a continuous improvement cycle. Retrospectives are also the time for the team members to appreciate or encourage each other.
After achieving a milestone during the Agile Development Process, a project release may be necessary to get the project out in the hands of the customers and get early feedback.
Feedback: After the software is released, feedback is collected, and more stories or epics are added to either improve an existing feature or add a new feature.
We follow all these steps of the Agile Software Development process while developing our client’s application. For that reason, we can deliver quality products within tight deadlines without compromising on quality.