Building a Bridge from the Current State to an Agile State
The Chronicles of an Enterprise Agile Transformation (Part Four)
Finally, we got to the “heart” of the presentation where the engineering lead described how we were going to change our thinking from our current state development practices to our proposed new state of Agile development. The following diagram was presented as an overall high-level mapping of current state to the Agile state.
The Engineering team walked through each phase providing guidelines for each stage of development throughout the project life cycle. They went phase by phase, providing a bridge between the current product development methodology (waterfall/incremental) phase to the new Agile methodology phase.
Editorial Note: I took issue with this diagram because it didn’t call out the Project Manager role. There seemed to be some assumptions being made that a project manager was now equal to a scrum master. To read more about this debate check out my blog post on http://www.planbox.com/blog/.
Below are the guidelines by phase that were presented:
Requirements Phase to Release Planning Phase
Guidelines for the Release Planning phase:
Release duration should ideally be 3-4 months and no more than 6 months
- Define your project team: Following roles should exist on all teams
- Product owner, Scrum Master, Development Manager, Architect, Developers, BAs, QAs, Operations representative
- Review project goals and minimal marketable features (MMF) needed for a viable release
- Categorize high-level requirements into features
- Break requirements into functional themes
- Create technical themes (plumbing and architecture related) and operational readiness related themes. List specific efforts needed related to deployment, performance, administration, and monitoring of the application in production
- Meet with Operations to incorporate their feedback
- Conduct overall release sizing based on high-level requirements
- Best and worst case estimate by themes with the team. If estimates are different from the original estimates that were provided in the investment planning process, then discuss the discrepancy with the product owner
- Capture all assumptions being made during the sizing effort and review these assumptions with the entire project team
Analysis Phase to Technical Feasibility Phase
The Analysis phase in the current product development lifecycle would now be called Technical Feasibility. This new phase would consist of the following guidelines:
No more than 4 weeks long for a 4-6 month development project
- Team to create stories for conducting technical feasibility at theme/feature level
- Product owners to work on the detail requirements. This work can be captured as stories with design details in the story narrative OR in a separate document.
- Team to review the detail requirements at theme level and brainstorm on the technical approach
- Conduct Reveals with the product owners and the entire project team to review progress
- Team to create technical approach document(s) by theme
- The purpose is to document the decisions made by the developers and the architect
- In lieu of detail technical specifications, we recommend, data and process flow diagrams, architecture diagrams (e.g. if a 3 tier architecture, components by tier, web services architecture etc)
- Create product backlog for implementation
- Stories by themes created by the product owner
- Stories estimated by the team – A story should ideally be 3-5 days of effort
- Team to create pre-requisite technical (plumbing/architecture) stories for the functional stories
- Conversation with the product owner on total effort being spent by theme (and if it has an impact on the project schedule, revise the project schedule and get approval from stakeholders)
- Revise the Release Plan
Iteration Zero – Get Ready for Development
This, Iteration Zero, was a brand new phase for the development lifecycle. The following were the guidelines:
- Project created in source code repository
- Foundational technical proof of concept provided (this could overlap with technical feasibility)
- Test driven development and continuous build infrastructure in place
- Check licenses of all Open Source software for compliance and verification of all 3rd party software and versions to be used
- Test strategy and planning
- Setup environments
- One of the environments should match in setup/configuration to production
- Additional environments that might be needed: Operations testing, UAT, Automated regression testing
The Development phase in the current product development methodology would now be explicitly called the Iterative Development phase. The guidelines for this phase are below:
- Daily Scrum meetings and daily feedback to the team on progress with iteration burn down chart needs to occur.
- Team iteration planning for the upcoming iterations should be occurring
- Iteration tracking should be done by the Scrum Master
- A “working” product delivered with every iteration. “Working” being defined as being able to be tested and integrated, but not yet pushed to production. It may take several completed features before a release is pushed into production.
- Cross-functional team reveals need to occur to demonstrate new functionality
- Team retrospectives must be conducted by the Scrum Master to discuss what went well and what needs improvement
- It’s important for Agile teams to discuss operating mechanisms like the ones listed below. These are provided as examples only for guidance:
- Encourage separation of environments to ensure the team truly has a working product every iteration e.g. Developers should not be performing demonstrations of code from their own workstation at the team reveals
- BA/QA should acceptance test every story before its considered ‘done’
- Developers should not have access to the acceptance test environment. Software should be deployed automatically and the software is required to work in any environment without the team configuring it manually.
- In order for a story to be considered complete, it needs to work in an environment other than the developer’s workstation.
- Story should only count towards the velocity of the iteration if the story passes BA/QA acceptance test i.e. meets the ‘Done’ criteria
- Code complete at the end of development cycle.
- Product defects should be handled in the following manner:
- Defects should be part of backlog grooming
- Defect triage with the product owner needs to occur in order to prioritize defects
- Critical – handle right away, take priority over story
- High – schedule in the upcoming iteration
- Normal – schedule with product owner’s feedback
- Defect iterations should be scheduled in order to catch-up on defects if defect backlog gets too big
…At this point during the presentation, time ran out. We would have to meet again to discuss the feedback from senior leadership and what the planned next steps needed to be to continue the transformation.