← Back to the library
Operations and improvement

Pdca improvement

Iterative PDCA cycle for systematic experimentation and continuous improvement

Works with the context you provideVersion 2.0.0

# Plan-Do-Check-Act (PDCA)

Apply PDCA cycle for continuous improvement through iterative problem-solving and process optimization.

Description

Four-phase iterative cycle: Plan (identify and analyze), Do (implement changes), Check (measure results), Act (standardize or adjust). Enables systematic experimentation and improvement.

Usage

`/plan-do-check-act [improvement_goal]`

Variables

  • GOAL: Improvement target or problem to address (default: prompt for input)
  • CYCLE_NUMBER: Which PDCA iteration (default: 1)

Steps

Phase 1: PLAN

  1. Define the problem or improvement goal
  2. Analyze current state (baseline metrics)
  3. Identify root causes (use `/why` or `/cause-and-effect`)
  4. Develop hypothesis: "If we change X, Y will improve"
  5. Design experiment: what to change, how to measure success
  6. Set success criteria (measurable targets)

Phase 2: DO

  1. Implement the planned change (small scale first)
  2. Document what was actually done
  3. Record any deviations from plan
  4. Collect data throughout implementation
  5. Note unexpected observations

Phase 3: CHECK

  1. Measure results against success criteria
  2. Compare to baseline (before vs. after)
  3. Analyze data: did hypothesis hold?
  4. Identify what worked and what didn't
  5. Document learnings and insights

Phase 4: ACT

1. **If successful**: Standardize the change - Update documentation - Train team - Create checklist/automation - Monitor for regression 2. **If unsuccessful**: Learn and adjust - Understand why it failed - Refine hypothesis - Start new PDCA cycle with adjusted plan 3. **If partially successful**: - Standardize what worked - Plan next cycle for remaining issues

Examples

Example 1: Reducing Build Time

``` CYCLE 1 ─────── PLAN: Problem: Docker build takes 45 minutes Current State: Full rebuild every time, no layer caching Root Cause: Package manager cache not preserved between builds Hypothesis: Caching dependencies will reduce build to <10 minutes Change: Add layer caching for package.json + node_modules Success Criteria: Build time <10 minutes on unchanged dependencies

DO: - Restructured Dockerfile: COPY package*.json before src files - Added .dockerignore for node_modules - Configured CI cache for Docker layers - Tested on 3 builds

CHECK: Results: - Unchanged dependencies: 8 minutes ✓ (was 45) - Changed dependencies: 12 minutes (was 45) - Fresh builds: 45 minutes (same, expected) Analysis: 82% reduction on cached builds, hypothesis confirmed

ACT: Standardize: ✓ Merged Dockerfile changes ✓ Updated CI pipeline config ✓ Documented in README ✓ Added build time monitoring

New Problem: 12 minutes still slow when deps change → Start CYCLE 2

CYCLE 2 ─────── PLAN: Problem: Build still 12 min when dependencies change Current State: npm install rebuilds all packages Root Cause: Some packages compile from source Hypothesis: Pre-built binaries will reduce to <5 minutes Change: Use npm ci instead of install, configure binary mirrors Success Criteria: Build <5 minutes on dependency changes

DO: - Changed to npm ci (uses package-lock.json) - Added .npmrc with binary mirror configs - Tested across 5 dependency updates

CHECK: Results: - Dependency changes: 4.5 minutes ✓ (was 12) - Compilation errors reduced to 0 (was 3) Analysis: npm ci faster + more reliable, hypothesis confirmed

ACT: Standardize: ✓ Use npm ci everywhere (local + CI) ✓ Committed .npmrc ✓ Updated developer onboarding docs

Total improvement: 45min → 4.5min (90% reduction) ✓ PDCA complete, monitor for 2 weeks ```

Example 2: Reducing Production Bugs

``` CYCLE 1 ─────── PLAN: Problem: 8 production bugs per month Current State: Manual testing only, no automated tests Root Cause: Regressions not caught before release Hypothesis: Adding integration tests will reduce bugs by 50% Change: Implement integration test suite for critical paths Success Criteria: <4 bugs per month after 1 month

DO: Week 1-2: Wrote integration tests for: - User authentication flow - Payment processing - Data export Week 3: Set up CI to run tests Week 4: Team training on test writing Coverage: 3 critical paths (was 0)

CHECK: Results after 1 month: - Production bugs: 6 (was 8) - Bugs caught in CI: 4 - Test failures (false positives): 2 Analysis: 25% reduction, not 50% target Insight: Bugs are in areas without tests yet

ACT: Partially successful: ✓ Keep existing tests (prevented 4 bugs) ✓ Fix flaky tests

Adjust for CYCLE 2: - Expand test coverage to all user flows - Add tests for bug-prone areas → Start CYCLE 2

CYCLE 2 ─────── PLAN: Problem: Still 6 bugs/month, need <4 Current State: 3 critical paths tested, 12 paths total Root Cause: UI interaction bugs not covered by integration tests Hypothesis: E2E tests for all user flows will reach <4 bugs Change: Add E2E tests for remaining 9 flows Success Criteria: <4 bugs per month, 80% coverage

DO: Week 1-3: Added E2E tests for all user flows Week 4: Set up visual regression testing Coverage: 12/12 user flows (was 3/12)

CHECK: Results after 1 month: - Production bugs: 3 ✓ (was 6) - Bugs caught in CI: 8 (was 4) - Test maintenance time: 3 hours/week Analysis: Target achieved! 62% reduction from baseline

ACT: Standardize: ✓ Made tests required for all PRs ✓ Added test checklist to PR template ✓ Scheduled weekly test review ✓ Created runbook for test maintenance

Monitor: Track bug rate and test effectiveness monthly ✓ PDCA complete ```

Example 3: Improving Code Review Speed

``` PLAN: Problem: PRs take 3 days average to merge Current State: Manual review, no automation Root Cause: Reviewers wait to see if CI passes before reviewing Hypothesis: Auto-review + faster CI will reduce to <1 day Change: Add automated checks + split long CI jobs Success Criteria: Average time to merge <1 day (8 hours)

DO: - Set up automated linter checks (fail fast) - Split test suite into parallel jobs - Added PR template with self-review checklist - CI time: 45min → 15min - Tracked PR merge time for 2 weeks

CHECK: Results: - Average time to merge: 1.5 days (was 3) - Time waiting for CI: 15min (was 45min) - Time waiting for review: 1.3 days (was 2+ days) Analysis: CI faster, but review still bottleneck

ACT: Partially successful: ✓ Keep fast CI improvements

Insight: Real bottleneck is reviewer availability, not CI Adjust for new PDCA: - Focus on reviewer availability/notification - Consider rotating review assignments → Start new PDCA cycle with different hypothesis ```

Notes

  • Start with small, measurable changes (not big overhauls)
  • PDCA is iterative—multiple cycles normal
  • Failed experiments are learning opportunities
  • Document everything: easier to see patterns across cycles
  • Success criteria must be measurable (not subjective)
  • Phase 4 "Act" determines next cycle or completion
  • If stuck after 3 cycles, revisit root cause analysis
  • PDCA works for technical and process improvements
  • Use `/analyse-problem` (A3) for comprehensive documentation