Software Development and Fear in The Age of AI
There seems to be a lot of fear mongering in the software development space by well known people (The end of the Jr Engineers, YouTube Coders are LYING to You. Here's How.). In this post, I’d like to offer my anecdote about the whole AI situation. My thoughts are at the end of the article.
My Experience
I graduated not long ago with a master’s thesis in AI. In our university, there is a mandatory six months project at the end that you’re expected to do with another classmate. In my case, the classmate reached out to me and asked me if we can do the project together. I was hesitating at first since I wanted to do it on my own, but it turned out that I should have said no because 5 months into the project’s time and with nothing written on the masters thesis nor coded, my classmate said he’s dropping out after weekly exchanges with him saying he’s working on a solution. So I had to come up with a solution to the whole project in a month, which ended up being done in 20 days and included:
The research and thesis, which took a huge chunk of the time because there was so much research to go through, I almost went nuts.
The code which didn’t take that much time since I was proficient with CRUD1 apps.
And finally the presentation.
The project’s main problem was to engineer a system that is able to record LEA’s2 conversations with citizens, while offering two AI tools: contradiction detection and question recommendation (project's GitHub repo). Without going into more details of the project, I used gpt4-o and Claude to accomplish some of the project’s tasks. I mainly used gpt4-o for:
translating from English to French since it’s a department requirement to do the thesis in French.
asking gpt4-o questions about which is better between this or that in order to validate my choices, which sometimes gives wrong answers for not so obvious questions.
Most of the UI code was done by gpt4-o. Since I was proficient with react, I only made minor adjustments and made sure to integrate the generated code with the rest of the codebase.
crafting emails in French to send to the committee and supervisors.
And I used Claude at the end to generate database queries given database table creation queries.
From the experience I had with these LLMs3 it seems like they suck at solving rare problems. If my project’s problem was the creation of a email spam detector, there is no doubt it would’ve offered me a good solution since that is a well known problem. But since this was contradiction detection in Arabic text, which is a hard problem in NLP, when I prompted it about it, it gave me solutions that were not adequate for our situation. Even for question recommendation, it gave me solutions that were outright wrong. Proving what these LLMs really are: bullshit generators. However, I can’t deny the huge help they provided, specially in their ability to translate English to French and fix the French language mistakes that I was making, they made me look proficient in something that I suck at.
What I learned from dealing with these LLMs is that they help a lot when they do mundane tasks like creating a database query given a human language text about a functionality, with the caveat being it might spit out old code that might lead to errors, so you have to spend some time looking for the modern equivalent of that code. They do well when prompted with a human language text that tells them exactly what to do, like give me the react code that does this and that, or give me the implementation of this well known algorithm with this dataset, leaving you to do the minimal adjustments needed for your problem. And they also do well the more context you provide them of your problem. But these LLMs fall very short in terms of coming up with solutions that don’t exist in their trained datasets, or specialized solutions for your particular edge case. These solutions could probably exist in their datasets, but it’s hard for it to choose the right solution so it ends up spitting a random solution that doesn’t quite solve your problem. gpt4-o even started hallucinations references when I told it to provide references to the text it gave me so that I can put them in my thesis.
My Thoughts
The way I see it is that in the near future, companies will enforce the usage of LLMs to it’s developers. So, software will be implemented faster than it was before, which is tempting for the companies as they’ll end up needing less developers in their team. However, the need for software engineers will increase since these LLMs don’t yet know how to come up with solutions tailored to specific problems never seen before. Nor are they able to better judge a good solution from a bad one. So, you’ll always going to need that engineer that can make that decision.
“be an engineer, not a frameworker” is probably the quote of the decade.
But it certainly has never been more easier than now for solo entrepreneurs or startup owners to code, as these LLMs make developing the mundane things in software that require somewhat of a skill faster, which let’s you focus on the more important aspects of your software, such as the architecture style and decisions. Leveraging AI into your workflow is definitely a necessary skill in this day and age.
Create, Read, Update, Delete
Law Enforcement Agencies
Large Language Models