I'm the leader of a small team (a few programmers, plus product manager) practicing continuous delivery. The development stages for features are:
- Coding: A programmer prepares a branch with the feature, up to a specification. The feature is reviewed by Product Manager at the end of this stage.
- Code review: Implemented with merge requests. A fellow programmer looks at the code, points out issues, programmer works to fix them. When everything is OK, the feature is integrated to main development branch.
- Deployment: after passing the automated tests suite, the contents of main branch gets pushed to production servers. This currently happens twice a week.
For planning our work, we're using 2-week iterations - Product Manager proposes feature to work on, we estimate them, and based on that allocate them to programmers for the iteration. My questions are:
During an iteration, what should we commit to? Right now we're saying that by the end of iteration, the coding (stage 1) has to be finished. This is because there might be some delay between coding and review (since the reviewer is also working on something).
I'm a bit hesitant to include all 3 stages as required to finish, because this means by the end of iteration, everyone is working on code review, instead of the features following their development cycles unconstrained.
How much should be planned regarding delivery date? With the current setup, we can only say that the feature should be deployed sometime during the next 3 weeks (iteration + a window for code review and deployment). Can we do better? Should we?
Because of the above: how much should we plan regarding work ordering? Should we, for instance, say during which days which features will be worked on, and reviewed? Or specify a strict order in which the features will be worked on during an iteration? Or give the order as priorities, but allow more freedom?
Again, I don't want to constrain the programmers too much here. Detailed up-front planning doesn't sound very useful for me, and the actual ordering of work is something I'd rather give freedom at as well (perhaps with the priorities as a soft guideline). But I'm not sure if that makes the delivery date much more certain.