AI is revolutionising everything. In particular, it is challenging existing jobs and entire companies. What influence does AI actually have on us software engineers ourselves? And what does that mean for our company, Renuo AG? In this blog post, I try to put current events into perspective.
Nothing remains as it was
In 2011, software engineer, entrepreneur and venture capitalist Marc Andreessen (of Andreessen Horowitz) predicted in the WallStreetJournal that software would eat up the world. In 2017 - six years later - the CEO of Nvidia Corporation, Jensen Huang, seconded that software would eat the world and AI would eat software.
Again, six years later, we know how right they both were: The majority of all economic sectors are based on software. And at the latest since OpenAI's release of ChatGPT, it has become clear that nothing stays the same. This includes our core business, writing software.
We work more productively
The latest developments in the field of AI primarily make us developers more productive: we achieve more in less time. On the one hand, Code AutoCompletion helps us to do this. This is an AI-supported model that (analogous to Google search) predicts how the currently written line of code might end. On the other hand, with ChatGPT we have a new tool that can relieve us of drudgery within individual application components. Typical tasks for this are the migration of individual documents from one version to the next or the interpretation of a code snippet. For the time being, this means that trivial tasks have become even easier and we are even faster at them.
Speech based models
Currently, the tools are not (yet) able to solve tasks with contextual knowledge (e.g. debugging) or to completely replace our work: The supported complexity is (still) limited and proposed solutions can be bad, or simply wrong. Especially people with little experience can be led astray by arbitrary inventions (in technical jargon this is called hallucination). We have to be aware: tools like ChatGPT are language-based models. Based on training with vast amounts of data, they predict the probability of a word A following a word B. Speech-based models cannot think logically, but "only" imitate well.
The predetermined journey seems clear
It seems clear that in the future code-based (not: language-based) models will be able to write entire applications. When an AI can write entire applications, two topics gain even more relevance: Tests and quality.
Tests, because systems are no longer necessarily deterministic and you want to make sure that an application really works (you'd rather trust a test than a model-based AI). Maybe one day we will only write the tests (e.g. in Cucumber format), and AI will design code that runs against the tests.
Quality, because pure functioning is not enough to build sustainable applications. There are always various implementation options for the same goal, and quality determines how stable and low-maintenance (or not) a piece of software is. In technical language, this is called software architecture.
Both tests and quality are things that have always been central to Renuo. This does not mean that we do not have any homework to do.
Our homework
Following on from the previous point, it is essential to place even more emphasis on quality and testing than we have done so far. Sooner or later (more likely sooner) there will come a point where AI can create an entire application and agencies that can "only" write code will be replaced by AI. Low-cost offerings - typically in near- and offshoring - will be the first. Following on from this, we must also realise that the customer relationship must be placed even more at the centre. Just coding will no longer be enough in the future; AI will be able to do that too.
With the advent of ChatGPT, a new discipline has also emerged: Prompt Engineering. The term is used to describe the skill of giving an AI the task in such a way as possible that the result obtained corresponds to the wishes. In order to be able to use AI tools productively in the future, we must train ourselves in the field of prompt engineering.
Rapid prototypes and audits
With the advent of AI in the code generation space, there are also some new opportunities for us:
During design sprints, we can quickly create working (not just clickable) prototypes. With prototypes, quality plays a subordinate role.
Analogous to the introduction of Microsoft Excel (these feelings are reminiscent of the introduction of AI tools) and the ability to write VBA programs, many AI-created programs will one day no longer function sufficiently. It will take agencies like us to understand and optimise them.
Applications under or with the use of AI are no longer necessarily deterministic (input!=output). Audits to see if the code actually does what it should could become more important.
AI, rented from the oligopoly
From numerous projects with AI, we find that in a software project with AI, many components are taken out of the hand: Software as a Service (SaaS) within the software, connected and configured via an interface - for example for text recognition, image recognition or content generation. So, analogous to videos or music, we will own less in the future. These services are offered by a handful of big players like Amazon, Google or Microsoft and currently they form an oligopoly. Due to the immense computing power required for this, only they are in a position to offer such services. There is a global competition and the decisive factor is the computing power (GPU).
In terms of collaboration with clients, it is likely that the non-deterministic nature of AI will change our collaboration from proactive to reactive. This seems about as tempting as the increase in plausible forgeries that our society has to deal with.
Conclusion
Currently, AI makes us more productive. However, I expect AI to take work away from us piece by piece and we can only remain by consistently pursuing quality, testing and customer focus. Moreover, it is essential to maintain our commitment to constant education. AI is unstoppable and it is up to us to adapt to it, not resist it. Or as Friedrich Schiller put it: If you don't move with the times, you move with the times.