I guess the really hard part about game engineers isn't writing them, it's making them portable to more than platform, which is the really boring, tedious, expensive part. this is why I'll never write a game engine.
Unless there is absolutely no abstraction, e.g.: with OpenGL being called from random parts of the game, porting is a matter of mostly gluing two interfaces together.