....while children comfortably learn the WHAT (blocks or syntax) of programming languages and environments, the HOW and WHY is much harder as they construct programming solutions.
If the goal is to develop robust thinking skills while kids are being creative, collaborative, participatory and all that other good stuff, the focus of the learning needs to go beyond the tool, the syntax of a programming language and even the work products to the deeper thinking skills. While the fun features afforded by these programming environments make for great engagement, they often draw away focus to the artifacts, many of which employ relatively thin use of computational thinking.
The inadvertent peril posed by the “learn to code” mania and the cornucopia of websites advocated by avenues such as Code.org is that they may (unwisely) be equated to “CS education” for K-12 schools and educators lacking capacity and skills for teaching computing. While not so drastic, it is somewhat akin to confusing architecture with construction.
It also perpetuates the misconception that CS equals programming and that children should code for the sake of coding rather than giving due attention to other important reasons for why schools should want kids to program--to promote a way of thinking and problem solving, to use computing in intelligent ways in their future careers, and yes, possibly get excited about computer science as a discipline, and be primed for success should they choose to pursue CS.