It must be interesting to have synesthesia. I enjoyed the vivid descriptions of this phenomenon in reading Blue Cats and Chartreuse Kittens: How Synesthetes Color Their Worlds.

My words and sounds lack texture and color, except through the effort of imagination. I do, however, feel the shape of ideas. As a software engineer, people have often told me that I must have an aptitude for logic and mathematics. I do enjoy math, but it didn’t come easily to me. For me, math is a language like Spanish or Java. Software is kinetic sculpture.

Bits flow through data structures and algorithms like water over rapids or a fountain. Data has texture and color that is only occasionally tied to its human representation. Code can take on elegant organic forms or sleek, polished edges. Old code can get crusty and brittle or retain the fragile beauty of Venetian glass. Some code is lumpy like oatmeal or spiky, like pine cones. Sometimes it hangs together like some bad knock-off of a Rube Goldberg machine and its hard to believe that it works, yet it does. It is delightful when it is soft and supple — writing a new module is like adding a partner to the dance.

When the software doesn’t work quite right, I can sometimes see the flaw in my minds eye, hiding in a fold of fabric or obscured by a shiny bronze gear. Like a potter at the wheel I smooth the rough edges. Mixed metaphors are natural as I work in the n-dimensional space that is my innate conception of what may be several hundred thousand lines of code.

One thought on “the shape of ideas

  1. Beautiful. Thank you!

    I feel the same way about my code, although I think you’re much more eloquent at describing it. I frequently explain my conception of a software architecture as being like a landscape, with clear mountains and valleys, of varying shapes and textures. The criteria I use for deciding whether a design is good or not is how well it molds to the 3D “shape” of the requirements and the libraries it depends upon.

    I once considered making a tool that would let me work with code directly, and display code the same way that I saw it in my head. Never went anywhere, though.

What do you think?