You sound like engine developers just produce those abstractions out of thin air and they work perfectly out of the box. They need to work on them and waste their time on duplicating efforts. Bugs that plague Unreal Engine for instance demonstrate how far from trivial this is.