Reflecting on progress so far
Reflections on using AI for coding, the importance of authentic writing, and hitting the ceiling of understanding
Confession
I need to confess that my previous blog post (titled Back on the AI wagon (again)) was written mostly by Chat GPT. I gave it what I consider to be a pretty good prompt, and it spat out I think a pretty passable piece of short content, given the input I provided. I was in a rush, I posted it. It felt like a good workflow. I used cursor to publish it onto my blog, as well as tidy up the default pages that came with the Chirpy theme. It felt satisfying and efficient.
Reflection one
With a bit of reflection though afforded through the passing of time, I feel that post is very different from my previous two. Firstly there are no typos. Anyone who receives regular emails from me will know I cannot type the apostrophe ‘ when in flow and regularly hit ; instead. It;s clearly something I just can;t train myself out of. It;s a dead give away for my writing.
Secondly though, the tone just isn;t me. It’s like me, but through a translator, or heard through a wall, you don;t get the full experience. I think I’m quite verbose when writing. Meandering and more self indulgent. AI tried to streamline me into it;s concept of a snappy blog post. Which I suppose is a decent thing for it to do.
I’m not writing for you though, I’m writing for me. (Well that’s a bit weird, if I’m reading this). I’m writing this as a note in time of where I am on my little journey of exploration into coding, AI, and possibly in the future, reflections on my hobbies and how they help or hinder my mental health and journey through life. (suddenly deep). The point being I don;t care really about this being a snappy post to get lots of readers and follows. F*** that. I’m no ‘guru’ or ‘thought leader’. I’ve been comfortable with that realisation for a lonnnnng time. I’m interested in this as a note to my future self, for future reflections. I do a lot of thinking about the past, this is a platform for future reflections. Already I’m reflecting on my first post and noting how my position on the use of AI tools is evolving. The fact I’m publishing is, I think, a moment of effort, a challenge to myself to force reflection. I could keep a written diary I guess, but I think I wouldn’t maintain it. And my handwriting is utter pants these days.
Sidebar: My granda, who was very dear to me and a huge influence on my life, kept a written daily diary. It was in a time before computers were mainstream. Every year he read the diary then burned it, normally in an old oil drum in his garden. This is probably an entirely different subject. But I’m not strong enough for that activity my granda did just yet. But this writing and reflection is useful to me for now.
And this is reflection one.
I’ve realised a purpose of me writing here is to help me understand what I’ve learned and to do this kind of inward reflection. Armchair psycho-analysis. That kind of thing. Also, I do need to make things, I know it;s good for my head.
Reflection two
I’ve learned a lot about using AI. But I’ve only really scratched the surface.
I’ve found some others at work (In Defra) going on similar journeys and usefully, they are ahead of me and helping with tips. Someone told me “I’m using Antigravity now instead of Cursor”. This actually means something, which it didn;t 3-4 months ago.
I’ve also read a couple of good posts by others much cleverer than me. A lifetime ago, Simon Willison did a stint at Capital Radio when I was there. I was blown away by how clever he is. Unsurprisingly, he is writing interesting stuff about AI. A lot of it is above my head, but this post is accessible for mere mortals in the land of coding Not all AI-assisted programming is vibe coding (but vibe coding rocks). And there are loads more on his extensive blog.
I also found this to be really good Augmented coding patterns by Lada Kesseler. There’s a link to a Youtube video there where she explains it.
There are some concepts that Lada explains that I’ve encountered and clumsily tried to explain. For example in my Back on the AI wagon post, I talked about Cursor forgetting about a big refactor and undoing it. This is a combination of what is referred to (by Lada) as compliance bias; trying to satisfy the latest prompt, and context rot; forgetting what was going on a few prompts ago. These are things. Reassuring that it’s not just me.
These are also critical learning points for me. We need to have a good mental model of what the AI is doing and how to manage it. I started off talking to it like a person. An easy trap. I knew I was falling into the trap, but it was producing results, so I didn;t change my behaviour. It was part of a buzz of progress. Also I was just going with a chat ‘flow’ and it seemed the easiest way to express myself.
But now I think about context rot and compliance bias as things (along with all the other stuff Lada clearly articulates) and I’ve changed my approach. No need to be chatty, more need to be clear and focused. I still can;t help saying ‘thank you’ and ‘good work’ to my assistant, but I’m definitely more work focused. I mean, it;s not like Cursor is going to join me for a beer on Friday right?
My mental model is adapting, I think, to be better.
Reflection three
This one is a bit of a downer.
I’m not as far forward as I thought I was.
I got a bit giddy with progress. I’d ‘made’ a blood bowl roster app, with data, rules, login features and sharing features. There was loads of stuff in there. People were commending me on it (and also in fairness questioning the ethics of AI - another topic for another time). It felt good.
Then the bugs start cropping up.
Oh boy the bugs.
Why is THAT happening?
My assistant did write some tests for me, but honestly do I know how effective they are? nope.
It’s good at fixing bugs when I identify them, but they are cropping up a lot now. In fairness there’s a fair bit of logic and rules going on in it.
If I’m honest though I’ve hit a ceiling. Simon Willison talks about owning your code if you understand it and publish it, no matter how you arrive at the code. I’m publishing without understanding it and that is a hard wall I’ve hit.
I need to do some actual work to better understand what is going on now.
