Situation: Our engineering organization voted to adopt strict TypeScript and ESLint standards across our frontend codebase, but a senior developer continued pushing pull requests with any types and disabling lint rules with inline comments.
Task: I needed to address this non-compliance constructively to protect codebase integrity without creating personal antagonism.
Action: I scheduled a 1-on-1 pairing session to understand their frustration. The engineer explained that resolving complex nested types was slowing down their delivery speed and feeling like an exercise in busywork. I showed empathy for their frustration and demonstrated how TypeScript utility types (like Pick, Omit, and auto-generated API types from our backend OpenAPI schema) actually automated type inference without manual typing. Together, we configured automated IDE plugins that provided instant inline auto-completion. I also introduced automated lint checks in CI that warned rather than blocked during an initial two-week transition window.
Result: Seeing how automated type generation sped up their workflow rather than hindering it, the engineer embraced the standards. Within a month, they became one of the strongest advocates for our type generation pipeline across the organization.