There’s no complicated reason they keep missing. You just missed it!
They suck. Plain and simple.
For forty years, Star Wars fans have come up with countless theories — from somewhat reasonable to downright whacky — to somehow explain why the Stormtroopers routinely miss our favorite good guys when they are shooting high-powered blasters from five feet away. Two of my favorite theories that are actually plausible are: they missed on purpose (see Tarkin: “This had better work”) and they miss Force users (see Chirrut: “The Force is with me”).
Well, knock it off. Have you people ever heard of Occam’s Razor? All things being equal, the simplest answer is probably the correct one:
Obi-Wan Kenobi lied to Luke.
We’ve racked our brains relentlessly trying to redeem these just plain awful soldiers. If you want to blame anybody, blame the Imperial boot camp. But I digress. We couldn’t come up with a valid solution because we always went into the argument with the assumption that Obi-Wan was telling the truth about stormtroopers being “so precise.” Unless you’re fake news, you know Obi-Wan is a pathological liar!
No he’s not! you want to say. I’d love to say that too, but just five minutes before he told Luke that “a young pupil of mine named Darth Vader” had killed his father. Point of view — yeah, right. If you believe that, I’ve got some ocean front property on Tatooine I’d love to sell you.
Old Ben already knew Luke harbored ill feelings towards the Empire and he wanted to use that to his advantage. At this point Luke still didn’t want to go to Alderaan, so Obi-Wan wanted the Imperials to sound as menacing as possible. That’s why he started telling horror stories about sharpshooting boogeymen. Of course Luke would want to join the Rebellion after hearing that.
I know you might be upset that the answer was in front of you this whole time and you missed it, but fret not; at least you won’t lose anymore sleep over this now. Obi-Wan, Master of the Force but not necessarily the Truth, lied to Luke.
And Stormtroopers suck.