I heard a great comment today about why we should teach programming to young children. Coding is a way to teach children about precision — how to think precisely, how to communicate precisely.
To teach this skill to very young students, computers are optional and may even serve to obscure the key lesson. You can, for example, teach a child to think like a programmer by asking him/her to program you to hammer in a nail. If he/she says, “first pick up a hammer” and you grab the hammer by pressing it against your chin and chest, the child will instantly correct you and say, “no, use your hand!” That correction, easily made, is a step toward precision and the kind of mindset that supports programming when the going gets tough, as it most certainly does when hammers and hands turn into Python and Java.