You're a full year into a multi-year multi=million dollar project but the first actual release is seen o the horizon.
What does everyone do naturally?
PANIC, of course.
This time there was reason:
- Your deliverables have been fine to date and the architecture is rock solid (just as you promised)
- The Business Team is killing the Client Sponsor because the business team has exceedingly high expectations that should have been managed better.
- Your Client Sponsor is getting angrier and angrier because his reports people can't do parallel testing on the old and new versions yet because your application still has issues. He originally planned for six months of such testing and might get two weeks under the existing schedule.
- Your Client Sponsor's boss is demanding more functionality than your team can provide in a month of Sundays as it prepares for the first beta release and code freeze.
- Your DevTeam is pointing fingers at you and the PM because they suspect (rightly) the client will want features build through load and performance testing.
Well, what could have been a major disaster with a lot of egg running off a lot of people was avoided with a lot of team assistance and a lot of hard work. No wonder I like working on teams so much:
1. Analyze the Problem and CausesWe're in the first code freeze of my first Agile Project. It took a lot of doing.
The problem was:
- Exceedingly poor communication
- Lack of planning
- Lack of managing expectations (on both sides)
- Not using a more Agile approach sooner in the project than we did.
2. Experience Counts- Listen to ItHere's what our CTO (Chief Technical Officer) hammered into our heads:
- Practical Agile Methods
- The BA promotes communication between the Business and Technical Teams and acts as a day-to-day Project Manager for the Technical Team (high level- Technical Lead runs the team).
- BA needs to meet and talk with the Client at least once a day (preferably with the IA (Information Architect).
- BA runs the requirements gathering, documentation (just enough documentation), the non-SCRUM Meetings and handles the project calendar for the PM.
- The IA is the interface and usability Czar/Czarina.
- The Client controls the features/bug lists. But the feature/fix doesn't get on the list until the BA/IA translates the into documents the Developer can develop from.
Our PM is also the firm's Sales Director. He revised his role to be umbers cruncher/support for the BA/IA and Lead Developer instead of intermediary between the customer and DevTeam/BA/IA. Instead, the PM and the BA will buffer the Client together.
3. Take Concrete, Understandable StepsHere's what I (the BA- Deputy Associate Assistant Project Manager In Waiting):
Defined terms for both sides in their own contexts. I originally started a Glossary of terms, but someone from UxD pulled it. It was never used, never updated ad never referred to. Never again.
- The business side didn't know a checkbox from a checkbook.
- The DevTeam had no idea what 'parallel testing' meant nor how deep it went (down to the field level for hundreds of transactions).
It got worse, then got a little better when we formalized the process and touch points. Now every feel confident in asking "what does
that mean?" Oh, how my first radio news director would smile!
Explained, demonstrated and awarded control of the Agile-based process to the business team four or five times and adjusted it to make them feel comfortable in their Word, PowerPoint and Excel World.
I gave up on the business side using any of the new tools except the bug tracker. The wiki is an active tool for the DevTeam and a simple resource for the Business Side.
If they're more comfortable in Office, fine, the BA and IA will translate i the wiki.
Told the DevTeam categorically it had but two 'controls' on the process- agreeing/disagreeing to a list of iteration features/issue repairs and providing the Client options and potential results/mitigation strategies.
A Developer can ask
why a feature is needed/wanted, but the developer can't say
no to a feature. If there's violet disagreement, offer options, but when the client makes an informed decision,
that's it.
Got both sides into two actual Iteration Planning Meetings to get an identified list of develop-able items together for the upcoming iteration. What a concept! Things began settling down with the first freeze/performance-load test iteration plan and eased significantly with the list for the first 'go live' release that follows immediately.
Despite my best efforts, the DevTeam wasted the two days I set aside for research and questions between the first and second planned iterations with little stuff like speeding up the transaction times on the servers.
Got the Client to think out loud. ow we have the rudiments of a road map. Another planning tool!
Early Results:The respect meter is consistently rising on both the Business and the DevTeam sides since we moved to a more standard.
Now don't get me wrong.
When we started, only our highly experienced Architect was Agile proficient and he was moving us to this sort of practice. We needed a lot more leeway to get the base functions designed, win client support and rapport as well as train the team. But as usual, communication is always the first casualty in any engagement we needed planning and giving the features over to the Client badly. Hence the major change a bit earlier than expected.
Things are a lot calmer, the client is more satisfied now that he knows where items he wants may be developed (we're Agile- these plans and iteration lists are like vaporware- useful only to make everyone realize that any change means a push for the item originally planned for.)
I'll letcha know what happens as we continue down this path, but it looks really good and will allow us to get automated testing implemented along with regression ad unit testing fairly easily from my perspective...making us test-based developers a lot sooner than I thought.
Powered by ScribeFire.