I derive zero enjoyment from Kubernetes configs, or Terraform, or fucking around with log settings, or screwing around with all the knobs for Kafka. That stuff is agonizing.
The click for me was thinking in terms of outcomes and system dynamics. So I make sure to get a good understanding of the final state. Tweaking without a goal is just playing around, or joyless work if you do not enjoy the process.
I guess programming to me was always an excuse to do math, not necessarily to build products.
Programming is my way to create something. It's like drawing or woodworking. It is creative and logical. That's why I don't mind or even like sysadmin stuff. But I know a lot of coworkers that don't like ops and in my company you don't have to do that. We have teams for that.
I remember thinking it was the coolest thing ever to be able to know properties for all numbers, without having to test any of them.
[1] most people here already know this, but for posterity, let’s define odd numbers as the expression 2k + 1. Now we square the expression which expands to 4k^2 + 4k + 1. We can factor this to 2(2k^2 + 2k) + 1. We can set the parenthetical expression to u, so we now have 2u + 1, which looks a lot like our original expression, showing it will always be odd.
It’s formal notation where you’re manipulating things encoded as numbers. Just like music sheets are notation for sound encoded as some symbols. Yes, there is math involved (because numbers) but there’s often a more concrete reason for such manipulation.
It’s not so different than drafting a technical drawing.
But when doing the more boring CRUD stuff I historically have gotten my math kicks out of playing with functional languages. I got into Haskell pretty early because I liked the idea that the type system felt pretty mathy.
I've never had that specific heads-down "programming" role where I can just read specs and write PRs all day, it's always been full-stack for me - which I personally enjoy... But the config / plumbing has always felt like a bit of drudgery.
At the end of the day that feels like the stuff that we do IN ORDER TO write code, so it doesn't really feel like the main event — so to speak.
Never some intractable bug, that didn't seem to have any relation to the source code you're reading?
I've never punched the air after fixing some bug that I didn't at some point earlier get extremely frustrated at its intractability.
But seriously, sometimes its not the code, it's the human factor that's painful, other times, well it's JavaScript.
I love writing JavaScript. I like React well enough. I'm not sold on NodeJS, though I'll accept that its struggles are no different than any other package manager.
I just wish the whole thing would stand still for a minute. It's seriously exhausting to keep up with all of the deprecations, rewrites, new "best" frameworks, etc.
That said, I'm not sure it's necessary to make a distinction. I can't imagine many teams are using NodeJS (particularly with React or the like) without buying into the package ecosystem.