Unfortunately for the business analyst (BA), much of the literature regarding agile development focuses on the perspective of the developer, largely ignoring the role of the business analyst. BAs play a key role capturing requirements on large, software-intensive projects. Teams are co-located where programmers and their "customers" interact directly as a means of eliciting requirements. Organizations that are moving toward agile development may wonder if a has a role in agile software development. The answer, as addressed by this paper, is a resounding "Yes."
Business Analyst's Traditional Role
Having a BA on an agile team will complement the technical knowledge of the developers, reducing the risk that the team will only see one side of issues. When it comes to a software project, the typical BA has one foot in the systems world and one in the business process world. According to the International Institute of Business Analysts (IIBA), a business analyst focuses on the "set of tasks, knowledge, and techniques required to identify business needs and determine solutions to business problems." [i]
The solution is not simply a system solution but a holistic business solution, extending beyond the typical focus of a software developer. A BA is typically adept at working with business processes in the abstract rather than the concrete. His responsibility is to see the big picture, which includes the business context as well as the operation of the system. Developers, on the other hand, tend to view the operation of the system in terms of the concrete operation of the software. Their focus tends toward understanding how to make the specification operate in terms of software. [ii]
A BA's traditional tasks consist of determining functional and non-functional requirements using a variety of elicitation techniques, communicating requirements to business and technical people, estimating requirements, defining requirements attributes, prioritizing requirements, identifying and managing stakeholders, defining and reporting on metrics, managing the scope of requirements though base lining and change control, and ensuring that the requirements are validated. In order to perform these tasks, a BA has a different skill set from that of a developer.
BAs must be good communicators who can interact with a varying audience. They must be able to communicate in the language of the business - at a level equal to the stakeholder - and they must be able to understand and use technical terms when communicating with the development side of the team. The BA must have strong negotiating, presentation, and writing skills. This skill set is not common among software developers. BAs on an agile development team complement and extend the skills typically found in development teams.
Customer on Agile Teams
Agile development doesn't happen without support from customers. According to Vinekar, "using an agile approach entails formidable responsibilities on the client's part" where the customer will have a hand in "identifying and prioritizing features and continuous, active, collaboration throughout the development." [iii] A successful agile team requires the right customer with a combination of aptitude and ability and a team that is willing and able to work closely with the on-site customers.
If more than one on-site customer is needed, each customer's vision must be aligned to represent the same ultimate vision. If any of these points are not true, the agile development project may experience significant difficulty. A highly knowledgeable customer will be in demand from the operations side of the business and from the agile team. There is a great temptation within the business to pull an expert customer from a development project in order to address operational issues, often times leaving a junior, less knowledgeable (and