I used to preheat but I decided it was one extra step that I didn't need to do. I just took about 3 batches to experiment and find out how much hotter my water had to be if I didn't. I hit my mash temps within a degree.
My MT temp can vary from the teens to 90*(70 qt. Extreme w/copper manifold, stored in unheated garage) so I preheat. Otherwise I would use your SOP.
Interesting. Mine stays in the garage, which can be anywhere from 35-90F and it doesn't seem to have much effect.
My grain and tun temperature can vary from 45-70°F and I can miss my strike temperature by a few degrees if I don't try to account for these. Occasionally even when I do account for them I'll miss by a couple degrees.
I've done the "add too hot-water to tun until it hits strike temperature" technique, which works well, but sometimes wastes a lot of time waiting for the temperature to come down.
The technique I've been using most recently, that allows me to quickly hit temperature every time, is to crush the grain into the tun, add all but the last half gallon of the strike water and stir. Once it's stirred in, I take the temperature, which should be about 2°F low. If so, adding the rest of my mash water should hit my mash temperature. If I'm already at mash temperature, I save the remaining water for the sparge. If the temperature is more than 2°F low, adding the remaining water at Strike Temperature won't hit my mash target, so I heat that last half gallon to the higher temperature that will.
I never have problems with dough-balls unless I use Oatmeal. If the grain is being a little temperamental about wetting thoroughly and quickly, I close the tun and stir again in 5 minutes, at which point it's usually not a problem.