(1) The tools (and documentation, tutorials, etc.) suck. There are hundreds of ways that development tools fail in terms of human factors. One simple one is that floating point numbers are input and output in base ten but internally handled with a base2 exponent. What that means is that '0.1', '0.2' and '0.3' don't really exist in the floating point system, and thus 0.1 + 0.2 != 0.3
Expose people to enough of those and they decide programming isn't for them. IBM mainframes had decimal point floating point math from the beginning. The rest of the industry is indifferent to the problem, I think it could only be woken up to it if it could be reframed like "this makes women and minorities feel programming isn't for them."
(2) You (all) suck. Programming requires a person to live in at least two worlds, one of which is the world of other people's requirements, one is the world inside the machine. Maybe that's a rare and special talent that neurotypical people lack.