Shanagram writes “that we do not need to understand code to understand machines. Many of her points are valid, particularly about using some discretion online. I agree that you don’t need to have in depth technical knowledge to survive in the digital age, but in my opinion that is not the main reason to learn programming. ~
The most significant part of learning to program is learning to think in terms of processes. In a [blog post] calling for broad programming education, pozorvlak proposes the term “algorate” as the term for algorithmic literacy. Even apart from the value of understanding your computer better, thinking of the world in terms of processes is extremely powerful. For example, to understand the implications of global warming you need to construct some systemic model in your head. With some experience in programming, you can begin thinking of what variables influence climate (and appreciate how vastly complex it is). One of the links in the course bibliography is this fantastic [TED talk] about how algorithms shape our world. To really wrestle with these ideas, which will only become more important, I think you need a certain level of programming experience. [blog post]: http://pozorvlak.livejournal.com/169225.html [TED talk]: http://www.ted.com/talks/kevin_slavin_how_algorithms_shape_our_world.html
The specific syntax of any given language is not the important thing to learn, and communicating with a computer is just a useful side effect. Just as linguistics teaches that literacy in any language changes the way the brain works, I argue that learning to think in a structured, algorithmic manner changes the way you think.