Time and time again the wisdom of having a good release and iteration planning methodology comes to the forefront. This becomes incredibly important on a large complex project or one where the sky is the limit on what the project could cover (i.e. client is coming up with new ideas daily).
The reasons are simple:
- Focus, and
- Reduced complexity over the short-term.
Worrying about the design of the entire application up front is time consuming, likely to become dated and most significantly contributes to lack of focus and stress for a development team… where do you begin?
The solution is conceptually simple but requires discipline. Have an overall release plan (very rough and subject to change) for the overall project. For the first and subsequent iterations, decide on which stories will be included at the start of each iteration based on business value. The actual implementation of the stories is subject to discussion and change during the iteration, but no new stories can be added until the next iteration.
Then the development team and client can focus on accomplishing smaller, more manageable problems first, without the distraction of trying to grasp every nuance of every idea in the release plan. The simplest solution that could work applies here. Don’t try to build out everything you “may” need until you actually need it.
As well, you start to flesh out your understanding of the domain and the domain language that is essential to overall success. This common language between developers and business people facilitates more accurate and meaningful communication rather than the more traditional method of translation between two languages… business and development.
At the beginning of each subsequent iteration, the client decides which stories to accomplish next. If your iterations are short and have concrete deliverables, the client then quickly becomes accustomed to seeing value in the process and is very likely to want to follow it in the future.
Why does this potentially work so well?
- First, it’s following the proven methodology of breaking big problems into smaller ones until each problem is solvable, that we have all learned (hopefully) from early on,
- Second, it takes away the pressure of worrying about too much at once and allows the team to achieve small victories that allow for developing momentum for a big win in the end… feeling good about accomplishments instead of overwhelmed by what needs to be done long term, and
- It avoids the procrastination factor by getting measurable results early… a big problem and lots of time will end up causing the majority of the work to get displaced to near the end in non-iterative ventures.
Managing all the big picture worries stays with the project manager and management, not the implementers.