“Every developer needs an annotation-processor minor.”
Do developers need to learn compiler phases?
Elevator answer
No. You should read “two mappers match Order → Invoice,” fix one declaration, and return to Java. You should not need a minor in compiler archaeology.
3 coffee-machine misconceptions
“Hide all errors behind a generic failure.”
“The only diagnostic is a failing CI badge.”
The real explanation
An application developer needs an error such as “ChargeCard accepts Payment, but this branch produces RejectedOrder.” They do not need to know which compiler pass discovered it or why an intermediate representation is feeling introspective. Diagnostics should point to the broken flow promise and the declaration that can fix it.
TPF’s compiler is successful when it turns those architectural mismatches into direct feedback about the model. Specialists maintain the internals; users understand the contracts they are declaring and the action a diagnostic asks them to take.
The trade-off is learning a new vocabulary for flow and boundary semantics. That is appropriate when those semantics are part of the application; compiler trivia is not.
Trade-offs
TPF gains enforceable contracts. It gives up purely runtime discovery of mismatches.
When TPF is not a good fit
If a team needs every integration choice to remain informal and late-bound, compiler-backed contracts will feel like friction.