The best advice I ever got came from Renée Watkins. She gave me hard time over some software I had written to book FX trading. She kept asking me for detail upon detail and I just didn't know all the answers. Eventually she recommended that I ask WHY? It took this to heart and it has helped me no end! If you don't know why something is supposed to work this way or that then whatever you code will not fit the expectations of your user.
It also ties in with another favourite from work: "No surprises ". If you ask enough probing questions then you will understand the problem being solved and will avoid many unpleasant surprises.