Reading:
ChatGPT: a Developer’s Friend or Foe?

Image

ChatGPT: a Developer’s Friend or Foe?

In a remarkably short length of time, AI has become a part of many people’s everyday lives, revolutionising industries, automating a wide range of labour-intensive tasks, and enabling companies to maximise their productivity.

However, artificial intelligence has also sparked controversy for replacing workers in the programming, writing and entertainment industries. In this article, we’ll explore the extent to which AI is a friend to developers, or perhaps a foe.

ChatGPT a developer’s friend or foe

Popular AI Tools

There already exists a broad range of AI-powered tools which are tailored towards completing different types of tasks. Some of the most powerful market-leaders in the software development world include:

Top 5 AI tools. GitHub Copilot

GitHub Copilot

A cloud-based coding tool developed by GitHub and OpenAI.

Top 5 AI tools. Tabnine

Tabnine

A tool geared towards enhancing coder productivity and accuracy.

Top 5 AI tools. ChatGPT

ChatGPT

A natural language-processing chatbot tool which aims to emulate human conversation.

Top 5 AI tools. Claude 2

Claude 2

One of the leading rivals to ChatGPT, with a similar chatbot interface.

Top 5 AI tools. Google Bard

Google Bard

Google’s answer to ChatGPT and ClaudeAI, with the ability to draw information directly from the web.

How Developers Use AI

These tools quickly became popular with developers, who have managed to improve their productivity with AI. In this section, we’ll explore the main ways in which this is being done.

Some AI machine learning models enable large datasets to be analysed quickly and accurately, and for insights to be drawn based on results.

One of the most popular ways to use AI in software development is to eliminate boring or repetitive routine tasks, freeing the developer up to spend more time looking at the big picture and focusing on solving creative problems.

Similarly, AI automation enables mundane and repetitive tasks to be carried out by AI. Tasks such as code generation and system monitoring can be great candidates for AI automation.

Many AI tools are already great at completing communicative tasks such as speech recognition and natural language processing, both of which are important to a modern and functional software-user interface.

AI can even reliably be used to identify vulnerabilities in software much quicker than a person could.

Also, recommendation systems can benefit greatly from AI integration, learning more about users based on their behaviour and preferences, and guiding them to the optimal page or product. This is particularly relevant in the development of e-commerce platforms.

These are just some of the many ways in which developers can use artificial intelligence to improve their work.

What SPG Software Engineers Think

Regarding the incorporation of AI into their day-to-day working lives, feedback from SPG engineers has been largely positive, but not without reservations. From these first-hand accounts, we can glean a great deal of insight into the true usefulness and drawbacks of artificial intelligence. Let’s take a look at what they had to say…

“Personally, I use ChatGPT as an enhanced and interactive version of Google. Currently, I use them approximately fifty-fifty.”

“Many people were frightened by the emergence of chatbots and believe that developers are no longer needed because a chatbot can generate any code in any programming language. I think it's a cool assistant that allows developers to focus more on ‘what I'm doing and why’ instead of concentrating on ‘how to do it.’”

“[AI is like a] pocket version of a [Project Manager or Technical Lead] that lacks the context of your project. [...] Its responses are not always valid and may work well in one case, but not at all in another.”

“I consider it crucial to have a good understanding of the system you are working on: Know what the system is about, what problems it solves, who uses it and how. Of course, applications can be quite extensive. Understand the approaches, technologies, and application architecture being used. Sure, the chat can solve a specific problem using its known methods, but does this solution align with the team's agreements? Does it comply with the approaches dictated by the application's architecture? Be aware of integrations with other systems. By providing such context to the chat, you increase the chances of it generating a more suitable solution for you.”

“The most common-use cases of the chatbot in my daily work are: Automation of routine operations. I use many bash scripts daily and often turn to the chatbot to automate various routine tasks on my local machine or server. For example, I might want to execute a query in N databases located on different servers. Simple data mapping. For instance, when I receive a response from a server with a specific interface and want to convert it into a more user-friendly format for presentation, I provide the chatbot with input and the expected output and ask it to write a function to achieve this. Usually, these are pure functions, and the chatbot handles them quite well. Personally, I usually prefer Arrow Functions, so I can ask it to adjust the generated code based on the project's conventions. Writing tests. The AI chatbot works well for the same pure functions that have a single responsibility and no dependencies. The simplest example would be a function that compares numbers. The chatbot can then easily generate a set of test cases and even write tests for it. Learning. Often, there are situations when I don't know where to start or what materials to choose for a specific topic. For example, I can ask the chatbot, "I want to learn Scala programming, where should I begin?" Text verification. The AI chatbot greatly simplifies the process of writing documentation, reports, and so on. For example, [the AI chatbot can fix] a poorly written daily report.”

“When working with an AI-based chatbot, it is important to remember that it does not replace the need for learning. The solutions it provides require clarification and additional validation from the developer. Sometimes, it may generate non-functional or outdated code, or a database query that leads to unexpected data deletion. This tool should not be seen as a magical bullet that knows everything about everything. Without basic knowledge, using the chatbot will result in copy-pasting with the hope of ‘it will work… I hope.’”

“It is essential to dedicate time to broaden your knowledge and deepen your understanding of the technologies you are working with. The chatbot should be seen as an assistant and not a substitute for learning and critical thinking.”

It should be noted that the above feedback applies to ChatGPT, and not AI tools in general, but, clearly, using artificial intelligence for software development purposes is multifaceted; it is helpful, but not without its drawbacks. On one hand, AI has many applications, reducing the number of mundane tasks developers need to complete. But, on the other hand, its flaws and weaknesses make clear that AI is far from perfect, and in no way is it ready to replace the human element of the software development process.

AI Tools, Information Security & IP Rights

The implications of AI tools in software development stretch beyond simply boosting productivity and automating simple tasks. AI introduces concerns regarding intellectual property rights, and raises the question of who actually owns a piece of code if it was AI-generated.

The ethical and moral implications of using artificial intelligence have been the subject of popular discourse for much longer than AI has been practically usable. Whilst there are not yet standards in place, it is essential that IP rights and information security are safeguarded, if the world of software development is to remain free, innovative and creative.

Conclusion

Clearly, AI offers a wealth of great opportunities to those who are willing to embrace it. Artificial intelligence can substantially boost productivity and automate routine operations so that developers can spend more time solving creative problems.

However, it also presents a whole new range of risks and threats as far as software development is concerned. It’s clear that AI isn’t ready to replace developers, and that it’s not without issues, but AI isn’t going anywhere anytime soon, and there may well be additional new challenges on the horizon.

Related Stories

Machine Learning Algorithms
February 23, 2023

Machine Learning Algorithms: Improving the Performance of People and Companies

What is Machine Learning? How Machine Learning Algorithms Can Improve the Performance of People and Companies?

Lightweight Desktop Applications with Gio UI
November 11, 2021

Lightweight Desktop Applications with Gio UI

Git as the core of the dev process illustration
November 13, 2020

Git as the Core of the Development Process

How exactly do we manage our source code with Git and how does the Gitflow branching model fit into our customers' version control processes? Read on!