What is Agile Software Development?
In early 2001, 17 software developers came together to discuss the future of software development in Snowbird, Utah. They found consensus around four core values which is written as Agile Manifesto:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Even now, the Manifesto is still our guide, in other words, no one has achieved success without following any of the values. A type of development methodology that is following the Manifesto is called Agile Software Development. Agile Software Development - also referred simply as Agile - is an iterative approach to focus on continuous releases and incorporating customer feedback with every iteration. In short, Agile is important for software development to delight customers and be more competitive.
In Agile, effective collaboration across different teams is essential due to speedy development and flexibility in time or scope. That is why, I would like to introduce a popular agile framework here, called Scrum. Scrum is an Agile framework that helps teams work together strongly. It is based on an idea from rugby, specifically that functioning as a team, not as a group of individuals, is key to success. In Scrum, a sprint is set as a short period of time so that specific work has to be done intensively with one team. One cycle of Scrum is like below:
Product Backlog → Sprint Planning → Sprint Backlog → Sprint → Sprint Review → Sprint Retrospective → Product Increment
Let's consider a team consists of a product manager (= product owner), a scrum master and engineers, and see how each phase goes.
The product manager extracts the primary list of features that need to be implemented based on the PRD. It is kind of the team's To-Do list. Every feature in the list should be prioritized by the product manager. The product backlog is constantly re-visited, re-prioritized and maintained by the product manager depending on the market's situation or anything (e.g. features may no longer be relevant, problems can get solved in other ways).
The features to be scoped during the current sprint is organized in a meeting by the scrum master. In the meeting, who will be in charge of implementing which features is also determined. In addition, time schedule of the entire development (sprint length) is estimated. Two weeks is a pretty typical length for a sprint, though time length of a sprint is flexible depending on scope complexity and so on. If there are any lacks in the PRD, the product manager has to modify it.
The engineers investigate how to implement the features scoped in the current sprint, which are put into Tech Spec. If there are any difficulty to achieve the product requirements from technical aspects, the scope can be negotiated to change. As you can see, the PRD can be updated anytime. The required time of developing each feature to complete is also estimated by the engineers.
It is the actual time period when the scrum team works together to complete the implementation. Even during this period, the scope can be re-negotiated between the product manager and the engineers if necessary. Some bugs might be found during development. The product manager prioritizes bug fixes and decides if they should be fixed in the current sprint.
A daily scrum (stand-up meeting) about 15-30 minutes should be managed by the scrum master, usually everyday in the morning. The main objective of the daily scrum is to be on the same page with everyone on the team by sharing progress and making a plan for the next 24 hours.
The scrum team gets together to view a demo casually. It is a time to celebrate the team for hard work and create more personal connections across the team. The product manager can judge whether or not to release the implemented features after QA testing. Moreover, A/B tests should be prepared if necessary.
A retrospective is an opportunity to improve the future by reflecting on the past. The scrum team discusses what worked well during the sprint, what problems it encountered and how those problems were (or were not) solved. The team should identify the helpful changes for the next sprint to create an environment where the team can work more efficiently.
At the end of the sprint, the new increment must be done regardless of whether the product manager decides to release it. An increment is a concrete milestone toward the product goal. Each increment is additive to all previous increments (the product) and thoroughly verified that all increments work together.
The main role of product managers is to define product requirements and put them into words as a PRD. In this phase, product managers have t...# product management