Was coding actually ever about the code?

Anton McCoy

By Anton McCoy

How the introduction and improvement of AI is just another step, albeit a massive one, when it comes to assisting coders in the task of coding.

Let’s start with the basics and some facts, I’m not a young man anymore (as much as my mind wants to think overwise). I have many years of experience and history under my belt; from discovering the internet in the mid 90’s, so starting as a junior developer, to senior, to division head, to head technology.

After some early attempts to look at AI with, I have to be honest, pre-defined negative views on it (certainly when it came to the hype over the reality), I spend a weekend giving it a go. This was in the early days of AI and after dropping $20 of my own cash, I tried to build something, and it didn’t work correctly. I then spent a period prompting the AI to fix the issues it produces with no luck until I ran out of credits.

My views kind of confirmed, I walked away thinking it was just not ready. I then gave it another 6-months before trying again; this time will a different mind set and more of a plan.

The first time I think I’d fallen in what many might call the ‘vibe code’ trap. Just prompting with no clearly laid out end goal, or at least without a prompt that explained what my end goal might be. This time and thinking about the different approaches made me realise something; AI it’s a solution machine (it never will be), it’s a ‘next word prediction’ machine, nothing more.

Why do many AI projects fail?

I have read that around 90% of lovable project fail, along with the fact that 80-95% of AI projects fail or stall in ‘pilot purgatory’, and this made me think why. After all over the last 3 months myself and the team have built something like 15 AI tools / solutions, all of which are outside their pilot stage, and are being used in a business setting without any issue. And the only reason we have been able to produce so many so quickly, when it comes to the code production, is down to AI.

So why are so many projects failing when it comes to AI, however we have had a near 100% objective success rate? I believe these failures fall into the following brackets:

  • The tool you have produced has no business / consumer purpose
  • The solution is poorly defined or designed (just not well thought out)
  • The producer of the solution actually doesn’t know how coding works at a ‘coding level’

The first one is obvious, if you make something no-one wants to needs, it will go nowhere.

The second reason probably the most interesting, I’ll go into more detail on that one later.

The third reason is why I thought about this post in the first place; coding isn’t about the code… but in many respects it has never been (at least since the 90s). Now sure you don’t want to produce bad code, weak security code, or spaghetti code; however learning to code is about the best practices of coding, not really the syntax of your language of choice.

What does learning to code actually teach you?

When I started learning code (as a schoolboy playing with BASIC and Fortran), even though these languages are very different the principles are the same. Collecting data, storing data, ordering data, processing data, filtering data, combing data, separating data, replacing data, displaying data.

So this got me thinking, you need to know, likely properly know, how you might deal with each of these steps (and loads more, that was just a random list I thought of), however the syntax in different languages to achieve each one is a secondary issue.

You might know you need to loop through an array for some reason, you might need to collect some data from different locations to create that array in the first place, you might then needs to sort a resulting array by a child key value (instead of the primary key), and then display the results on the screen in a table.

The first language someone learnt was the application of this thinking, you learn the syntax of that language at the same time as the principle of what you are doing. You might then learn a second language, and the realise the syntax is different put the principle is the same. You then learn a third language and then it hits you, the code isn’t the skill, it’s being a coder that is the skill.

So, the issue became learning different all the different syntax for different languages. Well back in the day, you would work out the correct syntax for what you were trying to via a physical book (if you can remember those); it was most likely an O’Reilly book (or [whatever] for dummies). Then in the early 00’s you might have a searchable PDF where you still needed to know enough about the syntax to find how to use it, then websites served as guides to speed up that process, code editors started helping with autocompleting, then search engines started helped, then sites like stack overflow… now the first port of call is AI.

Can you can use AI in you code editor, to fix or write a function for you, this is massive leap from copying and pasting something from stack overflow, but that’s basically the same (not least since AI probably got it’s answer from stack overflow in the first place). But AI can do much more than this, it can make the whole solution.

This has resulted many developers (coders), certainly the younger ones, to lose the most important aspect of coding; knowing the principles of what you are trying to do. Now other great improvements have helped, for example vite being much smaller and smoother when compared to nginx, Apache, or IIS; however again this might become a skill gap not knowing how these more mature web server solutions work.

Only today I needed to say a system that was working locally on vite offering a localhost:3000 connection so you could see the solution, only to have to place it on a development machine with nginx being the web driver; thus needing to create a reverse proxy in nginx to expose the vite localhost port 3000 experience that was baked into the solution. Sure, it’s possible, but you don’t want AI messing around with your production server’s nginx config.

However, trying to become ‘old man shouts at cloud’, so I will move on. The point is that AI is the biggest leap is assistance, however it’s still just a tool; even if it’s the best tool developers have ever had… but as the base level, coders having needs to know ‘all the code’ when it comes to the syntax for at the very least 25 years.

A solution is based on how it is functionally designed, not the code it is written in

Now going back to the second of those 3 points, something will fail if it is poorly defined or designed (with the design talking more about user and data flow); this was the big one for me. When I first looked at AI my prompt and prompting was really simplistic and open to countless interpretations. One of the main issues is one this AI isn’t is a moody, grumpy senior developers that will tell you that the idea sucks, and you suck, and how you haven’t thought about x, y, or z; that there isn’t a proper plan or brief. Instead, it will just do as it’s told and build what you asked for, adding loads of assumptions along the way as it wants to help. The issue with this is that all the assumptions might start pushing the code or the solution in the wrong direction, as well as building foundations of sand for your project castle. This is where the concept of ‘vibe coding’ comes from in reality; just shooting from the hip with ideas and modifications without any consideration for the ramifications of any of those steps taken.

This approach is great for the AI companies as you will burn through all your tokens fighting with the AI to get it to do what you want, but without you having the suitable technical knowledge, vocabulary, or skills to ask the right things.

This approach is actually along the line of agile development, where you have a loose overall objective, but you break everything down into sprints with story points, aiming for the goal. Where this falls down is that a human developers also has sight of the overall objective, not only the statement put the approach they might take for sprints further down the line (as they can see them coming). An AI can’t do that, mainly since you haven’t told it anything about the client, their approach, your companies coding standards, that it will obviously need x, y, & z at some point …etc.

The key thing I have found that when it comes of AI being your coding agent, instead of just a developers coding assistant, you need to work within a more classical waterfall approach. You need to write a full technical brief, a full specification document, you need to iron out all the user flow, data flow, data management before entering your first prompt. Looking at the internet nowadays, to ensure this isn’t seen as a backwards step, waterfall has been rebadged as ‘Spec-Driven Development’

Like in the past, this document will take time and effort, countless re-reads, and modifications to ensure how every aspect of a solution is going to work. It requires input from all the stakeholders and, importantly of all, the technical specification needs to written by someone with enough solid coding knowledge and experience to write with enough technical detail to remove any assumptions.

Without the detail, you just create a devil

When I was Head of Technical Development, this would be like write a brief for a very junior developers, explains in almost too much detail exactly what is required, as being junior they won’t make the same (correct) assumptions a senior developer might; so you have to spell it out.

Now this isn’t having a go at junior developers, we all start without the experience and war wounds of working in the real world; however, at a base level, AI is just like a junior developer, only lightning quick at code production with access to every book. AI doesn’t ‘know what you mean’ by the way you said it, or due to the client the project is for.

This is why I have gone from the approach of vibe coding my way out of all my credits (the way various YouTube and LinkedIn pieces might tell you), to something that’s a lot more boring and less sexy but that actually works.

Spending hours if not days writing out all the specifications, technical details, functionality logic, user management, data management…everything in something like word. Often getting from 12-30 pages long, however having everything covered for the whole project. Then this is turned into a markdown file, converting everything into a format more suitable for an AI system.

Then instead of just chucking all that in a prompt, getting the AI to read and understand every aspect of the project (as they are generally too large to even attempt to one shot it). Then you can ask the AI to break down the overall project into different tasks, sorting out a priority order, but keeping every other aspect of the project in mind. Maybe adding some temp functionality or temp data feeds (as they don’t be build in the early stages), so the front end can be worked out without the back end being ready; again produced in a way that this temp data feed can be removed from the project when it is no longer required).

What is interesting is that this, again, makes the actual code aspect of coding quite low down the list of important things. It also means we are able to build solutions both quickly and correctly; burning many, many fewer tokens with the AI companies as the AI fully understand that was expected of it.

Conclusion

So, in conclusion, the reason 90% of lovable project fail, and between 80-95% of all AI enterprise project fail isn’t really the fault of the AI itself. It’s also not usually directly the fault of the users producing these failed projects either. Instead, is tedious mix of over-hyping what AI can do, promotional material suggesting your million pound (though most likely dollar) project is just a prompt away (spoiler: It isn’t), and that AI makes everything quicker.

At the title and intro suggested, it makes the production of the coder quicker, but you still need to know the principles of coding, and have the full (and I mean full) documentation of your idea; not just something that’s floating in your head for AI to turn that dream into something that works.

Sure, it’s still true that if no-one wants what you made, this makes no difference; however, I don’t think the AI marketing would warn you about that. Just like they don’t warn you that to get the best results out of AI is produce the tediously long functional requirements and specifications that has been hated for so long that agency land created the whole Agile approach to try and avoid having to do it.

AI it all about that retro documentation; what a less exciting time to be alive 😉

Recent Posts

The 7 deadly sins holding back UK small business websites in 2026

The silent killers stunting your business growth.

AI in coding… So, is it going to replace developers?

A personal view on why AI is a powerful new tool for all developers - not their replacement; instead more like giving an accountant a calculator.

Low hanging fruit can be the cherry on top

Discover the most effective optimisation tried-and-tested steps to make your small business website stand out.