using AI as a software engineer


← back to notes

The pattern: AI is great at typing and summarizing. You’re responsible for the physics of production systems.

Category Use AI freely Use AI with guardrails Do manually (AI can assist, but you drive)
API work handler/controller scaffolds, DTOs, validation boilerplate, OpenAPI drafts error mapping, pagination/filter semantics, partial updates, backwards compatibility API contracts, semantics, versioning strategy, breaking-change decisions
Data layer simple queries, ORM mapping code, repository patterns complex SQL, query tuning, index suggestions data modeling, invariants, transaction boundaries, consistency decisions
Reliability basic timeouts/retry snippets, circuit breaker skeletons retry policies, idempotency, ordering guarantees, backpressure SLOs/SLAs, failure-mode design, incident playbooks
Security basic input validation patterns, safe string handling reminders auth flows (OAuth/JWT usage), threat modeling brainstorm authz model, permissions, secret handling, crypto choices, security review
Performance micro-optimizations suggestions caching strategy, hot-path tuning, connection pooling profiling/benchmarking in your env, capacity planning
Ops/Infra Dockerfile templates, k8s manifests drafts resource limits, autoscaling, rollout strategy production rollout plan, canary/rollback, cost tradeoffs
Testing unit tests, table-driven tests, fuzz/property ideas integration tests with real deps what to test (risk-based), acceptance criteria, test data strategy