Very rarely is a computational artifact self-explanatory. A CPU made of microscopic transistors on silicon or a compiled binary program of 1’s and 0’s are both quite difficult to understand. Their forms are optimized for computational performance, not human comprehension. The design plan for the CPU or the source code of the program are more easily understood. But even these precursors don’t necessarily explain how they were made or why they work.
Computational thinking requires us to discuss processes for both people and machines to follow, and how these processes are intended to lead to specific results. For example, when a programmer is learning how to write programs, they need to be taught to debug by printing the value of a variable. When you discover a new mathematical technique for manipulating 3d shapes efficiently, you have to write it up so other people can understand and use it. Communication is the way we bring the things we know into the world.
When we use computation to solve a problem, the answer we get isn’t automatically meaningful to others. We have to communicate this result in a way that reveals both its importance and its origin.
In the illustration, Charles is capturing the sounds of a parrot in the wild and transmitting them to Grace at another location. We can interpret this literally as communication of audio data, like someone’s voice on a phone call. However, to another parrot perhaps the parrot’s song represents a process (like a technique for finding fruits and seeds, or a plan for timing seasonal migration) or some important news (such as the winner of the annual parrot speechmaking contest). Communicating about processes and results allows us to benefit from insights gained by other computational thinkers.