This is also where I get frustrated.
I'm taught about the CLT but every place I think I might use it, the samples aren't really IDD when you look hard enough, so it doesn't apply.
Computer benchmarking (which is where I'm usually trying to apply statistics) is the classic example. One iteration changes the state of the computer for the next iteration. They aren't remotely IDD, but people still try to claim the CLT. Seems like all their stats beyond that point is broken.
I'd assume that computer benchmarks have very low correlation between runs, unless you leak ram or your components don't keep a stable temperature. So in that case the CLT seems to apply just fine.
And they are not in a computer program. The state of, to just give one example, the processor cache depends on what happened in the previous run.
We have all this rigour in how statistical techniques are applied, and we make black or white decisions based on the numbers that come out of them, but at their very foundation we're saying 'whatever I'll just pretend this rule applies it's probably fine'. How can we build on that flawed foundation? I don't get it!
"All models are wrong, but some models are useful." Just remember that there's some imprecision in the answer a model gives you, and keep that fact in mind when applying that answer to make real-world decisions.