Will Software Engineering become obsolete?
No, it won’t but keep reading to figure out how AI can make the entire software development easier (if used in moderation), learn more about the major tools trying to enter the market, one particularly hateful Twitter bot from a couple of years back and an artsy one producing shockingly good mages.
Bippity bap, AI is after your job.
“The future is now, old man”. Welcome to the era of digital currencies, self-driving cars, teenage influencers making millions of dance videos, and automation slowly eradicating so-called bullshit jobs and a variety of other soul-crushing positions.
Although Graeber specifically excluded software engineering positions from the honorable company, the question is how deep the process automation can reach into the software development branch, and which parts of it can become obsolete at some point.
Most of the straightforward, and somewhat inefficient positions, usually including some form of labor, have been slowly but steadily transformed by automation ever since their creation, to make things easier, faster, and more profitable. Lamplighters, lift operators, and people redirecting phone calls by manually switching the plugs are gone for some time but were full-time jobs not a long time ago. Receptionists and cashiers at retail services that keep getting replaced by touch panel kiosks, automation of courier services, healthcare, data entry or bookkeeping, all these and many more can serve as less archaic examples of automation doing work done by people up till now.
It is estimated that 46 percent of all current jobs could be automated using technology. Machines are faster, sturdier, don’t need rest, and do not complain.
Software development is a branch of technology where things move so fast, that you can observe the changes almost in real-time. For instance, when software testing became the new hot thing, automation tools started showing up. This is merely one of many areas where iterative and time-consuming parts have been automated away. The question, I would like to ask is whether developers are self-sabotaging their futures by building automation tools, or will the robots only take the energy-draining parts?
Taking the rapid progress AI has made over the last few years into consideration, it might seem like it’s only a question of time until its superiority over complex issues clearly outdoes the human one. AI has beaten humans in a variety of areas where we were once undisputed champions, recently stepping its foot into writing content or even composing art.
Resistance is futile:
GitHub hosts over 73 million developers and more than 200 million repositories including over 28 million public repositories, making it the largest source code host on the globe. More than 35% of newly written Java and Python code on GitHub has been suggested by its Copilot AI, since the program’s launch back in June 2021,
Demand doesn’t budge:
Still, if AI is writing slightly more than a third of new code for some of the major programming languages on the world’s most renowned industry platform, shouldn’t the Copilot lead to a 30-something percent drop in demand for human programmers? The market demand for software developers remains high after it doubled a year ago (2021).
Is AI a tool for developers or a fully-fledged coder:
Based on thier purpose, there are different types of automated coding tools available on the market today.
1. Automatic bug identification tools:
One of the most proficient applications of AI to programming is tools that automatically identify bugs. By enhancing code safety and quality; they allow developers to shift energy and focus on improving the end product, rather than scanning their code for possible errors and vulnerabilities.
Examples: DeepCode, (bought by Snyk) is an AI-based code review tool that analyzes and improves code in JS, Java, and Python. Obeying 250,000 rules, DeepCode accesses users' private and public GitHub repositories and says what to do to resolve issues, maintain compatibility, and improve overall performance.
GitHub’s GitGuardian scans source code for potential security risks. Its main purpose is to detect sensitive data like passwords, encryption keys, and API keys in real-time. Software failures due to relatively simple mistakes like these cost over $2 trillion annually in the US alone.
2. Automatic code generators and AI pair programmers:
Tools that deliver basic code independently or autocomplete human programmer’s code for programmers are another category.
Example: Meta’s Aroma is an Ai-based code-to-code search and recommendation tool allowing the easier drawing of insights from huge codebases, making developers work faster.
Example: OpenAI’s GPT-3 is the largest language model yet created. With 175 billion parameters, it can generate a variety of human-like text and computer code. The API is designed to be accessible to the average user, but also powerful enough to increase productivity for Artificial Intelligence or Machine Learning teams.
“Nine months since the launch of our first commercial product, the OpenAI API, more than 300 applications are now using GPT-3, and tens of thousands of developers around the globe are building on our platform. We currently generate an average of 4.5 billion words per day, and continue to scale production traffic.”
In 2020, the OpenAI team and end-user developers had noticed that GPT-3, in addition to completing sentences, could also autocomplete code. GPT-3 had been trained on loads of documents accessible online, including ones where programmers had posted their code, so it had learned patterns not just in English but also in Python, Java, C+, and more. The founding fueled OpenAI’s interest in creating a designated code-writing AI: Copilot, built with GitHub.
Example: Copilot is considered by many to be the gold standard in AI pair programming. Trained on public code, the tool suggests lines of code or even whole functions directly in the editor. Users can explore alternative solutions, accept or reject Copilot’s input, and edit suggested code manually when needed. Additionally, Copilot adapts to users’ edits to match their coding style, increasing the value and relevance of the program’s suggestions over time. GitHub states that Copilot’s suggestions make up more than 35% of fresh written code in languages like Java and Python.
3. Tools that can extract the “meaning” of a piece of code
As you already know, AI can partially write code, based on patterns, tools, and solutions it has seen before or has access to. Does it really understand what the code it writes means?
A bunch of smart people working for Intel, MIT, and Georgia Tech has come up with a new machine programming system called machine inferred code similarity. MISM is capable of recognizing the meaning of text or speech (spoken words to be precise) and it can learn what a piece of software is supposed to do. It achieves the ‘point of understanding’ by analyzing code structure and syntactic similarities between the software and other code that behaves similarly. Language-independent MISIM has revolutionary potential: it can read code as it’s written and automatically generate modules to check off common, time-consuming tasks. Intel is working on transforming MISIM into a code recommendation engine to help developers working across Intel’s architectures:
“This type of system would be able to recognize the intent behind a simple algorithm input by a developer and offer candidate codes that are semantically similar but with improved performance.”
Downsides of these tools
AI coding tools are still far from perfect. Its ability to craft new solutions is narrow, as is its capacity for understanding the complexities of today's coding.
Open source laundering:
There is a concern that Copilot could effectively turn open-source code into commercial products without necessary licensing and by violating copyrights.
They produce false positives and security vulnerabilities
AI designed to detect bugs or mistakes in human-written code, tend to produce a significant amount of false positives: in other words, that is when AI identifies bugs where they’re not. Additionally, AI programs can also produce security vulnerabilities.
They still require human input and direction
Tools like Aroma and GPT-3, mentioned above, can produce straightforward pieces of code only when supervised or directed by humans. These programs can deliver impressive solutions, but they’re far from the efficiency of a skilled developer, that dive deep and studies a design brief, and work out the best approach from the ground up.
They spread what the internet feeds them
AI tools designed by humans are as flawed as their creators. GPT-3 is still prone to spitting out pretty texts full of hate or social biases. DALL-E, which lets users generate images by entering a text description can lead to similar issues. There is also a classic case of Microsoft’s ill-starred AI chatbot Tay, which flopped in a spectacular manner, turning into a racist, misogynistic caricature almost literally overnight, being fed Twitter content of 2016.
A matter of trust
Developers are builders at heart. They prefer tools that can be trusted to produce repeatable results. Software engineers tend to choose programs they understand enough to confirm it works correctly. Social context also matters a lot. By social context I mean how other people or companies are invested in the tool and if they’ve tested it thoroughly- is it accurate and efficient in real-world scenarios. Proven results, constant time investment, and trustworthiness of the team that has endorsed the tool is other critical factor in the adoption or flop of upcoming tools. AI automation tools are too fresh of a thing to be fully relied on. A software. The trust is still not quite there, it needs more time and positive results to build up over time.
How AI coding tools can make developers’ lives easier
Decreasing the number of time developers spend searching the web for solutions, is one of the primary benefits of AI coding tools. Staying focused and automatically issuing suggestions and recommendations is a major convenience. Uninterrupted time, means increased productivity, happier managers, and devs stressing way less.
One of the key founding of an internal GitHub study says that:
“Interruptions are more disruptive than we think — and it affects more than just our work. With minimal or no interruptions, developers had an 82% chance of having a good day, but when developers were interrupted the majority of the day, their chances of having a good day dropped to just 7%. By minimizing distractions and creating focus time, we not only get work done, we create better and less stressful days for ourselves.“
Less time spends on insignificant tasks, means more resources for the kind of work AI is less able to tackle. Creativity, empathy, collaboration, or critical thinking are not what computers are good at. On the other hand, we tend to overestimate the importance of these traits when it comes to simply get the job done.
Furthermore, systems like MISIM may not be able to fully automate coding (yet), but they can be a valuable assistance in rewriting legacy systems. These types of tools are platform-independent, so they have the potential to teach themselves older programming languages and rewrite them into modern ones like Python.
All in all, it doesn’t seem that robots are a career threat to developers but they can be a useful tool in making your codes better and work lives easier by automating what we should not be focusing on.
Developers should be as afraid of GitHub Copilot as mathematicians are of calculators.” — Kelsey Hightower