When you work in teams, you will need to deal with drift.
When you work in team-based product development, you will need to deal with drift.
By drift, I mean an increasing mismatch in understanding about:
- the problem we’re trying to solve;
- the solution we’re attempting;
- each other and how to relate.
Drift in shared understanding creates confusion, mistakes, and generally a bad working experience.
Drift also happens in larger-scale programming.
Drift also occurs in larger-scale programming, where “larger-scale” means more than one programmer. Code diverges as individual programmers work in separate workspaces or branches.
Programmers typically describe this problem as “integration” and there are well-known techniques (daily/nightly builds, continuous integration) to address it.
Daily standups are daily builds for team understanding.
Daily standups ensure understanding is integrated across a team at least once a day.
If daily standups are like daily builds, then whole team programming (aka mobbing / ensemble) is like continuous integration. This is why whole team programming practitioners typically question the value of daily standups.
NOTE: I’d also consider frequent pair rotation to be pretty close to continuous integration of understanding.
Continuous integration on the team; daily sync across teams.
Even if you are continuously integrating team understanding with whole team programming or frequent pair rotation, this doesn’t mean there’s no role for a daily standup. Even if we continuously integrate on a team, it’s unlikely we’re continuously integrating across teams, nor would we necessarily want to.
My recommendation: continuous integration of understanding on teams (through frequent pair rotation or whole team programming); regular syncs (daily if appropriate) across teams.