Arsalan Zaidi's Blog

The impact of AI on the life of a Software Developer

TLDR: AI/ML will be just another tool in the toolbox for developers to use. It is not going to fundamentally change the craft of developing software.

Maybe I’m a bit late to the party with this short piece, but there’s been a lot of buzz about how the latest AI (actually ML [Machine Learning]) tools are going to replace programmers. All the end user will have to do is type in a couple of lines in plain English describing his problem and viola! ChatGPT/Copilot or whatever else will vomit out code that can immediately be used. No pesky (and expensive!) coders to deal with; no ponderous requirement gathering, testing or any other of that SDLC malarkey. Just ask and you shall receive.

Now anyone who’s been in the industry for any amount of time will know that we get a new bit of tech every 5-10 years which promises management that if they buy into it, it will let them get rid of their programmers. Whether it’s COBOL, 4th Generation Languages, RAD tools, UML, or Low/No code platforms, the promise is enticing. Programmers are expensive and anything which will reduce cost and headcount is a win.

The problem is that programmers are expensive for a reason. Software development is not easy. It’s part engineering, part voodoo. Developers do more than just write code. In fact, writing code is a very small part of the process of developing an application. The larger part of the process is getting the end user to think about and articulate their requirements. Then those requirements need to be converted into code which is secure, maintainable, well testing and performant. The inevitable changes then need to be incorporated into the code base once the user has a look at the end product and decides he actually doesn’t want what he asked for and can you change the look and feel of the UI completely 😕.

The current set of AI tools work remarkably (but not perfectly!) well at turning out code which is close to what you asked for, but how precise was your ask? Did you specify everything you needed and were looking for? The tools don’t really dig into what you’re asking of them. Like a lot of tooling holding out enticing promises, they work well enough for simple cases and maybe even for 60%-80% of some specific use cases, but inevitably fall apart when you try to stretch them to cover all of your requirements.

For AI to be smart enough and empathetic enough to figure out what you actually mean when you’re trying to articulate your desires, you would need it to be actually intelligent; you’d need to achieve Artificial General Intelligence. Not even the most over enthusiastic AI prompter thinks that these tools are any close to that.

So what do we really have here? Tools like Copilot and ChatGPT are fundamentally autocomplete on steroids. The system tries to guess the next best token (for a given value of ‘best’) while generating its output. It’s actually remarkable that the current state of the art is able to achieve what it does but how useful is this in real life for a coder?

This kind of auto code complete may help reduce the amount of typing I end up doing, but if actual ‘coding’ is only 20% of what I do as a programmer, then even a 100% increase in productivity there doesn’t significantly increase my overall output. BTW, we already have tech which allows me to re-use the code created by other programmers; it’s called using libraries and frameworks. The code available there is not the hallucination prone regurgitations of a statistical token generating engine, but actual thoughtfully created (and tested!) code written by other programmers.

So what is ML good for in the context of the SDLC? I can see these kind of tools being useful for generating documentation for existing code or creating a lot of the test cases required for unit testing. Maybe it can be used to throw up quick POCs or the basic scaffolding of an app. A lot of time can be saved if the basic boilerplating of an application can be generated automatically. None of this is earth shattering though. It’s all just incremental and a lot of whatever time is saved will go in actually validating the output of these tools for correctness and fitness for purpose.

As Fred Brooks (of Mythical Man Month fame) once wrote, there is no such thing as a Silver Bullet. No one tool is going to magically increase developer productivity by an order of magnitude. Not AI and not anything else.

#AI #Software Development