Working theory on how GenAI helps Software Engineering and Maintenance

I’ve thought, written, and discussed LLMs/GenAI a lot over the past 3+ years. My view has always been general with an anchor of my expertise.

My expertise is a funny one, because it’s not actually the jobs I’ve had. Of course that experience is massively influenced by my expertise, each role has had a different “terrior” (I love this phrase, it really brings humans and the domain together with a hit of love/passion for the domain).

Context

Bear with me here… 🐼 🤓

I arrange my understanding of things in Maths. Not the x^2 + y - 5 sort of Maths, though it can be like that, rather a more open Bayesian view on systems.

As a side example, I had a “nose” for how a rugby game will go, especially the six nations. A tournament that is steeped in a family-esque love and rivalry going back 100s of years.

This tournament isn’t about skill, that is an important factor but it is about passion and identity. These are things that can be represented by Maths. Bayesian Maths including priors, current views, inference over those, and of course a posterior.

The purpose of that side example is to show that I think about things in probability distributions as they represent beliefs, and knowledge is a justifiably true belief. Well that’s what I believe knowledge is… 😉

Some friends who think differently always say “Matt’ll never hang himself” or that I’m on the fence. And the most unhappy times in my life have been when I have a black and white style belief of something, someone, or myself.

So that’s my expertise, my way of viewing the world. I’m not claiming I understand everything, in fact I have a library of evidence to show that I got priors, current views, and inference “wrong”.

What it enables is teaching people, I can see their priors (not always clearly or correctly) and it enables me to connect, understand their point of view better, and plan a way forward.

What does that mean for software engineering and maintenance?

Software Engineering is the conversion of many different priors and current views on a solution to a problem.

Software Maintenance is the conversion of many priors and current views on new problems plus the previous solution to old problems.

The big challenge within both is that you have at least two distinct ways of representing these factors.

  1. Software is categorically logical, not always current logic, but it is run on machines that do not have priors that influence the interpretation of the current view. It infers with clear rules and no ambiguity. It is Computational Reducible.

  2. Humans and the language we use is highly ambiguous and has a plethora of priors that can be unfathomable and Computationally Irreducible.

shit I have to get in with my day!

I’ll come back and finish this later!

Being Human Vibe Engineering