SuperHi Foreword

I was commissioned to write the foreword to SuperHi’s first publication, Learn to Code Now. If you’re interested in boosting your HTML, CSS, and Javascript skills, go check them out.


The house where I was raised was an ideal place for our family, except one serious flaw: the house did not have my parents’ fingerprints on it. So began the constant construction project that lasted almost a decade. Bathrooms were moved and walls knocked down; skylights were installed, had their leaks fixed, then uninstalled for the trouble they caused. My parents removed the attic, raised the ceilings, bought a larger Christmas tree to take advantage of the new vertical clearance, then celebrated the new year by re-tiling the bathrooms. We painted the house only once in the ten years I lived there, from one shade of buttercream to another, and I still don’t understand why this escaped the same level of obsessiveness from my parents.

One day after arriving home from school, I saw my father hovering over a giant stockpot with wooden strips fanned out over the rim like uncooked spaghetti. He was boiling the planks, he said, to soften them. He’d then slowly form each strip along the curved edge of our built-in bookshelf to use as trim for the semi-circular shelves at the end. My father was taught this method by my grandfather, another amateur furniture maker, and now it was my turn to learn the process. “Pay attention to the wood, follow the grain, and if you take care, the wood will bend and not break,” he said. This was clearly intended to be a life lesson as well as a lecture in woodworking, the kind of practical inheritance that fathers live to provide their sons. Be patient. Be gentle. Got it.

Carpentry didn’t take: ten years of growing up in a construction zone made me swear off woodworking. (Also, we got a computer the year after my lessons in woodworking. How could I resist?) I now design and build software instead, which has its own methods and tricks, but I still find myself returning to my dad’s lesson for grounding. All materials have a grain, whether wood or pixels, and that grain suggests the best way to work. Go with the grain and one will find sturdiness combined with tremendous flexibility—a natural and exciting give that grounds decisions and excites with possibilities. Work against the grain and the work becomes precarious, difficult, and fragile. Instead of the elegant bending that software requires to adjust to different screens, uses, and situations, the work breaks because it can not adapt.

This idea of a grain, however, goes in the face of our expectations for technology. Software is often presented as a wide-open, infinitely malleable material. We expect technology to help us overcome limitations, not produce more of them. Can’t I do what I want? As always: to an extent.

We use teak for outdoor furniture because it is weather resistant. We use white pine for wood carving because it is soft. These kinds of rationale also go for designing software. On the screen, we use flat colors and simple gradients, because they’re lightweight, easy to programmatically draw, and can scale for areas of varying proportions. Sites have horizontal stripes of content stacked vertically, because that is how we read, and it is easier for most users to scroll vertically than horizontally. All of these design choices come from a knowledge of the materials at hand.

What is the grain of software? It has to do with fluidity. People who work on software create flexible systems that can deal with variability: content of varying lengths, connections of different speeds, users with many kinds of ability and attention. What does the page look like if it is empty? If it is full? And every possibility in between on mobile? Working with software is never designing towards a fixed artifact, like designing a chair or book. Instead, it is defining and designing conditions for a whole set of possibilities.

The easiest way to explore and test these possibilities is by working with the raw materials themselves: learn a bit of code and fiddle with things. A sturdy knowledge of HTML, CSS, and Javascript goes a long way in understanding what is possible with the medium.

You will make mistakes. Things won’t work! But you will also have good company—we all get it wrong the first, second, and usually third tries, no matter how much experience we have. Getting your hands on the materials is a learning process for all of us. We feel the grain and discover the contours of the problem we are solving, and revise when our efforts don’t work quite as expected. Luckily, code and pixels are free, so your trials and errors should be less expensive than the considerable amount of lumber I’d waste if I ever took up woodworking.

My father never fully understood what I did for a living, but we could always find common ground in craftsmanship. Good work is grounded in an attention to detail and knowledge of and respect for the materials. The more experience I gain, the truer this proves itself. Pay attention, respect the material, listen to how it guides you, and be gentle. You’ll be surprised by what you can do and how flexible it all can be.

Buy my Book Buy my Book