...copyright Elena Yatzeck, 2010-2017

Sunday, October 16, 2011

Business Analyst Corner: Write Later, Not Less

If you are a BA looking down the barrel of an agile adoption at your work place, you may feel worried that you will be switching from reams of paper stored in large binders to index cards. And not the big cards either. You're looking at the 3x5 ones.  You feel this plan is ridiculous.  You may murmur something to yourself about "insane fads!" or "damage control!" or "keep secret requirements locked in my desk and bring them out later to save the day!"  Take heart, dear friends.
card wall from http://www.scrumology.net/2011/09/15/kanban-kickoff/ (Mr. Yuck is public domain)
Things may be different at start-ups, in small shops, and in places already whirring like Kanban tops. But in most fair-sized enterprise IT shops I've worked in, your first efforts at agile implementation will not aim to reduce the quantity of requirements documentation significantly.  Instead, they change the timing at which the requirements are written, and with that change in timing, reduce the work you will spend as a BA filing and executing change requests, and reworking traceability matrices.  The overall work may also be reduced since you don't write details for features you don't implement, but the ratio of working software to the number of words and diagrams in corresponding documentation may not change at all.

That's right:  you will still end up with high quality requirements at familiar levels of bulk.  Let's compare what you do now with what you might do with a more agile process.

Requirements-first technique (you likely do this now):
1)  You and your group may write requirements for 3-6 months.  (This may be divided into separate "business" and "systems" requirements phases).  You may then have some "architects" do some further system requirements in the form of a detailed "systems architecture document."  (SAD)

2)  Once development starts, if anything changes, you file or update a change request and re-write all of the linked requirements (and the traceability matrix that links them together!) to match the actual behavior of the working software.  Changes can occur because:
  • the market changed, so now your business needs something different
  • you have learned more about what you're doing, so you don't want exactly the same implementation you wanted before
  • the development group ran out of time, so a bunch of requirements need to be removed.
  • or for other reasons.
If development takes 3 months, and system test takes 3 months, and UAT takes 3 months, you could end up spending 15-18 months first writing, then continuously re-writing the requirements.  And if you're in the kind of shop that has to "trace changes," your resulting documents may be very hard to read, because everything you ever wrote is still there, color coded or struck out.

"Just in time" requirements technique (typical enterprise-level agile teams do this):
1)  You, the SMEs, the developers, and the testers all get together for a "release planning" workshop to determine what the high-level goals are, and what the system will look like (also at a high level) to meet those goals.  You create a flexible outline of the pieces of the system using the index cards (sometimes called "story" cards), arranged in the rough order you plan to build those pieces.  You can think of this as just writing the table of contents for what would have formerly been your requirements documents.

2)  Just before development starts, you work with SMEs and other BAs to write fully detailed requirements for each of the stories you intend to tackle in the upcoming 2-week iteration.  You may start an iteration ahead, or you may just start a few days ahead.  The fully detailed requirements attached to a story are called "narratives" at ThoughtWorks, or sometimes just "detailed requirements."  As you go, you keep writing the details, the stuff that adheres to your table of contents, just before the developers actually start coding.  If changes occur to the big picture or any of the implementation that's going to occur down the line, that's fine.  You let developers complete the work for the current iteration, but you change the remaining "release plan" cards to reflect the team's new learnings and business needs.

If your workshop took 2 weeks, and development takes 3 months, you have now completed exactly one outline of the work (the release plan), and one set of detailed documents for what you actually did (the narratives attached to the stories you did).  Roughly speaking, 18 months turns into a little over 3.


So if someone tries to tell you that agile lacks rigor, or that you don't need BAs to facilitate SME discussions and record the results any more in an agile project, you may want to take their hysteria with a pound or so of salt.  Ask them:  are they a theory-drunk zealot, or have they actually tried it in your environment?

I was originally going start the title of the post with "BA Corner," but I didn't, because my teenage daughter has confided in me that whenever I say "BA," she thinks "Bad A**."  You can imagine the resulting dinner conversations, when I attempt to talk shop.  At any rate, if you're feeling particularly fierce today, please feel free to re-read this post substituting her "BA" definition.  Power to the BAs!