One of my strongest views is about the teachability of writing, math, programming. It is total bullshit when an otherwise smart person says that they "can't write," "can't do math," or "can't program."
On writing: just as mathematical ability is the sign of reasoning ability, good writing reflects clear thinking. Clear thinking can occur naturally or with the help of various constructs for aiding clear thinking. Some people become good writers naturally; others need to see more examples, get more feedback, and have more practice. While you cannot teach style, you can teach a general command of the English language.
On math: if you can reason, you can do math. Most people are able to reason about things they care about, so most people should be able to do math. Many people have a complex that they "can't do math," probably because they were not taught math very well. I am a firm believer in this "math complex" because I have convinced at least a couple of people that they have "math complexes" and they have gone on to be quite successful (and proficient in math!) after this change.
On programming: a set of good programming skills is isomorphic to a set of good writing skills: you need to be able to express what you want clearly, concisely, and efficiently. You need to know your tools (C, Java, Haskell vs. the English language) and how to use them. Again, you can't make any old goon into an elite superhacker with style, but you can make any goon a proficient programmer.
Lack of proficiency in any of the three reflects either a lack of interest (very likely, especially in the case of the third) and/or a failure of education (also likely).