Light is everything. If you got flat results with a normally (and properly) exposed, processed, and printed negative, then you shot something flat. If you didn't shoot something flat, but got something flat, one or more of the above is to blame (exposure, processing, printing).
The key is learning to judge the contrast of every situation you shoot, so you know what to expect on the prints, and how to take steps to change that if necessary.
Getting away from the in-camera meter to a properly-employed incident meter always helps a lot too. In-camera meters are the Devil. They complicate and compromise exposure in 90 % of shooting situations IMHO.