There are particular features of programming which suck me in. Edge cases and error handling and making it as functional as possible… I can become engrossed for hours. Not one thought beyond the task at hand. Not one sound heard. Not one visual noticed beyond the edges of the screen. If it’s imperfect, it’s not done. It’s not useful until it’s done. The real world is fuzzy, programming and computers are not, and thus all the remainders stay in my head. None of that is good.
Programming, like architecture, is both art and science. Code must run, as buildings must stand, without crumbling. Alexander wrote about things which make us feel more whole in their presence, like the peach growing against the wall. In San Jose, he referred to that quality as “living structure.”
~ Claire L. Evans from, https://clairelevans.substack.com/p/towards-growing-peaches-online
But sometimes I can build something for my own use which elegantly solves a problem. (Imagine here an Ionic column, for example.) But most of the time, software is just the machinations “behind” the screen. Alexander was (in my opinion) asking us to aim a little high.
Every once in a while, when someone finds out that I’m a writer who dabbles in programming, they’ll ask me: So, is programming hard? And I usually answer the same way. “‘Hard’ is the wrong word,” I’ll say. “It’s not so much that it’s hard. “It’s that it’s frustrating.”
~ Clive Thompson from, https://levelup.gitconnected.com/programming-isnt-hard-but-it-s-frustrating-6cb740085243
This article is sublime.
Because Thompson isn’t a professional programmer, there are two more parts to programming which he hasn’t discovered: First, that your mistakes inevitably come back to bite you in the ass. Second, you will forever face the engineering dilemma of having to wrestle with balancing good execution (does the bridge carry the weight over the river, or do people die) with project parameters (the budget is $5, it has to be shiny, and we need it next week.)
The soul–sucking frustration which Thompson rightly identifies is very real. Also real: Shit catching fire (literally and/or figuratively) in the wee hours of the morning requiring one to fix one’s own mistakes made, or shortcuts taken, years earlier. After a decade of that, one grows tired of explaining one’s reasons and process (not that anyone would listen.) And after a few decades of all that, one will understand why I sometimes say, as I approach losing my temper: Please do not meddle in the ways of wizards, for we are quick to anger and you are tasty with ketchup. It’s nothing you did; It’s nothing personal. It’s simply that Programming is terrible and it has broken me.
Human-based adjudication systems are not useless pre-Internet human baggage, they’re vital.
~ Bruce Schneier from, https://www.schneier.com/blog/archives/2021/12/smart-contract-bug-results-in-31-million-loss.html
There are lots of things to say about the stuff built, conceptually, on top of block-chain technology. (Type “NFT” into your favorite search engine, for example; there’s a lot’s been said.)
But Schneier’s point about adjudication is something I’d never thought of. I’ve always known that “the software is the source of truth” is a literal disaster. Spend 30 years writing and working within software and you’ll agree. Software only works because there are intelligent people doing the really hard work.
Sometimes, programming feels like magic: you chant some arcane incantation and a fleet of robots do your bidding. But sometimes, magic is mundane. If you’re willing to embrace the grind, you can pull off the impossible.
~ Jacob Kaplan-Moss from, https://jacobian.org/2021/apr/7/embrace-the-grind/
I’m not 100% a programmer, but that’s a big part of what I do. I’ve been grinding so long that the impossible… accomplishing the impossible isn’t even interesting any more. I command an army of robots— but I’ve no idea what would be worth doing with them.
It’d be as if I did a magic trick and no one noticed. After doing that show six-days-a-week for a while, that got old. And so now I’ve become a sort of tottering crazy wizard. “Strange sounds and lights, and sometimes odd smells, arose from the tottering fool’s workshop at the top of the tower. No one dared go there any more, and few even thought to wonder at the long shut oaken door.” You know, that sort of crazy.
I do so love Alice’s take: Curiouser and curioser.
Three years ago I posted, Programming is terrible. These days? …yeah, exactly the same, but now I find I’m staring suspiciously at, basically, everything thinking: I’m about to do something which, as soon as I completely forget the details, (in the too-near future,) I’m going to be left with something that irritates me. A mess of my own making, as it were.
I’ve been on a bender for decades—which clearly means I’ve not been succeeding, right? I’ve been on a bender to simplify things as much as I can. A lot of progress can be made in that direction simply by removing goals: If I can delete the goal of, “make this thing be successful,” then that might make it possible to simply enjoy the thing. Normal people would just call that “a hobby” and wouldn’t need a paragraph to unpack the idea.
Rock climbing falls into this “hobby” category. I’m a poor, (as in skill,) climber, but since I don’t have any goals related to climbing, it’s just, “any day at the crag.” (And the, “…is better than any other day,” is left unsaid.) That’s literally my mantra. (Somebody should find me a sticker that says that for the top of my climbing helmet.) Some days I climb a bunch of stuff. Some days I fall off a bunch of stuff. Some days it’s glorious weather. Some days it’s tics, snakes and poison ivy. I’ve climbed a bunch of stuff already. There’s a bunch more stuff to climb.
And yet. The indescribable reward of taking a bunch of ink on paper from the shelf at Chappell of Bond Street. Tubing it home, setting the score, pencil, coffee and ashtray on the piano and emerging a few days, weeks or months later able to perform something that some mad, genius, lunatic of a composer 300 years ago heard in his head while out of his mind with grief or love or syphilis.
~ James Rhodes from, https://stevenpressfield.com/2014/02/find-what-you-love-and-let-it-kill-you/
Know what I love most about having my own blog? Being able to pull-quote really random-ass stuff like this just because I liked it.
And yet I don’t play the piano. Never played as a kid, but did mess around with it—including having a real piano teacher—around 30, got to advanced beginner and then ran out of time to practice when I finally had a house that would actually have been the first time I had room for a real piano. Sorry, I digress.
And yet for some random-ass reason I completely feel as if I understand what this apparently bat-shit crazy concert pianist is talking about. …maybe it’s the parallel of piano keys and computer keyboard keys? …maybe it’s the parallel of pouring countless hours—I paused here and started actually trying to estimate how many hours, straight-up paniced at how large the number was getting to be and decided to just move along—into tapping away at computers creating something that was, is and always will be, “just” good enough? Seriously I am not an artist. I certainly don’t think of myself as an artist. I always felt like an engineer sorting out, and building, systems of various forms.
Writing code that’s easy to debug begins with realising you won’t remember anything about the code later.
~ Tef from, https://programmingisterrible.com/post/173883533613
Most of the programming I do — if you were to watch — looks very much like me sitting and staring suspiciously at my computer. Occasionally I sip a beverage. Occasionally I will rub my chin. Sometimes I will grudgingly type some code, knowing full-well I’m building something I’m going to curse about later.
And you know why I do it? I need that help, too. I get tired, angry, upset, emotional, cranky, irritable, frustrated and I need to be reminded from time to time to choose to be the better version of myself. I don’t always succeed. But I want to. And I believe everyone else – for some reasonable statistical value of everyone else – fundamentally does, too.
~ Jeff Atwood from, https://blog.codinghorror.com/to-serve-man-with-software/
He had me at the “to serve man” Twighlight Zone reference…
Having to do everything turned out to be a real benefit later on, I was comfortable with such diverse things as communicating with customers, designing UI, identifying and tracking plans, architecture, and other non-programming tasks. With today’s roles unless you are in a startup environment (sometimes not even there) as a programmer you rarely get to do anything but write code. People even joke about programmers doing other things like designing.
~ Andrew Wulf from, http://thecodist.com/article/how_many_people_does_it_take_to_write_software
I certainly didn’t do anywhere near everything. (Notably, it doesn’t seem I got very good at communicating via the years of my early experience.) But I agree with the general sentiment. It’s all the peripheral stuff that I had to sort out, figure out, build, do, etc. which I think turned out to be the keys to my later — dare I say it — “success”.
Every friend I have with a job that involves picking up something heavier than a laptop more than twice a week eventually finds a way to slip something like this into conversation: “Bro,1 you don’t work hard. I just worked a 4700-hour week digging a tunnel under Mordor with a screwdriver.”
System administration sucks too:
… And if these people stop, the world burns. Most people don’t even know what sysadmins do, but trust me, if they all took a lunch break at the same time they wouldn’t make it to the deli before you ran out of bullets protecting your canned goods from roving bands of mutants.
~ Peter Welch from, http://stilldrinking.org/programming-sucks