"...Some of the very properties of computer languages that can be cumbersome and difficult to master — such as the need to specify everything explicitly, to consider exceptions, to understand recursion and to think through downstream consequences — are among the most valuable for thinking..."
http://www.npr.org/blogs/13.7/2014/06/09/320309576/learn-to-code-learn-to-think