Sunday, May 11, 2014

deeply encoding real-world knowledge and experience

Why code?

That might seem like a strange question for someone like myself to be asking, but it's an important one.

It has become clear to many educators that some facility with data structures, algorithms, and user interfaces has become an important aspect of literacy. While this is a welcome development, it is nevertheless important to ask "to what end?"

Is it necessary, or even desirable, for all of today's K-12 students to grow up to be programmers? Clearly not. Not only are there many other positions which will need to be filled, but, beyond relatively trivial examples, programming is a subtle craft requiring a concurrence of aptitude, attitude, and knowledge to achieve useful results, and most people who are not professional programmers, even if they know enough to put together working code, are, in most instances, better off leaving the coding to the professionals.

Nevertheless, early exposure can tune one's attitude, and improve one's aptitude and one's chances for accumulating the necessary knowledge. At least as importantly, it will also serve to identify those with a particular gift for coding sooner than would otherwise be the case. But there is value in that exposure that has very little to do with preparation for direct involvement in future programming projects, and a great deal to do with learning to think rationally and to communicate with precision.

Those skills are generally applicable, in all manner of vocations, for reasons having nothing to do with computing, but they become particularly important as decisions formerly made and tasks formerly performed by humans become the purview of machines, whether computers or robots.

For each such real-world context into which some degree of automation is to be introduced, it is vital that there be at least one person who is adept or able to interpret for those who are, and possesses the clarity of thought and expression to guide those who are tasked with developing those cybernetic systems. Without such guidance, in the vast majority of cases, automation also means a sacrifice of competence, as even senior engineers are rarely also domain experts, outside of their specialities, which may or may not apply to the project at hand.

By insisting that all students have some exposure to programming, we are improving the chances of such a person being available to guide the next expansion of the domain of automation, and the next, and the next, and thereby improve the chances that the knowledge and skills of contextual experts will be preserved in the process.

No comments: