The agile methodology, like many concepts, is based on an “ideal” setting or environment. In the agile domain this usually constitutes a 100% co-located team of generalists who have unfettered access to the primary business stakeholder. Working in an ideal environment makes sense when you are describing theory, but organizations can find this perfect environment unachievable due to basic business constraints: resource skill sets, location, and time allocation. These constraints present barriers to agile adoption, can hinder productivity, cause frustration amongst the team, and can lead to project failure.
To mitigate constraints and foster the development of a simulated ideal environment agile development teams should incorporate the role of the business analyst.
The introduction of business analysts into their agile software development methodology may seem counterintuitive to Agile practitioners. After all, agile purists have been saying for years to cut detailed requirements gathering cycles out of the equation and rely on direct communication between users and developers. What some do not realize is that business analysts do more than elicit requirements and these unique skills not only adapt well to the agile methodology, but greatly improve it. In their role of developing requirements business analysts have built up core competencies such has effectively communicating with distributed resources, facilitation/elicitation, as well as a deep understanding of an organization’s business environment and enterprise architecture.
Each of these core competencies brings a unique value to agile projects. They should be leveraged whenever possible to mitigate many of the risks that agile projects traditionally face:
- Working with co-located teams
- The lack of “generalist” resources available to agile projects
- Waste caused by miscommunication with the business
- Alignment with enterprise architecture and business strategy
In reality, business analysts are not “agile road blocks”, but resources who agile practitioners can put to work.
Bring Remote Resources into the Mix
More and more businesses are adopting a ‘virtual office’ where employees work from home or remote locations. Unfortunately, this is bad news for agile teams who have become dependant on in person communication. Today’s agile development teams need to adapt to this reality, finding ways to replicate the face-to-face communication that a successful implementation of the development methodology demands.
For the business analysts these challenges are nothing new and have been overcome in the waterfall world by applying highly tuned and specialized collaboration techniques, such as business process diagrams, context models, and use cases which can also succeed in the agile environment. Through the construction of models and the introduction of basic requirements collaboration techniques, JAD sessions and virtual stand up meetings, the BA can open up lines of communication between co-located and remote resources. In this way the BA can work to simulate the team room environment using software tools and collaboration techniques to replace the whiteboards and index cards.
Put Specialists to Work
A small group of generalists, individuals who hold multiple roles on a project (design, develop, test, and deployment), are the ideal team for projects following the agile methodology. Unfortunately, generalists are far and few between making them difficult to hire. At the same time training generalists is not easier, requiring employees to complete multiple projects in numerous roles to build their skill sets. In most organizations not all agile project team members will be generalists. For agile projects to succeed without the benefit of generalists they need a bridge builder, someone who can work and communicate across multiple disciplines while ultimately keeping concerns of the business in the forefront.
Business analysts bring a breadth of knowledge to bear on software projects. In their role as a communicator and liaison they are tasked to work with developers, testers, implementers, managers, and almost all roles in the software development lifecycle. This interaction has given them a wide breadth of knowledge over the entire SDLC. While they may not know all of the intricacies related to the tasks associated with these roles or be able to perform them on their own, they can provide a bridge of communication to resources that can. The use of generalists on agile projects is ideal, because they have a depth of project experience and knowledge that increases their productivity.