Phase 00
Engineering Workflow,
Windows First
How professional developers move from
requirement to branch, code, verification,
debugging, review and deployable change.
Book 4 · Workflow, discipline and development habits
Course baseline: September 17, 2026 · Windows-first · Project-driven · Production-oriented
Contents
1. The engineering loop 7. Environment variables and secrets
2. Windows and PowerShell conventions 8. Git workflow
3. Repository discipline 9. Definition of done
4. Working-directory awareness 10. Documentation habits
5. Small verified changes 11. AI-assisted development rules
6. Debugging by layer
Phase 00 | Page 2 of 6
The engineering loop matters more
than typing speed
requirement, locate the responsible layer, make the smallest coherent change, verify behavior, and
preserve a clean history.
Requirement / bug report
Locate responsibility
Plan smallest vertical change
Implement
Run checks
Inspect runtime behavior
Commit coherent change
Figure 1 - Professional change loop - This loop is repeated from the first health endpoint to production deployment.
Windows-first command discipline
The course uses ordinary Windows PowerShell as the primary shell. Every command will say where it
runs. Paths containing spaces are quoted. Bash-only syntax is never silently mixed into PowerShell
instructions.
cd "C:\Projects\TaskFlow\apps\api"
Get-Location
pnpm run start:dev
Phase 00 | Page 3 of 6
THE WORKING DIRECTORY IS PART OF THE COMMAND
A correct command executed from the wrong workspace can produce a misleading package,
script or configuration error. Always include location in your debugging model.
User-profile tooling instead of unnecessary admin
rights
On restricted Windows machines, global package setup should prefer user-owned locations rather
than assuming Administrator privileges. The course will document permission failures such as
Corepack attempting writes under C:\Program Files\nodejs , then teach a user-profile installation
strategy when appropriate.
Repository discipline
- One responsibility per new file.
- No “utils” dumping ground when a specific module owns the behavior.
- Do not create a package simply because a packages/ directory exists.
- Commit the lockfile.
- Keep secrets out of Git.
- Run lint/typecheck/tests/build at meaningful checkpoints.
taskflow/ workspace
apps/web apps/api
Next.js NestJS + Fastify
packages/*
only when justified
Figure 2 - Repository responsibility map - The monorepo is a container for independently owned applications and later
shared packages.
Phase 00 | Page 4 of 6
Debugging by layer
When an error appears, avoid replacing whole files. First determine which layer can actually produce
the observed symptom.
Symptom First layer to inspect Example evidence
Button does nothing Browser/UI Console, event handler, disabled state.
Request blocked before API Browser/network DevTools Network, CORS message.
404/405 HTTP/controller routing Method/path mismatch.
401/403 Authentication/authorization Token/guard/permission logs.
400/422 Validation boundary DTO/schema error details.
409 Business rule/database constraint Unique conflict or domain rule.
500 Backend runtime/data access Server logs and stack trace.
Reproduce reliably
Inspect browser console/network
Confirm HTTP route and status
Inspect server log/request id
Inspect service decision
Inspect database query/constraint
Figure 3 - Debug from the outside inward - Evidence narrows the search area before code changes begin.
Environment variables and secrets
Configuration enters the course when a layer first needs it. Secrets never appear in screenshots,
example repositories or PDF source snippets. Public browser variables and server-only secrets are
treated differently.
Phase 00 | Page 5 of 6
# Example documentation only
DATABASE_URL="postgresql://..."
NEXT_PUBLIC_API_URL="http://localhost:4000"
Git workflow for learning and real projects
1. Start from a known-green main branch.
2. Create a focused branch for a coherent change.
3. Make small, verifiable commits.
4. Keep generated artifacts and secrets out of commits unless intentionally versioned.
5. Before merge: lint, typecheck, tests and production build.
6. Review the diff for accidental files and architecture drift.
Definition of done
□ Requirement is satisfied.
□ Expected behavior was manually verified.
□ Error/failure path is understood.
□ Lint passes.
□ Typecheck passes.
□ Relevant tests pass.
□ Production build passes when applicable.
□ No secret or debug artifact leaked.
□ Architecture documentation still matches reality.
AI-assisted development rules
AI can accelerate explanation, search, refactoring and test design, but it should not erase your
mental model. The course treats AI like a pair programmer: it may propose changes, but you should
be able to explain what layer changed, why the change is correct, and how you verified it.
RULE FOR THIS COURSE
Never accept a large generated patch as “correct” because it compiles. Read the diff, identify
the responsibility of every new file, and verify the behavior at the boundary that matters.
Phase 00 | Page 6 of 6