What do autonomous driving and software development have in common? At first glance, not much. However, upon closer inspection, some similarities can be seen, particularly in the creation process and the underlying goals. In order to understand the connections, it is worth taking a look at the concept of autonomous driving and then transferring it to the process of software development.
Advertisement
The concept of autonomous driving has been discussed for years, and what once seemed like a futuristic idea is now partly a reality. Essentially, autonomous vehicles aim to minimize human errors in traffic, which are responsible for around 90 percent of accidents. The basic premise of autonomous vehicles is the assumption that the self-driving technology will navigate traffic better and more accurately than an average human driver. Autonomous driving also has the potential to free up an extremely valuable resource: time. This allows people to engage in more fulfilling tasks rather than being preoccupied with the monotonous act of driving.
Janne Saarela is a Strategy Analyst at JFrog with a wealth of professional experience in technology and business strategy. He has an MBA from Oulu Business School, Finland, and is a former Nokia product strategist.
Two crucial prerequisites for autonomous driving are edge technologies and artificial intelligence (AI): They enable vehicles to process the data from IoT sensors (Internet of Things) in the vehicle itself, which enables reactions to traffic events in real time. Trying to manually program a machine to handle every possible driving scenario is not a practical endeavor. Instead, the vehicle must learn dynamically from its environment. The decision-making process of an autonomous vehicle depends on the availability of various IoT sensor data that digitally represent the physical world (as a “twin”). The more diverse the data, the more sophisticated AI systems can be used.
If you look at the development of autonomous driving, you can see a gradual decrease in human involvement in each phase. The SAE (Society of Automated Engineers) official autonomous driving framework includes six levels of automation, ranging from 0 (fully manual) to 5 (fully autonomous):
0. No automation: The driver retains full control of all driving tasks.
1. Driver assistance: The vehicle has a single automated system that allows the driver to take their foot off the pedal.
2. Partial automation: The vehicle is able to take over steering and acceleration, allowing the driver to take their hands off the steering wheel.
3. Conditional automation: The vehicle handles most driving tasks, allowing the driver to take their eyes off the road but still remain in control.
4. High automation: The vehicle performs all driving tasks under certain conditions, allowing the driver to focus on other things but still need to remain alert.
5. Full automation: The vehicle independently handles all driving tasks under all conditions. This means the driver becomes a passenger and is relieved of all driving duties.
AI in Software Development – A Story of Opportunities and Risks
The advantages of AI in software development largely correspond to those of autonomous driving: it is about minimizing human errors and creating time for creative activities. Since human resources are often the most costly aspect of software development, companies are incentivized to adopt AI-based systems to achieve more with less financial effort. In most cases, however, the quality of the data provided by AI is not yet sufficient to completely dispense with human control. Autonomous driving does not yet work without constant intervention by the driver, as unexpected and dangerous situations can arise in traffic. In some cities in the USA (such as San Francisco) there are already completely autonomous taxis without drivers, but in Europe there is still a long way to go due to ethical and legal ambiguities.
A closer look at the history of AI in software development reveals striking similarities to that of autonomous driving – the gradual reduction of human involvement:
- In the early 2000s there was little to no automation. Human control was required at every stage of the software development cycle, making the process largely manual. Problems were often identified by customers rather than internal teams.
- The mid-2010s saw the rise of containerization, cloud computing, and DevOps, leading to increased automation and efficiency across the SDLC. Routine tasks and procedural decisions have been automated based on predefined (hard-coded) policies and “if-then” rules in areas such as testing, code review, and CI/CD. This enabled research and development teams to focus on the creative aspects of their work with increased productivity – which in turn allowed for targeted control and acceleration. Development cycles were shortened based on agile principles and bridged the gap between development and operational activities. Problem management and resolution shifted from reactive to adaptive – with more seamless coordination between teams. The majority of problems were identified and resolved before customers even became aware of them.
Today, generative AI takes software development to new levels of efficiency and innovation. Automation goes far beyond routine tasks as AI-based solutions enable the creation of new content through a seamless human-machine dialogue. The increase in efficiency throughout the SDLC is just beginning to be seen, as AI acts as an inexhaustible assistant (copilot) making suggestions, explaining problems, generating code, monitoring processes, scanning repositories, making predictions and supporting decision making. This will further speed up overall code creation and increase output, resulting in more builds, more software to back up, and more frequent runtime environment updates. Machine Learning Operations (MLOps) can offer structured and future-proof processes for the development and operation of ML software. This process approach also supports their automated and uncomplicated integration. The concept of “liquid software”, in which small incremental improvements (binary-based updates) are automatically incorporated into all processes from development to runtime of the software with minimal downtime, is gradually becoming a reality.
- In the area of application security, AI can significantly reduce the time it takes to identify and resolve problems, thereby preventing malicious code from entering an organization in the first place. This starts with automated vulnerability scanning and detection using AI-based severity and context analysis and extends to automated remediation. Despite the above-mentioned advances, human intervention and approvals are still required until AI-based solutions have higher levels of trust and reliability. Development teams' eyes are off the road, but their minds must remain alert.
- In the coming years, the shift to a paradigm of full automation will begin, moving from a co-pilot (AI assistant) to an autopilot (AI decision maker). Development teams will not become passengers per se, but gradually the traditional roles and responsibilities of the people involved in designing, building, securing, distributing and operating software will change. Machines can be instructed to solve highly complex problems via a natural language user interface (e.g. in simple German or English), which requires programmers to develop new skills in order to steer the dialogue towards the desired state. Basically, the AI system should outperform the average human developer or other person involved in the processes. AI will further improve and automate decision-making processes, allowing companies to choose the best possible (data-driven) approach and tools to solve problems.
The trust placed in AI systems and their trustworthiness will be of utmost importance. The basis for this is comprehensive contextual understanding and ethical decision-making, similar to the challenges that exist today in autonomous driving:
- Autonomous driving systems rely on the data used to train the AI, and if this is biased, the system may exhibit biased behaviors. For example, if the training data consists predominantly of images of certain types of vehicles or pedestrians, the system could have difficulty accurately recognizing and responding to less represented demographic groups. This bias can lead to discriminatory behavior on the road, such as failing to recognize pedestrians of a certain ethnicity or cyclists wearing unusual clothing.
- AI also collects and processes a very large amount of data from sensors, cameras and other sources. The ethical challenge is to ensure the privacy of recorded individuals. It is important to clarify who owns the data, how it is stored and how it is used beyond the topic of vehicle safety. The balance between using data to improve technology and respecting the privacy rights of individuals is a significant ethical dilemma.
- The widespread adoption of autonomous vehicles has the potential to impact employment in industries such as transportation and delivery. As driving jobs become automated, ethical considerations arise regarding the displacement of human workers.
Ultimately, self-learning and self-healing capabilities will be essential in software development to detect, analyze, isolate and resolve problems while maintaining service availability. This means that intelligent software must be able to rewrite and update itself and add new features to handle new inputs. Similar to autonomous vehicles, the AI system must learn from its operating environment and adapt accordingly.