Here’s a brief definition of a project:
A project is an endeavor with a clear definition of what needs to be delivered and the date when it needs to be delivered.
At first sight it may seem that a product is a project, but it is not!
A product is not a project because:
- There’s no clear definition of what needs to be delivered. We saw in a previous post that a product in the software development industry is any customer facing system. Since customer needs evolve over time and new technologies are made available, the customer expects that the software she uses evolves as well, hence there’s no clear definition of what needs to be delivered. There’s no use to have a one year planning of all features to be delivered in a certain sequence if requirements may change every month or even every week. A product development process needs to be adaptable to this change in customer needs.
- There’s no clear definition of the the date when it needs to be delivered. As customer expects that the software evolves in alignment with her needs, she doesn’t want a new version one year from now. She expects new features every month or even every week. For this reason, a product can not suffer the burden of the project management process. The product development process must be much leaner than the traditional project management process, because delivering new functionalities to a product is always the same project for each new feature: discovery, design, implementation, test, deploy. A project is used to manage occasional endeavors. The product development process is not an occasional endeavor. It’s a continuous process of improvement of the product through the delivery of new features.
A product needs a more adaptable and continuous development process than traditional project management delivers. Agile Software Development, Lean Software Development and Continuous Delivery are process that present these characteristics.
Agile software development is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.
Lean software development is a translation of Lean manufacturing and Lean IT principles and practices to the software development domain. Adapted from the Toyota Production System, a pro-lean subculture is emerging from within the Agile community.
Continuous Delivery aims to make software production-ready throughout its lifecycle, so that potentially every good build can be released into production and run effectively. The goal is to “…Minimise the cycle time from idea to delivery, and allow that cycle to be repeated frequently and reliably.”
- The difference between a product and a project is that while a project is used to manage occasional endeavors, it doesn’t fit with the continuous improvement demand of a product.
- A product requires more adaptable and continuous development process such as Agile Software Development, Lean Software Development and Continuous Delivery.