I think I have kept a high level of interest (passion as a word has been abused into meaninglessness) in computing as a whole, but what keeps things interesting has definitely shifted over the years. I don't have much love for the current technological state of affair. I find one has to reinvent oneself periodically to keep anything fresh. Software Engineering is a peculiar field because really every developer has two skill sets. In this way, software engineering isn't freestanding in that it is always alloyed to some other purpose as well.<p>(1) Computer technology and computer programming.
This portion does not fundamentally change much. At the end of the day, all our code is running on some kind of Von Neumann architecture hardware, with a C-like ABI, on a 1970s paradigm Unix-like OS based on identity-based access control, that pipes and transforms, displays, and persists data. Given how fad and fashion driven computing is, the vast majority of the change isn't innovation, it's just surface-level change (Change != Innovation). There's very little real deal change in computer technology these days. Refinement yes, step change no.<p>(2) Domain knowledge.
The great part about the second part is that whereas (1) does not fundamentally change very much, software is applicable to pretty much anything, so there is always ample room to explore interesting topics. I like to use side projects as a way of exploring new topics and finding new fields to try my hand at. Even e.g. game development with all the technological wizardry that goes into game engines and tooling is ultimately about creating compelling interactive experiences and entertainment at it's best. At it's worst it's about creating attention-thieving rent-extracting Skinner boxes.<p>On part (1), I think a big source of the complexity of modern software is the fact that we're trapped in a local maximum that's no longer fit for purpose. But in keeping with established things, big players in any industry--including the tech industry--hate nothing more than real innovation or invention. Couple this with massive amounts of inertia, it makes it really hard to meaningfully explore alternative software systems paradigms. It's a rotting pile of awful, but a pretty darn useful one for a lot of people, so here we are.<p>In particular, there is a quadfecta of ideas I am thinking of things along the lines of:
(a) Capability-based operating systems.
(b) Interactive software systems.
Things along the lines of the LISP machines of old, Smalltalk, Self, Luna, Erlang, Elixir, and Unison. That is, the idea of software systems as living interactable artifacts.
(c) Content-derived code versioning and (binary) reproducible builds.
(d) Programming language designs based on linear logic, affine logic, or other kinds of separation logics (Rust, ATS, Austral, and others).<p>The set of four ideas above have the kernel of some very different paradigms for interacting with and creating truly robust and resilient software systems. Unfortunately the first three ideas also have a very long history of failing to gain traction going back to the 1980s. My sense is that software engineering as a field is in a gnarly state of arrested development (that makes most of us miserable at least some of the time), and the quadfecta above is a big thing that keeps me passionate about it. It's a deep well of idea to explore, and one that keeps me out of apathy over the current state of affairs in computer technology. There is a huge amount of latent potential in software engineering and computer science that feels like is just being left on the ground, even when it feels Sisyphean to bend over and pick it up for the umpteenth time.<p>On part (2), given the circumstances around part (1), my interests have on another axis shifted towards computers as media for creative expression. In other words, computers as a tool for doing other things. I tend to lean more digitally vegan (in the sense of Andy Farnell's 'Digital Vegan') in my daily life, so I can get to the business of using computers for creative purposes. Of course I still end up doing a lot of tinkering anyway, but that's how things go sometimes. In that sense much of what I like about computers has evolved from the technology itself, to what I can do with it or create with it instead. The beauty of the essentially universal applicability of computer technology is that one's career can always stay fresh by changing business domains. Skill set (1) is pretty stable, so one has a nice stable place to stick a foot while exploring around with skill set (2).<p>TL;DR it's natural for one's interests and passions to ebb, flow, and evolve. It's called being alive.