Why Program?

Why Program?

Learning to program is increasingly important in a variety of fields. In truth, as physical and mental operations become automated, virtually every field of human endeavor will be reliant on software and the people who create it.

Throughout history, the economy (and those activities which it drives—such as politics, social mobility, and innovation) has been rooted in resources. In the agricultural era, these resources were typically those that could be produced by farming, ranching, mining, fishing, etc. This was succeeded by the Industrial Age, in which resources such as coal, oil, steel, and mass labor were key. Many refer to the current time as the Information Age, where information, represented digitally, is the major driving force of the economy. In this age, those companies that are able to collect, manipulate, and analyze information (data) are typically based on the work of (and many times, even founded by) computer programmers/software engineers.

Beyond this, some have speculated that we are on the cusp of a new economic model, the Imagination Age. Whereas programming is integral to function in the Information Age, in the Imagination Age, creativity is the primary resource, and the ability to code will be foundational.

Computational Artifacts

Computational Thinking Illustrated

Programming allows us to create computational artifacts like programs, images, audio, video, and Web pages and modify them with enhanced detail and precision. Whereas a graphic designer can create images, a programmer breathes life into those creations through an appropriate programming language. The functionality and appropriateness of a computational artifact may be related to how it is used or perceived. Different programming languages have been developed to assist in the creation of specific computation artifacts. For example, Java is useful when building server-side applications, video games, and mobile apps. JavaScript, on the other hand, is more useful in web development. SQL (Structured Query Language) contains the ability to sort and filter data from massive databases. Even though languages may be developed for different purposes, nearly all programming languages are equivalent when expressing an algorithm.