My previous blog was on measuring the success of Distributed Agile. Distributed Agile involves geographically dispersed teams and short iterations of two to four weeks. Stakeholders of distributed agile projects need to find ways to improve quality before design. This can be done by means of providing the right work environment and tools to team members and ensuring that project requirements are of good quality. This is the first step to encourage distributed team design and develop working code. This blog encapsulates five key things that can help us improve quality before design.
Product Vision Document: This document provides the overall vision of the software product to be developed or maintained. Also, this document articulates the impact of building or maintaining the system as well as end-user benefits. Sharing this document with distributed teams helps the team members understand the overall vision of the product. If the team is working on a major release, it is good to share the release vision too.
Goal-oriented Requirements: Instead of sharing transactional requirements such as ‘The end user must be able to view and print the statements of the past months’, it is a good practice to share goal-oriented statements such as ‘Some of the top 10 strategic customers have asked for a feature that will enable them to view and print the statements of the past months. This feature will increase the customer satisfaction of their end-users.’ When team members receive goal-oriented requirements or user stories, they relate it to the product vision or release vision and come up with innovative ways to find solutions. This approach improves team bonding, productivity as well as quality.
Not Only Functional Requirements: It is an incorrect notion to provide only functional requirements and expect all other forms of requirements to emerge during iteration planning meetings or one-to-one discussions. This can lead to loss of productivity and team spirit. Focus on non-functional requirements and ensuring adequate reviews is very essential before the iteration planning starts.
Prioritization: Product Owners and Scrum Masters of Distributed Scrum projects need to have an objective prioritization approach in order to define priority categories unambiguously. This will help them identify user stories for upcoming iterations. When prioritization of user stories becomes a reactive approach it can lead to changes during iterations and hence can put lot of strain on team members.
Tool Selection: Effective tools for managing user stories as well as related communication and coordination contribute positively towards distributed agile projects. Indecisive approaches to tools implementation and introduction of new tools during project execution will not enable effective management of user stories.
If we encourage the habit of producing working code without these factors, we will increase the risk of requirements misunderstanding and consequent errors in design and code. Also, this will not enable us move from offshore staffing to distributed agile software development.
Quality before design is ideal to improve project success.
I would like to know your thoughts on the same.