Getting started
Creating a shared vision involves understanding and agreeing on the fundamental "what" and "why" of the product under
development. This ensures that stakeholders and the development team have a common understanding of the problem to be
solved, and understand the stakeholders' needs.
Begin by reviewing the reference material associated with this practice to better understand the intent of the
practice. Review the template for the Vision to understand the information that it captures. Tailor the template for the
specific needs of the project. Review the Develop Technical Vision task to understand what needs to be performed to capture
and communicate the vision. Review the guidelines on requirements gathering techniques and requirements reviews
associated with the Develop Technical Vision task, and select the appropriate technique(s) for the project. Educate the
development team and relevant stakeholders on the purpose of this practice, and get buy-in on the techniques that will
be used to establish and maintain a shared vision.
This practice is related to many other useful practices. For example:
-
Requirements practices: the vision is one of the outcomes of stakeholder requests elicitation. It is also the
primary input for developing more fine-grained technical requirements. stakeholders and the development team use
the vision to provide the context and high-level objectives for the detailed technical requirements.
-
Architecture practices: the vision outlines the high-level objectives and constraints for the system that inform
architectural design decisions.
-
Project management practices: the vision defines the scope and constraints of the project that are the basis for
work prioritization and initial estimates of effort. The value delivered by the team at each milestone must align
with stakeholders' expectations, expressed by the project vision.
Common pitfalls
Rushing into a solution before the problem is understood. The result is typically a system that fails to solve
stakeholder problems and satisfy stakeholder needs. Avoid design while capturing the vision. Focus on the "what" and
"why" of the product, rather than detailing the solution. Detailed technical requirements will be developed later, in
conjunction with architectural design and trade-off analysis.
Failure to gain agreement on the problem to be solved. Make sure that you have identified all stakeholders,
captured their needs and wishes, and obtained agreement on the problem to be solved and associated constraints. Missing
a critical stakeholder can result in significant re-work later.
Failure to manage scope. Rome was not built in a day (or in a single project). Make sure that you capture
stakeholder needs and features, and prioritize them to deliver as much value as early as possible. If the estimated
effort is too great to commit to for a single external release, divide and conquer. The product vision may span more
than one release of the product, providing a roadmap for future work, as well as work planned for the current project.
Additional Information
It is key that everyone is on the same page (the stakeholder and development organization) to ensure the right business
problem is agreed upon so that the solution will meet the stakeholder's needs.
High level objectives provide the foundation for solution requirements when this practice is used in conjunction with
other requirements practices.
Requirements Envisioning
In order to help the development organization and stakeholders to understand and commit to a shared vision, it is
useful to perform high-level requirements envisioning at early stages of the project. The objective is to identify
business goals, develop a common vision, and identify the high-level requirements for the system, which in turn helps
populate the list of work items for the project with an initial list of requirements.
At this stage, it is useful to identify how the users will interact with the system (typically captured in
an usage model), what the main business entities are (typically captured in a domain model), as well as some
essential user-interface prototypes. This information captured at a high level is used as input to refining the
requirements and architecture for the system at the following stages of the development cycle.
For more details on requirements envisioning, visit http://www.agilemodeling.com/essays/initialRequirementsModeling.htm.
|