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.
This is the starting point of Agile development. The product manager extracts the primary list of features & user stories 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 team also reviews the product backlog to ensure that it is ready for the next sprint planning, which is known as refinement.
The features & user stories to be scoped during the upcoming sprint are organized in a meeting by the scrum master. In the meeting, the scrum team reviews the product backlog and select the items that the team will work on during the sprint. 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.
This is a subset of the product backlog that contains the items that the team has committed to completing during the sprint. The engineers investigate in detail how to implement the features scoped in the current sprint, which are put into Tech Spec or Design Doc. If there are any difficulty to achieve the product requirements from technical aspects, the scope can be negotiated to change. The required time of developing each item to complete is also estimated by the engineers, which is often evaluated by story points.
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. The team meets daily for a stand-up meeting (daily scrum) about 15-30 minutes usually 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.
At the end of the sprint, 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 team can also present the work they have completed to other stakeholders. 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.
After the sprint review, 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. A retrospective is an opportunity to improve the future by reflecting on the past.
Finally, the completed work should be integrated into the product 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.
Overall, these seven steps help ensure that the team is continuously delivering value to the customer while also improving the process and quality of the software.
Most technology giants such as Google and Facebook have talented product managers for successful businesses. Product managers are those who continuously create the valuable products from users' perspective. In the era of smartphones, the product manager's role has become so important, but why?# product management
In today's digital world, companies have access to more customer data than ever before. While this data can be incredibly valuable for understanding customer behavior, improving products and services, and driving business growth, it also raises significant privacy concerns.# data# privacy# marketing
With the words "diversity" and "global" being used so often recently, many companies are looking for ways to form multicultural teams in order to benefit from increased creativity and a better understanding of the global marketplace. However, cultural differences pose a number of challenges.# teamwork# leadership
In the Internet industry, product requirements documents (PRDs) have been the most important artifact product managers create. PRDs mainly describe why the products/features are needed or not needed and what kind of features should be implemented so that everyone in the team is to be on the same page.# product management