Two ways I use AI
I have come to use AI in 2 main ways. Either quickly to an adequate quality, or slowly and in depth to a much higher quality. At the beginning of developing SpellMe, it was method one. This allowed me to get a very good prototype in the hands of my then 7 year old son, in a matter of weeks. It was basic, and rough around the edges, but it worked. However, the longer the project progressed and the more complicated it got, the less I was able to rely on it for good quality solutions. I found that a combination of code size, more complicated features and limited context windows all contributed to making continued reliance on AI much more difficult. This is where my prior knowledge of software development had to kick in and I started to rely on method 2 much more.
Possible without AI?
Would I have been able to create SpellMe without code provided by ChatGPT? Definitely! This is not my first web-based tool that I have created. Wurkbuk is way more complicated. I can confidently say that I understand every line of code, and every algorithm that is used. So if AI assistance were to go tomorrow, I could confidently continue. But it would take me longer for a number of reasons, and I think it is important to explain why.
My coding strengths and limits
I have taught various different programming languages at secondary level (up to and including A-Level) in the past and have written text books for Python. So I would say I am good at coding, verging on very good, as I have a knack for understanding and creating quite complicated algorithms. However, I wouldn’t really call myself great. For that I would need to have experience of coding using a wider range of frameworks, using different methods and techniques as well as a good memory of syntax and an understanding of functions specific to the languages I am using at any particular time. That is not me. Before generative AI, I would have used W3Schools for guidance on syntax, Stack Overflow or github repos for problem solving and code examples, as well as the general reference websites for whichever specific language I was using, like PHP.net. If there was an algorithm I needed, I would first consider how long it would take me to create it myself and compare that with how long it would take me to find the code online. The shortest and easiest route would usually win, depending on the quality needed.
Not always perfect
Now, generative AI is here! As all these code repositories and websites have already been fed into Large Language Models, generative AI becomes a great search engine and generator of code. It is not perfect, but in a lot of cases it is more than good enough, if you don’t come across one of these two issues.
- The platform/framework that you are coding in has limited or very poor quality documentation (hello, Joomla! At least you used to).
- Hallucinations, where generated code is just trash.
In both cases, you just have to get down and dirty and do it yourself.
Why vibe coding didn’t work for me
Even at the early stages, where the code was mostly generated by AI, I can’t say it was led by vibes. The difference is, with vibe coding, there would pretty much be 100% reliance on generated code, without even checking what it was. AI would be used entirely and the user could forget that code even existed. I don’t have anything against people that use this method, but it did not work for me. It led to too many errors, and took far too long resolving them. I found it much more simple to do a lot of it myself and manage the process much more closely. These are some of the issues that I faced.
- Algorithms were just plain wrong.
- Algorithms were very inefficient.
- Sometimes code was in the wrong language.
- Lack of code continuity with variable names not consistent throughout
Collaboration wins
These are the negatives. However, there were huge positives for a developer like me. The first was collaboration. Instead of asking for full code, I would ask for research on the best methods with external sources as evidence and example methods. I would then have a back and forth discussion about those methods with the AI going over pros and cons. These discussions would sometimes go on for a while, with me feeding in information on the kind of code that I wanted, how I wanted to use it in the future and potential expandability. Code generation was then much more modular, where I would ask the AI to generate parts of code, or merge code more seamlessly.
There were also times where I simply didn’t know how to realise certain features in code. E.g. login logic. Through the generated logic, I was able to study it, understand how it was done and how it could be improved.
AI as a Teaching Tool for Coding
This method not only worked perfectly for me as an experienced coder who wants to learn more, but it can definitely work as a teaching method for computer science classes. Instead of having students get AI to generate code blindly, have them describe what they want, give examples and make students check the code generated line by line to ensure understanding. Have the students request that a certain coding method is used that they know nothing about and have the AI teach them how to use it and incorporate it into generated code. Then have the students share their conversations with the teacher who can then check that things were done properly. This can work for essay writing just as well as code.
Beyond Coding: Research, Marketing, Editing
Coding was not my only use of AI. I used it for research, for advice on marketing and copy editing for the landing page and other pages. I even used it to help edit blog posts. Just like with the coding, every line was checked and a lot of it was amended. But using AI to create the foundation that I can then perfect and specialise, is such a time saver. And for someone as solitary as me, using it as another set of eyes, to check for spelling, punctuation and grammar saves a lot of embarrassment. As I said in the beginning, it can often take longer but it leads to better quality output. As AI develops, so will the number of ways it can fit into people’s workflows. As long as I remain at the centre of mine, I’m happy.
