I’ve been interviewing a few business analysts recently (yes we still need them despite having nominal business product owners). Many of them claim some agile experience in their past and manage to mention the words ‘incremental development’ but very few appear to think in terms of ‘iterative development’.
A brief word on incremental vs iterative here: Iterative
development involves going back to already written functionality, reviewing it,
and deciding what, if anything, needs to be done to improve it. Incremental
development is developing a large system in pieces – this is not the same. Compare...
Incrementally building piece by piece with a clear upfront design
Iteratively improving on an initial vague design
Incrementally building piece by piece with a clear upfront design
Iteratively improving on an initial vague design
(And just calling sprints 'iterations' does not make your process iterative!!!!)
I know back when I was a BA in a waterfall environment I
tried very hard to think of everything during the requirements gathering phase
so I could include it in the requirements specification, and a good BA should
naturally do so. But in transitioning to an agile environment this often
results in BAs simply ‘compartmentalising’ a traditional requirements document
into smaller chunks and calling them User Stories.
So what’s the problem with this?
- It removes the ability for the business to prioritise the functionality. Imagine a text search function – a BA may specify the multitude of different ways the search should return results given various common search operators (and / or / + / etc) in one user story. This negates the option to have a story for just a basic text search and a lower priority one for more advanced search options (the business may decide the benefits of the advanced search are not as great as another feature).
- It increases the chances of gold plating. Good BAs can always think of improvements that _could_ be made to software and they tend to put all that knowledge in one story. But the _best_ BAs will recognise which improvement has the biggest business benefit, and will separate the stories based on potential business priority, rather than a blanket statement like 'The text search should be like Google'.
- It slows perceived progress. Instead of spending 1 day getting a basic search working and demonstrable to the end users, the developers have to spend a week getting the indexing and search engine customised, which in turn prevents them from delivering other features. The value of agile is the fast feedback mechanism it provides, the more we do to stay in this zone the better.
- It makes you blind to opportunities. If you've already thought of the 'solution' at the start of the project, you're not going to look for alternative better solutions later on. That's why vagueness is sometimes a good thing - it encourages delaying decisions until the last responsible moment - the moment at which you have the most information available to make the best decision. E.g. 'with the feedback from users of the basic search we think we should add a date filter rather than improving the text search options'.
No comments:
Post a Comment