Will A.I. replace software development jobs? And does that mean software development is still a good career choice for you? Let's look at one A.I. tool as a "case study" for how software development is evolving in this brave new age.
Devin is a new A.I. tool designed by Cognition AI to work as a fully autonomous software developer. Cognition AI says this about Devin: “Devin is a tireless, skilled teammate, equally ready to build alongside you or independently complete tasks for you to review.” So far, its creators are not claiming it can build perfect software.
And yes, this leads to the consideration of how this will impact human software developers. Will Devin and other software development AIs automate tasks currently done by developers, or even replace them entirely? Or will it create new opportunities, requiring collaboration between humans and AI?
What Does Building Original Software Entail?
Software is usually the result of work and input from many different people. Here's a breakdown of the typical team involved:
Users and Stakeholders: These are the people who will be using the software and likely investing money into its creation.
Programmers: These are the ones who write the code.
Project Managers and Product Owners: These people manage the direction of the software. They use Agile technologies to keep the programmers aligned with the specifications created by the stakeholders and users.
Testers and Quality Assurance People: These folks make sure the code functions correctly and conforms to the original specification.
Why is it Difficult for A.I. to Build Software?
A.I. excels at processing vast amounts of data but can struggle with the intangible aspects of software development that rely on human experience and user nuances. In other words, A.I. is challenged by two key elements of software development: gathering information from people and using background knowledge to derive common sense about users’ needs.
Gathering Information from Other Humans
Software developers have to be skilled at spotting potential issues and ask specific questions to stakeholders and SMEs. Most custom software is built to assist people with a certain skillset or profession, always leaning on the specific needs and expertise of those users in the creation process. These individuals are known as subject matter experts (SMEs). However, SMEs often aren't software developers themselves.
Here's where a skilled software developer comes in. By asking the right questions and collaborating with SMEs, they can translate those needs into a clear and detailed specification for the software. This specification acts as a blueprint for building the software effectively.
For example: Imagine a utility company needs new billing software. To build it effectively, the development team needs to lean on SMEs to understand the utility's workflow and billing processes. This information gathering can be tricky. Utility employees, accustomed to their daily routines, might overlook crucial details that seem second nature to them. The developer's challenge is to uncover these hidden details through interviews and discussions throughout the building process.
Using Common Sense to Understand Users’ Needs
Many years ago, A.I. researchers developed a theory that the crucial difference between human and machine knowledge was common sense. Humans possess a vast amount of unspoken, everyday knowledge we acquire naturally through observation and experience. Think of how a child learns to turn on lights – there's no formal instruction, they simply mimic what they see adults do.
Today, generative A.I. systems address this challenge through a technique called "pretraining." These models are exposed to massive datasets, often from sources like Wikipedia, to mimic the way humans acquire background knowledge. This "pretraining" allows them to grasp concepts and relationships that traditional programming struggles with.
The Importance of Trust in Software Development
Can the A.I. be coded to consider everything that the utility employees and the software developers can together brainstorm? We’ll almost certainly get there eventually, but not for a long while. Even then, would we trust it?
As A.I. becomes a more and more regular part of a software developer’s workflow, the need to check and understand the work A.I. produces will remain key. This is nothing new. For years developers have relied on Q&A forums such as Stack Overflow where people ask questions and others provide answers, often in the form of code samples. As a coding instructor and a developer with decades of experience, I tell my students that I use Stack Overflow a lot, but I never take any code at face value. I read through it, make sure I understand it, and then see if it truly does what I need. Lastly, I test it before using it in my production code.
Today, I tell my students to use the same approach with any code created by an A.I.
Becoming a Software Developer with AI Tools like Devin on the Horizon
History shows us that technology usually creates more jobs than it replaces. The software developers of the future will use tools like Devin to great bigger and better things, but the human creativity, communication, and nuance will always be part of the field.
So, should you become a software developer?
Absolutely! Your friends and family might say you’re crazy, but even when I entered the field in the late 80s, my grandfather told me I was crazy. “Computers are going to go away soon. Lasers will be the next big thing,” he said.
All these decades later, I’m still gainfully employed.