There’s no doubt that AI has turned an important corner over the past couple of years. AI is now capable of some pretty amazing feats and has upturned many industries in the way of working and the speed of delivery. Software development is no different and more and more tools are now available to aid developers in creating software faster than ever before. But is it safe? Should we be relying on it? Is there an alternative?
Put simply, there’s no going back on the use of AI in almost all industries. Its power has been felt, and huge gains already made on the back of it. But “with great power comes great responsibility”… and we mustn’t forget the “A” in AI – artificial. Humans of course can make mistakes, but there’s an ownership that usually goes with that; i.e. the human making the mistake will feel bad and want to correct it, and could lose their job as a result! Machines don’t get feelings (yet!) and making mistakes is just as inevitable but with no remorse and without any direct consequences.
So, should we be using it? Yes… undoubtedly. But in the right way.
Software development for example, there are 2 kinds of uses: “vibe” coding, and “copiloting” (the names are disputable, and often used interchangeably, but I’ll define what I mean by them here). Vibing or vibe coding often means relying on AI to deliver finished or almost finished code, often with a no or low techie, and trusting it enough to use it immediately – leading to the useful acronym “C.P.R.”, meaning copy, paste, run. But the acronym also reveals its dangers – CPR (resuscitation) is what your business might need if this is what you do!
The risks are so high and the dangers very real that trusting AI in this way is ill-advised. Copiloting on the other hand puts the tools in the hands of a developer who can firstly ask the right question, and secondly check and test the answer before trusting it in a live environment.
Asking the right question is important, as it ensures that the solution takes all circumstances into account with all fringe scenarios, and appropriate values. AI can and does make assumptions to fill in gaps so that an answer can be returned. The assumptions are unlikely to fulfil your needs directly, and a solution will have holes or unexpected behaviour as a result. Being precise in your instructions to an AI agent will help it hone in on a better solution, but even then testing and refining play a massively important part.
Testing should start with basic code quality tests. These will ensure basic guidelines are met and no obvious coding mistakes are included – you might hear developers talking about bad “code smells”!! Next should be functional testing, does the code actually deliver the expected result under normal circumstances. Usability testing comes next, this often involves a bank of test users as well as some experienced testers who make sure the code is sensible to use, and handles a range of typical user errors as well. Deeper testing then might come in the form of exception testing, or penetration testing, where deliberate acts are used to try to trip the code up – very important in security based apps such as banking, but these days all apps are targets for hackers and so suitable measures should always be taken. Lastly comes performance testing, sometimes wrongly skipped, but at a cost later on down the line. Making sure the code can handle the anticipated volume of users and interactions when needed can ensure it doesn’t melt down once live.
Some of these tasks can be partially automated, and AI can also assist, but to me it is clear that human intervention and oversight should still play a significant role ensuring these steps are taken, correctly managed, and prioritised. The job of a skilled developer has morphed into a hybrid role of software architect, manager, tester, quality controller. The actual lines of code may be more and more written by AI, but the need for a skilled developer to oversee the process is even more important now.
In summary, AI has already taken hold and there’s no reason not to embrace it, as long as skilled developers still have their hands on the tiller and eyes on the quality.