I disagree a bit. Code is the precision vehicle. A majority of our job is problem solving; some problems can be solved generally, other problems require precision. Not all programmers will ever encounter a problem that requires precision solutions.
> I also maintain that for a lot of the programming that makes the world go round, it's not that hard. People just convince themselves they won't be able to.
I also disagree on this. I've taught a good number of people to code to different degrees and I can confidently say that not everyone is going to have an appetite for this as a job or hobby. That's to say, hobby coding is different from career coding, the incentives are different, and attract/require different personality characteristics to be successful. I think infantilizing programming does no one any favors.
I like to describe it as a job where you solve many, many tiny problems and put them together. You must like breaking big problems down into small ones, coordinating and communicating asynchronously and clearly, and have a good head on your shoulders to tolerate the literal endless stream of failure that you'll encounter along the way without being too dissuaded. Lastly, you'll constantly be learning something new; sometimes learning about the same old things, other times learning things far outside your domain. The single most important tool in a programmers war chest is not knowing all the things, but where to look and how to discern good information from bad or so-so information.