I'm new to blender and I wonder what's the best way, with the least side effects, to add more detail to a model's face. It seems that the loop cut is the cleanest way of doing it but at the cost of adding unnecessary geometry. Subdivide seems like the obvious solution to a lot of problems but then you can't use a lot of features as it can create ngons. So when do you use it?
When modelling something you would always add minimal geometry (eg. loop cuts) and work with it until the shape of the object cannot be further improved with the current geometry! This is very important, as if you start adding too much geometry initially, you will get lost and you make your task exponentially harder, because you will have to manually manipulate so much more verts.
Now, in most cases you should avoid subdividing altogether, before you are finished modelling, in a sense. Meaning that with your modelling you would have laid out the optimal topology of the model and would have made sure that every vertex and every face is absolutely necessary for describing the object and maintaining the topology! Only then you would subdivide, to get a smoother result (as your object would be approximated at a higher resolution).
Having said that, don't consider the subdivision taboo and absolutely neglect it. Usually it is good practice to check the topology of your mesh, every once in a while, by subdividing it and seeing if it flows and looks natural... this way you can also spot duplicate vertices or holes in the mesh.
I am not a pro modeler and maybe someone could argue this is not always the case, however those are some tips that help me.
Subdivision is OK when you need the geometry some examples could be:
Particle Systems (here used to emit buildings)
In general loop-cuts should be the way to go, they allow later refinement because they follow the mesh's topology (most important in organic modelling).
In a subdivided mesh you would have to adjust each and every vertex, instead of selecting a loop as shown here:
It depends, like architectural buildings and that kind of not so curving objects, no problem to use ngons and triangles, ngons help a lot when modeling those building. Flat shading is the key when rendering those objects. Example: left side object has flat shadind and 24 vertices, including ngons, right side has smooth shading and 156 vertices, no ngons. When rendering they looks identical. People use many times smooth shading and add unnecessary loopcuts to objects what does not need smooth shading, its a habbit.