AI - the end is nigh

·

7 min read

This one is a short post about being a control freak. I didn't realize I was a control freak until this week, but, when it comes to AI, I think I may well be and it may be because I don't want to face the truth.

This post is about AI and is for the PMs, Business analysts, and most importantly, my brothers and sisters, the developers.

Over the years I have worked on lots of projects big and small. On big projects you are always part of a team and you trust and depend on your teammates to do their job. This might be the program manager, the project manager, the DBA, graphic designers, fellow developers, or anyone else working on the project. If you are the developer team lead you usually have several developers working under you and you trust them to deliver.

I have been a team leader in the past and enjoyed the job. I was happy to leave people to get on with it and trusted them to get it done. I would check regularly that everyone was cool and no one was having a nightmare. If they were, we would get it figured out as a team. Otherwise all good. If the PM, or anyone for that matter, tried to have a go at a team member for whatever reason, I was happy to step in and tell them to f*ck off. If there was a problem, bollock me, not the team member. I'm the team lead, which means I'm responsible, even if one of my team had done something stupid.

I thought this was a pretty good approach and it seemed to work. We got the job done. I like to think I was pretty good at this, until last week. Last week everything went to shit and I discovered that I might actually have serious management style issues. I may in fact be a control freak.

I have been using tools like Copilot for a while now, it's cool. Recently though I have been testing various LLMs to see how well they code. I have gradually been getting them to perform more complex jobs. I've been getting them to write documentation and test scripts in addition to the code. I'll be honest the results have varied depending on the LLM you use, but for the better ones, the results are phenomenal.

The results were so good, that I tried a little experiment. Could I get an AI to generate all the code for a solution? Would it be possible to break down a solution into a number of steps that the AI could build completely? If I did this correctly I could deliver a solution without writing a single line of code myself.

Rather than doing something trivial, I thought I would go for it. I took a project I had worked on a while back that took me a few months to deliver. There had been several "nice to haves" that were dropped from the project because there wasn't time/money. How fast could I build these nice-to-haves using AI? I won't go into the full spec except to say that it had a few twists and turns and some of the code was complicated which was part of the reason the requirement was left out in the first place.

I thought up a bunch of instructions for the LLM and got it to deliver the code. Most of it was fine, and the AI did the job. There were a few bits though that didn't hit the bull's eye. If a developer, junior, or senior had delivered the solution, I would have pointed out the problems/issues in the solution and let them go away and make the changes and not give it a second thought. With the AI I found this hard to do. I found myself taking the AI solution and tinkering with it myself. It was 95% there and just needed a couple of hours and I'd nail it.

What I should have been doing, and eventually did do, with reluctance, was to go back to the AI and ask it to have another go I added additional notes for clarity, explaining where the original requirement had introduced ambiguity. This took a bit of time, but not as much time as it would take me to code the solution. Every time I did this the AI came up with the solution. The only time it failed was on one piece of functionality that involved a 3rd party API call that is not particularly well documented. Other than that it was great.

What I still find odd, is that I was so reluctant to rephrase my requirement and let the AI have another run at it. In life, I would not dream of pushing a developer aside and taking over the job. I know that there are scenarios where I may have to do that, a live site going down for example, but none of those scenarios ever happened in real life to me or my teams, well not in the last 20 years. Yes, we had plenty of dramas, but we got them sorted as a team. Prior to 2004, it was a little more like the Wild West and making changes in production was far more common. They are days gone by though.

So again, I am asking myself, why am I so keen to push the AI out of the way at the first sign that they haven't nailed it the first time? Have I got a weird AI discrimination thing going on here?

When I did restrain myself and get the AI to have another go, or two, I got it to deliver and it delivered well. As a senior developer or team leader I was well pleased with almost all the code. What I did find out was that it would occasionally have a weird error that was so obvious and easy to fix that it did not make sense to ask it to do it again. It was almost as if the AI had made a few typos.

Here is a thing I learned though. I have been a full-stack .Net developer for more than 20 years. 14 months ago I started learning and writing Python. I have worked with SharePoint and its earlier incarnations since 2004. I am beginning to wonder if I went back over every one of those projects, could I now get AI to write every piece of code for me? In which case, could I get it to write every piece of code going forward? Would my job be to take a problem and break it down into enough steps that I could then get the AI to code each step?

I haven't had the chance to do it in anger yet, but I'm 90% certain that with the AI we have right now, in April 2024, I think I could get away without writing any code, or just the smallest amount. A year from now I will be amazed if I need to write any code. That is not to say humans will not be writing code, there will be a transitional phase, but I think the days of people writing lots of code are done. The AI can do it for us.

Our job will be to frame the task so the AI can code it. This may mean that we take a complex task or series of tasks and break them down into lots of little steps that the AI can then code for us. We won't need to write the code though.

Does this mean we will be out of a job, no, our job will change, rather than bashing out a load of C#, python, java, HTML, CSS, javascript - react, or otherwise we will be the guys writing the instructions.

If you are a web developer spending more than half of your day coding ask yourself why. You should not be. I think this is probably true of any developer, but I only know web development so I can only talk about that with confidence. Start getting the AI to do it for you. Whether we like it or not, our coding days are almost done. I feel a little sad saying that, there is a part of me that shall really miss it. However there is little point in avoiding the truth.

Now the real work begins because we can do so much more. Every project you wanted to do, but never had the time, all of those are back on the table. All the "nice to haves" that rarely get delivered are now within scope, potentially. So it is not all bad news.

Change is upon us and time and tech have almost caught us, my friends. Our coding days are all but behind us. Embrace the AI.

Bryan
PS, as usual, I wrote all this one. though I got Claude to do a summary for me.