There are useful mental analogies between pedestrian line-of-business CRUD apps and a compilers. I don't disagree with that thesis at all. But I have seen it taken too far. Many engineers abstract and generalize business requirements until they find them interesting, and then implement against those requirements. This is akin to how building architects abstract the designs of a house too far from how the inhabitant will live in it, in their personal goal of having an interesting system to build or design, in opposition to building the right thing in the right pattern language

Glamorize Your Problem Domain
from favicon