I have been doing software development for decades. Yet I have been never as optimistic about the future of my chosen career as I am now.
I am starting this just from point of view of programming languages, for reasons I describe later.. My somewhat ‘played with or used for stuff’ programming language list is at 32 languages at the moment, but I am just covering about main ones to convey a point.

(Basic/)Assembler: (Ancient) history
I started with some basic + machine code on 6502 (I did not have assembler for it so I just typed numeric instructions based on reference sheet - fun), migrated to 68000 basic + assembler, and sometime in the early 90s learned (Turbo) Pascal and bit after that C and Python. After that, I have never written assembler although on occassion it has been useful to be able to read it with some fluency. I also patched some 68k code on e.g. Palm Pilot to avoid some paywalls, cough.
C: Slightly more recent history
In late 90s I did some telco stuff using C, and after that I wrote some closed source Linux kernel drivers for various things, as well as shitload of other software. I think my last (fully) C project was in 2018, dealing with Linux kernel 2.6 of all things (which dates to ~2000 so genuine legacy project), but I think for a decade before that, over half of my code had been Python or so.
Python history
I started writing Python sometime in the late 90s, and Python 1.4 back in the day was quite different beast from Python 3.14 that I use nowadays. I have git repository that contains code from 1998 at least, so it’s been around a bit. I am still using it whenever I need some quick tool, or if work demands it.
Go history
I started using Go in 2015. I used it both professionally and in some hobby projects (e.g. I wrote crypto filesystem implementation in 2018 - see https://github.com/fingon/go-tfhfs ). I still prefer use Go when it is reasonable to use.
To summarize - too much time spent learning programming languages, their libraries, and ecosystems in general.
How much code did I write this year so far?
Perhaps literally one percent of what I did in 2025. However, I have produced a lot more cool stuff in two startups, and half dozen hobby projects, than I did in whole of 2025. Why is that? Coding agents. Claude Code at work, Codex CLI at home. Some Opencode too, but my local hardware is too weak and if you are using cloud model, why not use the state of the art?
Of course I don’t know every trivial detail of everything the LLMs have produced for me, but I am more of a result guy. Most recent shocker was actually the reason for this blog post..
Monitoring and debugging with LLMs
At work I have used Claude Code with various MCPs (Signal, SigNoz) to triage and fix many problems very fast and efficiently. It has been also useful to produce dashboards and alerts for things I care about, at crazy rate compared to what it would take for me to set them up by hand. That is not the point of this post either, though..
My home MinusPod infrastructure looks like this:
graph TD bf["Bifrost (LLM API proxy)"] --> om[oMLX on laptop] bf --> ol[ollama on server] om --> g["Gemma (LLM)"] mp[MinusPod] --> bf ol --> g caddy["Caddy (reverse proxy)"] --> mp ps["Podcast sources"] --> mp pc["Podcast client"] --> caddy
There are couple of boxes under MinusPod, and they and MinusPod itself were not actively monitored at all. I have ingested logs from it for months to my infrastructure, though. And MinusPod has kept failing not because of its own failures, but instead of its dependencies:
- Bifrost at some point started default denying RFC1918 model provider addresses (no idea why, perhaps enterprise feature)
- I forgot to start oMLX on my laptop (or it ran out of disk)
And as I like my podcasts adfree (or at least close approximation thereof), it got inconvenient to manually notice that MinusPod was not doing its job (my podcast selection was getting stale) and then fixing it.
So, enter monitoring. I decided to do first home infrastructure ‘zero manual Grafana work’ exercise just to see how it would go. Grafanas own AI agent is unavailable for self-hosted setups, but I decided to set up Grafana MCP. This took actually most time of this exercise: I started with https://grafana.com/docs/grafana-cloud/machine-learning/mcp/clients/codex/ as I wanted to use Codex CLI, but unlike the Claude Code oriented examples at https://grafana.com/docs/grafana-cloud/machine-learning/mcp/set-up/install-with-uvx/ they were not uvx based. Additionally the default of passing env token hardcoded from configuration file was abhorrent for me, so I spent probably too long figuring that env_from: is what I want, and this is the configuration block I should really use:
[mcp_servers.grafana]
command = "uvx"
args = ["mcp-grafana"]
env_vars = ["GRAFANA_URL", "GRAFANA_USERNAME", "GRAFANA_PASSWORD" ]
Once it had been done, it was two-shot to get 20 panel dashboard of MinusPod, and one extra request to tune it slightly and get alerting. Which actually worked this morning it proved its worth and told me of misconfiguration via Matrix:

and then from the link I saw what was wrong:

The reason was bit too large context for my weak local hardware. Some oMLX settings tuning and it worked out again.
Next up on agenda is Frigate (our NVR) - while it even has support for metrics, I have never bothered to add dashboard for metrics for it. But as I have the tools, the next time I see an error it is easy enough to produce both dashboard and alert to prevent it from failing again silently.
Am I worried about my programming or ops career?
To bring this rambling post to a close, the short answer is, ’no’. As long as the AI does not actually replace the dealing with humans or design aspects, and in a way I (or end users) want, even if it produces perfect code on first shot always, there is always iteration and human in the loop.
I have vibe coded using humans for two decades in senior software engineering roles (prompt using requirement or design document/handwaving, see what happens in couple of weeks). AI is just faster, but still requires judgment to get good outcome.

Pretty much all of my this years hobby projects have tens if not hundreds of prompts of ‘please do X’ and then ‘do Y’. I do not particularly enjoy writing software for its own sake, so having someone else do it for me is fine, as long as I get what I want.

I am glad I can apply the same approach to ops now too (both at work and at home). The less I need to manually write dashboards or alert rules, the better, as I can focus on things I care about.