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.
Effective product managers lead cross-functional teams to create the product customers love. To be like that, product managers must possess several skills. There are six major skills, I believe, required for product managers, not only professional knowledges about engineering, web design, business etc.# product management
Before diving into the nitty-gritty of building your product roadmap or developing new features, your product strategy should be defined to make the right decisions in the ever-changing world. A product strategy is a high-level description of what the business wants to achieve with its product and how to achieve it.# product management# teamwork
As consumer behavior has been more diverse, nowadays it has become difficult to turn consumers around by providing information centrally through mass marketing. In order to fulfill individual needs, it is quite hard to succeed in marketing by only experience and intuition.# data# marketing
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 to take many perspectives into account, otherwise the product requirements need to be changed over and over again during development or even after finishing it, but how?# product management