Beginners Guide to Agile Product Development
There is still a lot of confusion on what “agile methodology” is and how it is applied to design and product development. This article attempts to clear up some of that confusion and give you an introduction on Agile Product Development.
Read further and learn 1) the basics of the agile methodology, 2) the features of the agile methodology, 3) how the agile methodology works in product development, and 4) a practical application of agile product development.
THE AGILE METHODOLOGY
We have heard this over and over again: the agile methodology enables companies to build or make the right product. But how does it help them, exactly?
The concept of Agile is relatively new, arising only around the 1970s, when Dr. Winston Royce made a critique on sequential development or “waterfall methodology”.
The classic example often cited when we talk of sequential development is that of automobile manufacturing, where parts and components are added in sequential phases in an assembly line, until the final product – the automobile – is completed in the final phase or stage. It’s a step-by-step process, where the next step cannot proceed unless the previous one has been taken and completed. When you think about it, most engineering-related processes stick to rigid structures, utilizing the traditional sequential method.
Dr. Royce said that the waterfall methodology is not really ideal when it comes to software product development, seeing many problems if it were to be implemented. Since it is sequential, the product developers would first have to collect all the requirements of the project before they can proceed to making the product design. Only after they have completed the architecture will they be able to start writing the code, and it is only after the code has been completed that they can proceed to the next step, towards the completion of the product development process.
There are many problems seen a waterfall methodology were applied:
- Since it is sequential, the flow of work is too systematic and boxed in, such that communication between and among the groups working on each phase are limited, if there is even any. They will tend to stick to their work, since they have their own phase to focus on. The moment they finish their part of the process, then they are done with it. This is certainly going to be a waste of resources, not to mention the specialized skills and knowledge of the groups or people involved in each phase of the process.
- There is no assurance that all the necessary information or requirements will be complete and on hand at the beginning of the product development process. The probabilities are great that, in the middle of the process, new information may come in that will have an impact on the design of the product. If you were to use the sequential method, you would have to ignore these new information or data. After all, they were not integrated into the prior phases of the product development process.
- It is inflexible. Take into consideration the fact that software development is greatly affected by technology, and we are all aware of the fast pace of changes and evolution in technology, and you know that you have to be flexible. What is applicable today may no longer be so in one or two months, because of the arrival or introduction of a new technology. So say, for example, that you built a product based on information gathered four months ago, at the beginning of the product development process, and you have finally completed it, only to realize that it is no longer usable or marketable, because within those four months, there have been new technological developments that rendered them moot. In short, the product is no longer relevant.
These gave rise to the concept of agile methodology, which provides more room for optimization compared to the Waterfall methodology.
FEATURES OF AGILE METHODOLOGY
Perhaps the most glaring difference between Agile and Waterfall methodology is the fact that Agile entails assessment of the project all throughout the product development lifecycle, while the latter has a more limited scope, broken down into phases. To better understand Agile, let us look into its key features.
Agile is “iterative”, or involves regular rhythms of work.
As mentioned earlier, project assessment is conducted throughout the product development cycle. That means work is conducted by the members of the product development team on a regular basis. These are called “sprints”, or by its other more popular terms, “iterations”. Every aspect or phase of the development process is continuously revisited and reassessed throughout the development life cycle.
Iterations are scheduled. For example, some teams make it a point to re-evaluate the progress of the project and the direction they are going at the end of every week, or every two weeks.
Agile is “incremental”.
At the end of each iteration, the teams or groups within the product development team are required to present a product increment. This could be a potential feature that they think would add value to the product they are building, or it could be a minor change that they think will improve the final product. Their report or recommendation will arise from the sprints that they have undergone.
Agile is designed to reduce costs of development and the time to market.
Agile is ideal for companies that want to develop products in a short time, since it allows development of the product at the very same time that they are gathering the requirements and information. The shortened development time also allows the product to be more attuned to the current time and state of the market, thus ensuring that the product is relevant and will be released.
Agile is identified with product development teams’ responsiveness.
Product development teams are almost always faced with unpredictable scenarios, and it does not bode well if one or two of these scenarios hit them when they are already halfway through a sequential product development process. It pretty much means one of two things: either they scrap all the earlier work put into the earlier phases of the cycle and start all over again, or they ignore the implications of these scenarios and push through with the product development, while hoping that the product will still sell once it is released in the market.In Agile, however, the teams can respond immediately once these unpredictable scenarios come up, and they can adapt accordingly.
AGILE METHODOLOGY IN PRODUCT DEVELOPMENT
There is this perception that Agile applies only in software development. However, times are changing, and we are seeing more and more applications of Agile in broader product development and even in sales and marketing departments. The core principles of Agile that we see in software development now translate very well to product development.
Collaboration and interaction over rigid rules and lines of authority.
Agile software development prioritizes the individuals within the software development team and their interaction, putting them above the tools and processes that they actually use in the process. It is not an uncommon sight to see software developers or programmers partnering up or creating their own groups within a group in order to accomplish their tasks.
This also applies in other types of product development processes. Collaboration is given more emphasis, as members of the product development team put their heads together to solve problems. While it is true that there may be specific processes or operating procedures in place, they take a backseat when there is a problem that needs immediate solving.
Personnel or people empowerment is also prioritized. They can choose to form their own teams or sub-groupings, making sure that the best talents are present for their task at hand.The members of the team will also feel more motivated when they feel that they are working with other people in the team, instead of for a person of authority.
In view of this, it is clear that self-organization is greatly encouraged in a product development environment that follows the Agile methodology.
Involvement of customers and other stakeholders in the development process.
This is a reinforcement of the characteristic of Agile being iterative, and having each aspect revisited throughout the development life cycle. In Agile product development, collaboration is not limited among the members of the product development team alone. Other stakeholders, particularly the customers, are also involved.
This is in full recognition of the reality that there are requirements and information that may not be available at the beginning of the cycle, but will become eventually available in the middle. It is also an acknowledgment of the possible occurrence of the unpredictable scenarios that were discussed earlier. By involving customers and other stakeholders, the Agile team will be able to verify and validate along the way, so they can make the necessary adjustments, if any.
Prototypes are given more importance than documentation.
Documentation is all well and good, because they contain the details and nitty-gritties. However, as comprehensive as the documentation may be, they are given less importance, because Agile prioritizes coming up with working prototypes.
In software development, for example, clients appreciate the presentation of documents discussing, at great length, the features of the software currently under development. However, the clients will be more appreciative if you can present them with working software.
The same applies in product development. Prototypes have more substance than piles and piles of documentation, because they are more representative of whether the proposed product actually works or not.
Ability to respond to change.
Teams that adhere to the Agile methodology are more inclined to veer away from standard operating procedures in order to respond accordingly to development issues, especially the unexpected ones. This makes them more flexible, instead of being boxed in by specific and rigid rules.
APPLICATION OF AGILE PRODUCT DEVELOPMENT
Let us try to follow the basic steps involved in the development of a product using Agile methodology principles.
1. Organize teams.
It is certainly an advantage that Agile encourages a self-organizing structure. It is possible to organize cross-functional teams, instead of sticking to a line of authority, as is often seen in the traditional waterfall methodology. The advantage of having a cross-functional Agile team is that you are able to gather the skills and specializations that you need for the projects.
After putting a product manager in place, the team members can proceed with their work and deliver the requirements expected of them within the iteration. While it is true that having a figurehead is not really a priority in Agile, having a product manager will still help in centralization, especially when there are issues that must be addressed quickly.
As to the question on how many team members should be included in the Agile development team, there really is no fixed or exact number, although it is preferred to keep it small. The ideal number is an average of ten members, including the project manager.
2. Create the “backlog”.
The “backlog” refers to the list of work that must be done, in order of priority. These are essentially the requirements that must be fulfilled or met.
Prioritization is important in order for the team to be able to adjust the scope of work, the schedule of the members of the team, and the costs that will be incurred, so that the most important tasks are accomplished before the others.
Take note that the backlog is not fixed. It is most definitely subject to change, mostly depending on the time interval between evaluations (or the length of iterations set by the team).
3. Establish “iterations”.
You will have to basically divide the work into iterations or sprints. Using the requirements listed in the backlog, the team must break them down into smaller amounts which are expected to be delivered at the end of every sprint. You can learn more about Agile techniques by looking at Scrum and Kanban.
There is no fixed length of time or period for the iterations. It could be as short as one week, or as long as one month. It will largely depend on the nature of the product being developed, as well as the previous experience of the product development team, if any. In many cases, though, it is highly recommended for iterations to be kept short, say one- or two-week iterations are ideal.
One thing that you must realize is that a full iteration is to be treated as a full development cycle. At the end of the iteration, when they have to present a potentially shippable product increment, that is considered to be the end of their respective development cycle.
Still, it is to be noted that all iterations are not expected to come up with product increments. It is possible for iterations to be conducted multiple times until the requirement has been fulfilled and there is a release to be made.
4. Conduct risk mitigation.
Agile methodology is fully accepting of the existence of the unexpected and the unpredictable. In fact, it can be said that Agile expects the unexpected to happen. This is why it places great importance on risk management.
This is partly the reason why short-term iterations are highly encouraged, because changes are easier to deal with when taken in short periods. It is easier to adapt to changes or implement them when there is a shorter time period involved. There are less requirements to be revised, and therefore less costs to be incurred to make up for the change.
Risk mitigation is not a single step in the cycle; it is to be performed every step of the way.
5. Conduct “scrums”.
Throughout the iterations, the members of the team are expected to communicate, interact and collaborate with each other. This is to ensure that they remain focused on one goal and they do not lose sight of the direction they are taking. Aside from that, “scrums” are also required. A “scrum” is a daily stand-up meeting where the members of the team will present an outline of their daily progress. They will basically talk about what they have accomplished since the report they made the day before. The scrums are to be conducted every day during an iteration.
6. Conduct testing.
In Agile, testing is conducted during product development. Several members of the team are tasked with the function of testing the product increments as they are delivered at the end of every iteration. This way, they can identify problems early on, so they can be refined and undergo another iteration, before the final product is released.
7. Secure customer input and feedback.
Normally, customers will only get to see the product once it has been completed and released to the market. In Agile product development, the customers are engaged to check out the features of the product while it is being developed, so that they can provide input and feedback. Their input will then be considered by the product development team as they work on it during an iteration.
If we are to attach several keywords to Agile product development, they would include “collaborative environment”, “self-organizing product development teams”, and “responsive teams”. It has been proven to be advantageous when it comes to software development, resulting in high quality software produced in a cost-effective manner. There is no doubt that it will soon be used by more organizations involved in product development, aside from software development.