When I spoke with an architect recently, I tried to explain what it means to design with code. I found myself saying: software design is about building sandcastles, not cathedrals.
There was something immediately right about that phrase. Architecture, by nature, is slow, physical, and monumental, it aims for permanence. A building aspires to stand for generations. Software, by contrast, is ephemeral. It shifts with every update, it erodes under the tides of changing technologies, and it can be rebuilt overnight. Yet, like sandcastles, its beauty lies precisely in that impermanence, in its ability to be reshaped, refined, and reimagined endlessly.
Where architecture works with matter, software works with mind. The materials of digital design are not stone or steel, but logic, cognition, and imagination. The interface, what we see on screen, is merely a facade, that tugs away a deeper system of thought that manifests itself in the mind. What we design is not so much what is seen, but how it is understood and felt in use. Good software is not about ornament, but about cognitive ease: the quiet flow that happens when the mind meets a system that fits its rhythm.
There is also a difference in how the two forms of design are experienced.
A good building is often distant, geographically, socially, economically. Many people know architecture not by inhabiting it, but by seeing it through photographs or renderings. Its beauty is mediated, often aestheticized for publication. This perhaps explains why architecture places such emphasis on visual form: the image must stand in for the experience.
Software, however, can be distributed across the globe in an instant. It is not mediated by a photograph, it is the experience. A well-designed app or system can be felt directly, intimately, by millions. It lives not in glossy spreads but in gestures, habits, and decisions. In this sense, software design is the most democratic form of architecture: it builds not spaces, but mental environments, shared across time zones and screens.
If architecture is the art of inhabiting space, software design is the art of inhabiting thought. And if cathedrals reach toward eternity, sandcastles remind us of the joy and humility of constant creation, of designing not to endure, but to evolve.