User Submission: AI is a Bad Tool

ai

anti-pattern

productivity

software engineering

Editor's Note: friend of ByteCode.News Hideki Idoru submitted this for publication, and it has a lot of value even if not every point is agreed with: it's not difficult to find it's failure modes observed widely in the industry these days.

AI is a bad tool.

At least, AI is a bad tool for software.

I'll start with the positive side to get it out of the way. AI can be useful

if you perceive it as a data distiller. Whereas before, you'd put a thing into

your search engine, click on the result that sounded most promising, then scan

the page for the info you're looking for and process it in a way you understand,

AI -- if it's good and true -- condenses those steps for you. Indeed, search

engines today try to close the gap by inserting an AI snippet at the top

of their results, but the immersive part is your ability to follow up and

refine the info even further.

This used to take a long time to do manually, and it's genuinely easier to have

the machine do it for you. So it's not all bad.

But that's pretty much where it ends. If you use AI for anything else, and in

particularly if you use it to generate code, you're wasting your time.

Before I go into why, I have to take a step back and talk about the debate

about AI itself. It is often too emotional than it needs be. A lot of it on

the part of its detractors is driven by fear of losing their livelihood and

becoming essentially irrelevant. I don't think the emotions help, but

they do provide interesting insights into the human condition because, as I'm

about to show, the fear is real (but for a different reason).

In other words: yes, you're going to become irrelevant, and no, it's not

because the machines will become too smart for you. It's because you produce

garbage code and they can do just a little better.

The reason AI is a bad tool is that generally speaking, it is completely

opaque. A standard question one often hears is, "who is going to maintain the

app you had it build for you?" Well, if you're fully onboard the AI train,

you'd say: the machine. If it built it, it should surely also be able to

maintain it. That's not false.

The real question is, who can verify that what the AI built is good and true?

Recently, there's a lot of talk about AI allegedly finding security flaws in

software. That is an unsubstantiated claim. As such, it would need to be

verified by a non-machine, and arguably, the verification process would require

the same amount of effort or more than would be required to find the issue to

begin with.

The same logic applies to the app you have had the AI build for you. Who is

going to verify that it is doing what it is supposed to? It might look like

it is, but notoriously, Schein and Sein aren't the same thing. And lo: when

writing tests for existing implementations, AI is notoriously known for biasing

the tests to fit the implementation instead of blindly writing them from a

specification point of view. It doesn't solve the problem -- it just makes it

look like it did.

AI being completely oblique also means that 'AI engineering' or 'prompt

engineering' is a complete scam; same like SEO in the day, any claim of being

able to manipulate a blackbox machine in some clever way is bogus. You have no

way to establish correlation, and whatever patterns you might hallucinate

about however the machine works are unstable. In short: you don't have access to

the source code, and even if you did, you likely don't have the mental

processing power to understand it, and even if you did, AI moves too fast for

any patterns you might derive to be purposefully true. You're not inherently

stupid; the machine was just built by very smart people who are so smart that

they likely don't fully understand it themselves.

So AI is a tool you cannot look into: a machine-realised form of "trust me

bro". In that case, why is it so revealing when it exposes an ingrained human

fear of being irrelevant and left behind? Why do you revolt against it much?

Because any programming task you have the AI do for you today is on account of

you not properly abstracting your work. If you have AI rename a symbol; well,

this is something your LSP should handle. If you have AI scaffold your project,

probably the scaffolding is something your framework should take of. Every

line of code that you have your AI produce is likely to reduce abstraction and

increase repetition. All the AI does is reveal the lack of proper abstraction

in your stack. And the problem with that, for you, is that if the code were

properly abstracted, you probably wouldn't have a job, but as things stand, the

machine is becoming better than you at producing unabstracted code.

In other words, if all AI does is produce trivial code, then it should be

trivially abstractable. Were it to produce non-trivial code, which it doesn't,

that would beg the question how it did that based on its inputs, but that

would still gain you nothing due to its obliqueness and the fact you'd need to

go over something non-trivial yourself that you probably don't understand. It

either solves non-problems, or creates non-issues.

The grand point here is that most jobs in software have been useless long

before the advent of AI. AI just tore that mask off, and that is driving people

crazy.

So where do we go from here? How to deal with the consequences of a software

world that, accelerated by AI, will become a dead graveyard where no one has

anything to do, because AI does all the useless, unabstracted work, and a

select few geniuses operate above the aether?

I unfortunately don't have a good answer to this. Maybe people need to go back

to following their passion, instead of chasing the ghost of AI and its fake

promise. Maybe being passionate about something you build, understanding it

fully, owning it completely, and abstracting it properly so it never falls

prey to the menace of AI, is the only way forward.

Comments (0)

Sign in to comment

Sign in to comment

No comments yet.