Use reflection for metadata-driven code while preserving type safety at public boundaries. Compare reflection with source generation, go generate, templates, and compiler-based analysis for repetitive or schema-driven work.