Software is becoming a critical layer of all our lives. It is the language of our world. In the future, not knowing the language of computers will be as challenging as being illiterate or innumerate are today.
Will every job in the future involve programming? No. But it is still crucial that every child learns to code.
This is not primarily about equipping the next generation to work as software engineers, it is about promoting computational thinking. Computational thinking is how software engineers solve problems. It combines mathematics, logic and algorithms, and teaches you a new way to think about the world.
Computational thinking teaches you how to tackle large problems by breaking them down into a sequence of smaller, more manageable problems. It allows you to tackle complex problems in efficient ways that operate at huge scale. It involves creating models of the real world with a suitable level of abstraction, and focus on the most pertinent aspects. It helps you go from specific solutions to general ones.
The applications of this approach stretch beyond writing software. Fields as diverse as mechanical engineering, fluid mechanics, physics, biology, archeology and music are applying the computational approach. In business we are beginning to understand that markets often follow rules that can be discerned using computational analysis.
Computational thinking is a skill that everyone should learn. Even if you never become a professional software engineer, you will benefit from knowing how to think this way. It will help you understand and master technology of all sorts and solve problems in almost any discipline.