|In order to build a Engine that is useful to more then one game or useful even for one game you should know what goes into a game first. You should have experience building a game first or else you are going in blind.|
I also agree on that, though you should also know your
game's specific needs, otherwise you will turn out with a collection of jumbled subroutines which don't seem to fit together. I believe you should not try to built a full on multipurpose engine for the sake of it, that is the mistake of a lot of beginners.
Only focus on your games needs for the time being.
Planning the engine's architecture takes time as well, what I do is write out the whole structure on a piece of paper, figuring out how the rendering pipeline will be structured (vertex buffers, pixel buffers, shaders ect.), and other subsystems such as sound, physics and AI.
If you are planning on building an engine from scratch, build it alongside a game!!!
One other advantage of building a game engine other than using another one is if you find a bug in the engine, it is easier to iron out the bug with your own than one you do not know the ins and outs of.
I have used the Irrlicht game engine before, and it is nice and stable, suited my purpose. Unless you are making an engine for something like learning experience, if there is already an engine out their that fulfils your needs, use that...it saves a bunch of time and you can actually focus on writing the game.