Bassam Ismail

Notes from engineering and delivery — the stories behind the work.

Engineering

Process Refinement for Development Standup and Code Review

5 min read

I was looking at a note about our development standup process when the shape of the problem finally became clear: we had been treating standup as the main container for engineering communication, while most of the useful detail was actually code review context. The fix was to stop forcing everything into a meeting-shaped update and rewrite the process around the work itself.

The outcome was simple: code-centric updates became the primary flow, and standup moved into a smaller role as an add-on for coordination, blockers, and decisions that needed people in the same place. We started collecting the concrete details people were already sharing and folded them into a rewrite of the process with a teammate and the rest of the group reviewing the changes.

Development Standup Process Starts With The Work

The old framing made standup carry too much weight. A typical update could include what someone built, what changed in a pull request, what review feedback was pending, which branch was blocked, and whether another person needed to look at something. That is too much for a spoken update, and it is the wrong place for detail someone may need three hours later.

The useful signal was closer to the code. A pull request already has the files, the diff, the tests, and the reviewer thread. A standup message can point to that work, but it should not become the source of truth for it.

So the rewrite started from a different question: what information helps work move forward with the least translation?

For us, that meant separating three kinds of communication:

  1. Code review context: what changed, why it changed, and what needs review.
  2. Standup coordination: what is blocked, what changed since yesterday, and where help is needed.
  3. Process feedback: what is unclear or missing from the workflow itself.

Once we named those separately, the structure became easier to improve.

The Short Solution Summary

The practical change was this:

  • Keep detailed implementation notes close to the pull request.
  • Use standup for coordination, not for replaying the diff.
  • Collect recurring confusion and feed it into the process rewrite.
  • Make the rewrite explicit enough that new engineers can follow it without asking for the unwritten rules.

A working standup update became short and link-driven:

Yesterday: Finished the API validation changes in PR #482.
Today: Addressing review feedback and adding missing test cases.
Blocked: Need confirmation on whether empty metadata should be rejected or normalized.
Links: PR #482, discussion thread in #dev-review

The pull request carried the detail:

## What changed
- Added request validation for metadata payloads
- Normalized missing optional fields before persistence
- Updated failing fixture coverage
 
## Why
The existing handler accepted inconsistent payload shapes, which made downstream review harder.
 
## Review focus
- Validation behavior for empty metadata
- Test coverage around optional fields
- Naming of the normalization helper
 
## Verified
npm test -- validation.spec.ts
npm run lint

That split looks minor, but it changed the pressure on the meeting. Standup no longer had to be the place where everyone understood every implementation detail. It only had to reveal where coordination was needed.

What We Included In The Rewrite

The rewrite was not about making the process heavier. It was about removing ambiguity. The first draft covered the places where people were already improvising:

# Development Communication Flow
 
## Code updates
Use the pull request as the source of truth for implementation context.
Every PR should include:
- What changed
- Why it changed
- What reviewers should focus on
- How it was verified
 
## Standup updates
Use standup for coordination only.
Include:
- Completed work since the last update
- Current focus
- Blockers or decisions needed
- Links to PRs, tickets, or review threads
 
## Review feedback
Leave durable feedback in the PR.
Use chat only for clarification, pairing, or time-sensitive review routing.
 
## Process feedback
If the workflow is unclear, share the specific example with the process owners so it can be included in the next rewrite.

That last section mattered more than I expected. People often experience process friction as a private nuisance: a confusing review request, an unclear handoff, a standup update that creates more questions than answers. Unless there is an explicit place to send those examples, they rarely make it into the next version of the process.

In our case, the instruction was direct: keep sharing these details, and we will include them in the rewrite. That gave the rewrite a source of truth beyond opinion. It let the new process reflect actual failure points instead of an idealized version of how engineers communicate.

Why Standup Became An Add-On

Calling standup an add-on can sound like reducing its importance. I do not see it that way.

A meeting is expensive because it gathers attention at the same time. That makes it useful for surfacing blockers, resolving ambiguity, and routing help. It makes it poor for long-lived technical detail. If someone needs to understand why a validation path changed, they should not have to reconstruct it from yesterday's spoken update.

Once code review became the center of the process, standup became cleaner. The meeting could answer a smaller set of questions:

  • Is anyone blocked?
  • Does any work need a reviewer?
  • Are there decisions that need synchronous discussion?
  • Has anything changed that affects another person today?

That is enough. Anything more belongs in the artifact where the work is happening.

The Durable Lesson

The lesson I took from this rewrite is that engineering communication should follow the artifact with the longest useful life. Implementation detail belongs in the pull request. Coordination belongs in standup. Process friction belongs in the rewrite backlog.

When those boundaries are blurry, every conversation tries to do everything. When they are clear, the team gets faster without asking people to communicate more. The work becomes easier to review, meetings become easier to attend, and the next process change starts from real examples instead of memory.