AI assisted programming, a Spanish Galleon and other notes
Posted by Paul Silver
On the 3rd September, 11 freelancers met in The Eagle pub, Brighton, to talk all things tech and self employment.
This is some of what we talked about:
- Having a good network for work
- Pensions
- Brighton AI meet up
- Spanish Galleon at Shoreham Port
- Business partnership challenges
- Is AI suited to helping write atomised / microservices code?
- Watching someone write off your car on doorbell footage
- Tariffs giving an extra route for scammers
- Adjusting context windows on self hosted LLMs
- Cancellation of De Minimis on packages to the US
- School uniform prices (are a rip off)
- Schools and locking away mobile phones
- Over-fitting test data when programming
- Seeing old friends from the “new media” scene
AI assisted programming and atomised code
One of the worries about people using AI to “vibe code” their website or app is maintenance and adding to the code, especially for applications. When a project is new it tends to be well defined and small. As it ages, updates to match it better to what its users want and need means changes mount up and become a problem as the project becomes more complicated.
This week I got to talk to Dave about an idea that had occurred to me. He has a lot more experience using AI tools than I do, and also in fixing other people’s AI written code, it was great to talk to him about the idea and get a more knowledgeable view.
I don’t know if it’s still the case, but apparently at Uber, the code is very atomised, i.e. broken into small pieces that do one small job. They can be written in any language their servers support. When a programmer in their team needs to change what a particular piece of code does, they are allowed to re-write it into the programming language of their choosing, as long as it passes their tests to do the job is was originally made for, and any changes they are bringing in.
Could we apply that methodology to AI written code?
Today, many people vibe coding their projects are not programmers. One of the problems they will hit is when they want their project to do something new. If you understand the programming language to some degree, you can see where new code needs to go in and (hopefully) what existing code needs to be changed. If you’re only getting the AI tool to write your code, that isn’t the case. So, if you want to go from your project doing one thing to doing one thing plus a little extra, e.g. you’ve created a website that can publish blog posts including images and now you want it to be able to show videos too, how do you do that? Do you have to get rid of the old version of your site and have the AI make a whole new one? What if the data from the old one can’t be loaded straight into the new? What if the interface changes?
If you’re running the codebase as a microservices set up, then maybe… yes! If each component is small then ditching the old version and writing a whole new one is a feasible way to go, as long as it does what it used to do plus the new functionality you need.
Unfortunately, we couldn’t see a way of making that easy to handle for a non-programmer.
For someone experienced, or well taught, in programming, this would be an easy way of having an AI tool boost your productivity. If you don’t care about your code being particularly human maintainable, having a structure where you can take small pieces and replace them wholesale could let you have the good side of AI tools – making what you want fast – without the drawbacks – getting code that’s a mess (I’m ignoring security issues and the other potential drawbacks. For projects that are going to go live on the internet, I’d still recommend having programmer(s) involved.)
Usually I’d say a full microservices structure for a small project is overkill and could hold it back, but if we take it that the user of the tool is a somewhat experienced programmer, then you could be making methods or functions doing what you need in this was – concentrating on the inputs and outputs, not the part producing the outputs.
This would likely depend on a project having good test coverage, which would be a change in habits for many programmers, but one that wouldn’t hurt their projects overall.
I’ve been looking at my list of ideas for tools I would like, and thinking about those projects in this way makes me more confident I can make something and have the adaptability I know I’ll need. As soon as a project exists, you realise it’s missing something that would be helpful to have. The easier it is to add that, the better.