Programming is Quite Literally Writing
This is an excerpt from a post on Slashdot about what certifications are advantageous to have for a programmer. Emphasis is mine.
I swtiched jobs from being a computer programmer to being an ESL teacher in Japan. Japan is somewhat famous for churning out students who know a lot about English, but can't order a drink at Mac Donald's. We used to have a name for those kinds of people with regard to programming languages: language laywers. They can answer any question you put to them about a programming language, but couldn't program to save their life. These people often make it past job interviews easily, but then turn out to be huge disappointments when they actually get down to work. I've read a lot about this problem, but the more I look at it, the more I realise that these disabled programmers are just like my students. They have a vocabulary of 5000 words, know every grammar rule in the book but just can't speak.
My current theory is that programming is quite literally writing. The vast majority of programming is not conceptually difficult (contrary to what a lot of people would have you believe). We only make it difficult because we suck at writing. The vast majority of programmers aren't fluent, and don't even have a desire to be fluent. They don't read other people's code. They don't recognise or use idioms. They don't think in the programming language. Most code sucks because we have the fluency equivalent of 3 year olds trying to write a novel. And so our programs are needlessly complex.
As someone who has experience with both English education in Japan and computer programming, I have a couple thoughts on this.
This problem is not independent to Computer Science. I think the 'disabled' programmers and English speakers in this post are indicative of a larger problem in our society. We tend to confuse rhetoric with competency, and many educational avenues know this and take advantage of it. We're an image-based culture, and rhetoric is a vanity of skill.
I agree that programming is quite literally writing, but to really understand that I believe you have to learn and become proficient in a different language, as in the case of the poster. Once you can look at the English language from the outside, that's when the connections between programming become apparent.