“Everything that has a beginning has an ending.” Jack Kornfield
It’s crucial to understand that regardless of industry, all products have a life cycle. Understanding how to manage that product life cycle through each stage determines the success or failure of a product.
After the introduction of a product, sales usually first slowly pick up, before entering the growth phase of the product life cycle. Popularity increases, market share increases, and also so does competition. The growth of sales eventually diminishes, and sales flatten during the maturity phase. With the introduction of competitive products and more competitors or substitute products or new technologies, the decline in sales is inevitable; and finally, the product becomes obsolete and is withdrawn from the market.
The higher the amplitude and the broader the curve, the more successful the product is. Getting the right customers and providing them with superior value results in high sales and keeping the customers, making them loyal customers, postpones the decline phase.
Optimizing and controlling the product life cycle is easier said than done and starts way before the introduction of a product. It requires a strategy, careful planning, execution, and control. Above all, it requires a process and methodology for all phases of the process. Software products are no exception, on the contrary, given the high pace of competitors' emergence and technology changes, software products appear and fall off the market much quicker than other more traditional products.
The Software Product Life Cycle Anatomy
Here’s the simplified representation of the product life cycle process:
- Idea: This is the trigger of the process. The idea for creating a software product is often based only on general gut feeling and set of experiences. Ideation is a very creative process.
- Design: careful and methodical design and product definition or re-design after review, which includes not only technical design.
- Development: The implementation, testing, and, where needed, improvements to the design.
- Deployment: Introduction of the product to the market or a release of the product’s next version. Careful monitoring and measurements are needed at this step.
- Improvement: To extend the product life or increase the profitability, regular improvements to the design of the product are required. After reviewing the results from the previous release and prioritizing new features, and addressing existing problems, the process goes back to the design phase.
- Phase-out or end of life (EOL): At some point, it is no longer possible or wise to extend the product life.
This product life cycle is valid for any product, including software products. Moreover, this process matches the agile software development process.
The product life cycle is universal and compound
Although the product life cycle as drawn on the first picture in this post looks quite simple, it is actually the result of multiple “product life cycles.” The product life cycle and its process apply to the technology, a project, a program (set of projects) or product family, a particular product version, and so on. No matter how much you zoom in on it or out of it, it always behaves like a product life cycle again:
Agile Software Development Methodology
This topic deserves a separate article or even a series, but for the sake of giving the high-level overview of the software product life cycle and how software development processes fit into the product-related processes, I decided to include this overview here.
“Agile Development” is an umbrella term for several iterative and incremental software development methodologies. The most popular agile methodologies include Extreme Programming (XP), Scrum, Crystal, Dynamic Systems Development Method (DSDM), Lean Development, and Feature-Driven Development (FDD).
While each of the agile methodologies is unique in its specific approach, they all share a common vision and core values. Agile software development describes an approach to software development under which software requirements and solutions evolve through the collaborative effort of self-organizing and cross-functional teams and their customer(s)/end user(s). It advocates adaptive planning, evolutionary development, early delivery, and continual improvement, and it encourages rapid and flexible response to change. Iterative and incremental development methods can be traced back as early as 1957, with evolutionary project management and adaptive software development emerging in the early 1970s. Nevertheless, the popularity of the agile development methods soared, and the term “agile development” became a buzzword just recently. Nowadays it’s the most popular development approach most of the development teams are practicing.
Below you can see how the agile development process can be graphically represented:
As you can see, the agile development process consists of sprints which are basically iterations of the product life cycle.