Artificial intelligence and uncertainty in software projects
Author: Valeriano Sandrucci
The Illusion of Certainty
In recent years, artificial intelligence has become one of the most discussed topics in technology. It is not difficult to understand why: it has the potential to profoundly change the way we live, work, and develop software.
The spread of AI has also generated a recurring phenomenon: the illusion of certainty. Many organizations look for definitive answers on how to adopt it, as if there were already established and universally applicable models.
A recent episode illustrates this dynamic quite well. An executive asked us to find an expert with five years of experience in a relatively new technology. The curious detail was that the technology itself had only been introduced three years earlier.
The episode may sound anecdotal, but it highlights an important point: the perception of competence and technological maturity often does not match reality. This applies both to individual technologies and to entire technological trends, which tend to generate expectations faster than their actual maturation.
A Technology That Is Here to Stay
Artificial intelligence is not simply another technological trend. It is destined to profoundly transform software and many other sectors.
At the same time, even among the most knowledgeable experts there is still considerable uncertainty about how its use will evolve in real systems. Long-term predictions inevitably remain blurred, and the most confident positions often reflect only a partial understanding of the phenomenon.
For those working in software engineering, this means accepting uncertainty as a structural variable. The goal is not to eliminate it, but to recognize and manage it explicitly.
Two Different Ways of Using AI
Our experience has shown that artificial intelligence enters software projects in two substantially different ways.
AI to support software development (AI4SE). In this scenario, AI acts as an accelerator: a tool for writing code, generating tests, or creating rapid prototypes. The primary impact is organizational. AI makes it possible to create a faster development cycle, with iterative refinements that help reduce both functional and technical uncertainty without compromising quality. It is the equivalent of a technical leverage mechanism that increases the team’s capacity without radically transforming the system’s goals.
AI as a functional element within applications (SE4AI). In this scenario, AI becomes an integral part of the product: recommendation systems, complex pattern recognition, predictive analysis, or intelligent interfaces that would previously have been unthinkable. Here, uncertainty increases. Requirements evolve rapidly, responsibility boundaries shift, and technical governance becomes critical. Initial decisions can have deep long-term consequences for the system, requiring a progressive and incremental approach consistent with the principles of Risk Aware Software Engineering.
New Design Challenges
When AI becomes part of system design, specific challenges emerge that deserve to be addressed explicitly.
One of the first concerns requirement definition. AI-based systems produce outputs that strongly depend on data and context, meaning it is not always possible to define a complete and stable list of functionalities from the start. Design therefore becomes a process of continuous prioritization and revision.
A second issue concerns technical governance. AI models are not neutral tools, and their adoption introduces decisions about how to validate outputs, how to monitor system behavior, and how to manage possible biases in the data.
Another aspect concerns responsibility boundaries. When unexpected behavior emerges from a probabilistic system, it becomes necessary to clarify how decisions are traced, how verifiability is guaranteed, and how operational responsibilities are distributed.
Testing also requires adaptation. The traditional approach based on deterministic specifications is not always sufficient. Prototypes, progressive validation, and metrics capable of evaluating probabilistic outcomes become increasingly important.
A Progressive Approach
Addressing these challenges requires pragmatism, experience, and an engineering model that is conscious of uncertainty. It is not enough to know the latest technologies or the most advanced LLMs: the work must be structured into progressive phases, uncertainty must be reduced before making major commitments, and the focus must remain on building sustainable systems rather than chasing rapid but superficial results.
A typical example concerns the development of a prototype for an internal application. The first phase may consist of a proof of concept limited to a controlled scenario, useful for understanding how the algorithm reacts to real-world data. Only after this phase does it make sense to transform the prototype into a more stable system, addressing topics such as governance, monitoring, and operational responsibility.
This type of approach makes it possible to maximize the value of the investment while reducing the risk of building complex systems before understanding the technology’s actual limitations.
Managing Uncertainty
Artificial intelligence introduces significant opportunities, but also new forms of uncertainty. Risk cannot be completely eliminated, but it can be addressed explicitly.
Accepting that some answers will only emerge during the project, progressively reducing ambiguities, and calibrating investments according to the level of available knowledge are fundamental elements for using AI effectively.
When this approach is adopted, artificial intelligence stops being an abstract promise and becomes a real tool for building useful and sustainable systems.
Author: Valeriano Sandrucci
