Skip to main content

Pointing at things

·813 words·4 mins

From Physical Machines to Intangible Tools: The Evolution of Human Innovation #

Before the advent of software, everything we used or interacted with existed as a tangible, physical object. These “things” were constrained by the physical and mechanical components they were made from.

Whether it was a mechanical calculator, an excavator, a tape recorder, a building, a bridge, or even a mechanical “computer” or clock, every tool had a physical form. You could point to it, touch it, stand around it, and discuss it. These tools operated within the realm of the physical world, their functionalities determined by the arrangement and interaction of atoms and mechanisms. Some of these devices were incredibly complex. Take, for example, the Strowger switch used in early telephone exchanges before the transition to digital systems1

Strowger Switch

Here’s a video of Strowger switches in operation

Despite its complexity, every part of it could be observed, and its physical interactions with other parts deduced simply by watching it.

For next level complexity take a look at this targeting mechanical computer used in the navy. As the video goes on to show, even though it contains incredibly complex mechanics you can observe exactly how it works. For next level complexity take a look at this targeting mechanical computer used in the navy. As the video goes on to show, even though it contains incredibly complex mechanics you can observe exactly how it works.

This distinction is profound: while physical machines could be pointed to and touched, software tools and products exist entirely as intangible entities, executed on a digital platform.

The Shift to Software: From Atoms to Abstractions #

The process of creating software involves navigating a conceptual landscape—translating abstract ideas into lines of code and bringing a virtual tool into existence through execution on a computer. This transition from physical to software-based tools represents a paradigm shift in human creation, enabling the realisation of functionalities and solutions that transcend the limitations of the physical world.

By harnessing the power of abstraction and computation, software allows us to conceive and create tools that exist not in the world of atoms, but in the world of ideas and algorithms. It’s a transformational leap in the evolution of human innovation and technology.

The Dual Nature of Intangibility: Limitless Potential, Boundless Complexity #

In the intangible world of software, physical limitations do not exist. This freedom enables us to achieve feats that are impossible in a physical environment. However, this lack of inherent boundaries also means complexity can spiral out of control. Software products are arguably the most complex “machines” humans have ever created, yet they lack a physical form that teams can stand around, point to, and analyse.

Because of this, managing complexity is essential. It’s a core skill in keeping software development projects from veering out of control.

Communication in the Intangible World: A Crucial Challenge #

When everything is just a concept, ensuring alignment among team members becomes critical. Unfortunately, the illusion of effective communication often leads projects astray. Users may end up with products that fail to meet their needs or align with their vision, resulting in costly project failures.

This is where software development begins to resemble a craft—like art, writing, philosophy, or mathematics. It’s a process of shaping ideas, concepts, and algorithms into a product that doesn’t physically exist. In the intangible realm, there are no inherent physical constraints to guide or limit us. Charting a clear path through the boundless world of possibilities requires deliberate skill and discipline.

Team Discussing a Wireframe

The Importance of Visual Representations: Bridging the Gap #

For millennia, humans have relied on pointing at physical objects to explain how things work. It’s only in the last 70 years or so that we’ve begun building tools that cannot be physically pointed to—a radical departure from how we’ve historically approached creation and problem-solving.

To adapt, we’ve turned to visual representations like diagrams and wireframes. These tools translate abstract thoughts and verbal descriptions into something tangible that a team can point at, discuss, and refine. They serve as the closest approximation of a physical object in the virtual world—akin to the devices of the past that we could gather around and analyse.

Diagramming is, therefore, critical in modern software development. It helps bridge the gap between intangible concepts and shared understanding among teams. I’ll dive deeper into this topic in future articles, but for now…

The Communication Question: Are We Truly on the Same Page? #

There’s another layer to the challenge of communication: how do we know it has actually happened? Humans are notoriously bad at recognising when they’ve failed to communicate effectively and even worse at acknowledging when they’ve fooled themselves into thinking they’ve succeeded.

So, are we all on the same page? That’s a question every software project must continually ask and address.

I cover this in All on the same page?


  1. Image by Pierre André, CC BY-SA 4.0 https://creativecommons.org/licenses/by-sa/4.0, via Wikimedia Commons ↩︎