Hello, loves!

What I love about programming. A few thoughts on what I do, and why I enjoy it so much.

Code, I guess, is the thing I’m second-best at, maybe best. I enjoy it. I’ve had similar feelings with a few other activities, sometimes writing, sometimes drawing. I link to think that I’m fairly good at all those things, if you count the people who say “I can’t draw” and then don’t. I’m more the one who said “I can’t draw” and then went ahead and drew anyway.

All those activities, but especially programming, can consume my attention, and suffuse me with a general feeling of joy. Not a big ecstatic kind of rush joy, just an ongoing feeling that this is good. I imagine, but cannot know, that it’s the same kind of feeling a musician gets making music, an artist gets when the painting os going well, … and the feeling in the potter as the vase takes on the shape the potter has in mind.

And in one way, code is “better” than most of those other forms. In all such endeavors, the maker can always do better. In drawing, painting, sculpting, one can generally only do better “next time”.

Apparently, according to the Internet, it was Paul Valéry who originated the notion that a work is never truly finished, only abandoned. The idea has been attributed to many, and I’ve quoted it in these pages a time or two.

But the thing with potting, sculpture, painting, furniture, drawing, most forms, we typically can’t go back and improve the thing, we can only do another thing. With writing, prose or poetic, we can go back and improve the thing, but once it’s published, well, writing a new thing seems better.

What I love about code, about programming, is the feeling of the program changing under my hands. There are many aspects to making a program, as there are to any more classical form of art or craft. I imagine that typically, the maker really enjoys some aspects, and others not so much. If they’re fortunate, they enjoy more aspects. A truly lucky person would enjoy every aspect of their work. I don’t know of anyone like that and I, for one, do not enjoy all the aspects.

I mostly enjoy just two programming aspects. I enjoy starting from zero or near zero and coming up with the solution to some problem. And I enjoy looking at code, seeing how it could be improved, and improving it.

The truly marvelous thing about my code, and almost all the code I’ve ever seen, is that there is plenty of room for improvement. Especially with my code.

I look at my code; I think “that’s horrid, what fool did that?”; I forgive the fool—he probably had other things on his mind; and I joyfully improve what I’ve found.

A thing that I do not enjoy is a long slog. I especially don’t enjoy a long slog with the program broken. So, driven by long experience, and driven by GeePaw Hills “Many More Much Smaller Steps” notion, I find ways to improve the program in tiny steps, working mostly from green to green. The result is that the longest drab slog becomes instead a series of joyfully coming up with little solutions, and joyfully improving code.

And that … is why I do this.

Why do I tell you about it? Well, mostly for similar reasons. I like to try to share my joy, and this is the medium in which I can do it. If someone reads these words, great. If they then try to find ways to increase their own joy, greater still.

Find your joy. There must be a pony in here somewhere.