Most agile posts I see are about finding the right bargain about this question:
When should I gather requirements/specify/test/merge to main line/document/integrate/deploy/communicate progress to customers/<insert any phase gate you’re used to and concerned about when you think about iterative/continuous software development>?
The answer is: always!
If it hurts, do it often. It there is risk, do it often.
I won’t go through every possible question, you’ll find them in every consultant’s blog. There are two short answers to all of them:
- It depends: from your situation to the ideal one, there is a gap. You must deal with it and find the right trade-off.
- Do everything more often. Every time you delay something, like working on a branch, you don’t decrease risk: by delaying risk, you increase risk.
These answers come together It’s an and, not a xor.
The ideal situation is: every character you change in your code works, brings value, is crystal clear to developers and users, and instantly available to your stakeholders. This is ideal. But we can be ambitious: it is the goal. Everything we do must tend towards this goal.