It's no secret that artificial intelligence (AI) is transforming the software development world. But what's currently less discussed is the significant difference in architecture between traditional software development and AI-driven development, and the implications of this.
In the olden days, software development was deterministic, using logical statements like "if-else" to dictate the software's behavior. These rules were set in stone, and the software operated according to those rules every time. But with AI-driven architectures, things get a bit more interesting.
Instead of following a set of rules, AI-driven software learns from data and adapts to make decisions based on probability. Given the same inputs, you shouldn't expect the same outputs when repeated.
One of the biggest implications of non-deterministic AI-driven architectures is that it requires a different approach to testing.
Currently many AI applications are simple interfaces with an AI model or API, like OpenAI's GPT-4. But that is changing, as can be clearly illustrated from this video:
Apps built on top of these models will build increasingly sophisticated architectures to learn personal preferences, tone of voice (which can alter significantly for a person based on the context), and many other variables.
It's worth thinking about how this changes other aspects of software development.
Traditional software testing is relatively simple - check if the software behaves according to the rules the programmer has written. But with AI-driven architectures, testing is more complex because the software's behavior is constantly changing based on new data inputs. As a result, testing will need to adapt.
This means that automated testing needs to be designed differently for AI-driven architectures. Automated testing typically relies on a set of predetermined test cases that the software must pass to be considered valid. But with AI, these test cases need to take into account the non-deterministic nature of the software's behavior, which requires a more comprehensive approach.
The non-deterministic nature of AI-driven architectures also has an impact on product iteration. In traditional software development, product iteration involves making incremental changes to the software's behavior to improve its performance or add new features. But with AI-driven architectures, improvements to the product are much subtler than adding new features.