
Much has been said in recent months about artificial intelligence (AI) and its potential. It's a technology that shows great promise in various fields, as it not only automates repetitive tasks but can also perform them apparently as well as, or better than, humans. However, it raises certain ethical questions that need to be reconsidered, such as the replacement of current jobs and response bias.
Software development is not immune to these changes, and the use of AI-powered tools will certainly change how we create new products and even how we use them. In specialized media and on social networks — well beyond the usual bubble of artificial intelligence enthusiasts — much has been written about advances in language processing models, particularly the now-famous ChatGPT. It's a technology that is, without doubt, disruptive. Anyone who invests 10 minutes of their day understands why: this tool can apparently answer almost any question, maintain a coherent dialogue without ever losing context, and even generate source code.
This last feature interests me particularly because, from the various tests I've run, the code seems quite coherent and structured, even if it doesn't always compile immediately or execute the request exactly without any errors.
This feature will undoubtedly change how developers develop, document, and test. If we think about software development's main activities, this tool allows a developer to explain a feature to it and also have it manage the related code. Of course, it may not be 100% correct, but it can be an excellent starting point for developing and building features.
From a documentation standpoint, it's also possible to provide the model with source code and have it respond with already-formatted, ready-to-use documentation, which could represent a real optimization of effort for this task.
Finally, in a task fundamental to development, ChatGPT and its successors can be a very good tool for testing and debugging code. As we've seen before, these tools are able to interpret code, so they can, for example, help resolve bugs, create batches of unit tests for specific blocks of code, or even create exploratory test scripts and acceptance tests for more complex solutions.
On the security side, these kinds of models also show promise, since, as they get integrated into development environments, they can detect insecure code or recommend changes that more easily comply with a given security standard, making it possible to write more secure code more efficiently.
It's also connected to privacy that I see one of the tool's biggest current challenges: privacy in the use of ChatGPT. Currently, in the version available to the public and according to its terms of use, ChatGPT can use all your conversations as training data to improve the model. This means that everything shared with the model, including private data and intellectual property, will be used to train new versions of the tool, which could, for example, result in it generating code based on private intellectual property.
This issue has been raised more and more with AI-powered tools; one example is the lawsuit Getty Images filed against Stability AI, a tool that generates images based on a dataset scraped from the internet. In that case, the company alleges the model was trained using its intellectual property without authorization.
Alongside this privacy and copyright issue, ethical questions also arise, extending well beyond software engineering: will the use of these kinds of tools automate jobs and lead to the disappearance of certain roles?
Based on the past, my answer would be yes, especially for repetitive tasks that require little human judgment. But it's in this notion of "judgment" that I believe the biggest ethical challenges may lie.
This model, even by its own creator's admission, can give false answers, partly because, since it's trained on a dataset, it can only be as trustworthy as the trust placed in that training data, which also raises questions of bias and discrimination, since it may infer concepts that aren't acceptable. Given this possibility of bias, any tool that integrates this type of model for decision-making will do so based on the same concepts.
AI shows enormous potential across many fields, but also ethical challenges that need to be weighed. Software Engineering will undoubtedly be affected by these new models, and various AI tools will change how we create and use new products. Currently, the biggest example is ChatGPT, capable of maintaining coherent dialogues and generating source code. Other tools won't be far behind, since Google has introduced Bard to the world, a ChatGPT competitor, and I believe more alternatives will emerge. These tools will also enable code debugging and real-time detection and correction of insecure code.
However, privacy and bias are the main current challenges, since all conversation content can be used to train the model itself. AI undoubtedly promises to revolutionize how we work, and specifically how software is developed, but we need to keep in mind the ethical and privacy aspects that using these tools raises.