Listen to this story
Copilot, CodeWhisperer, CodeSense and similar tools that help complete, debug, test, tune, and review code will take the load off developers, according to AI proponents. But doomer have a completely wild vision of AI replacing human programmers and changing software development as we know it.
When Matt Welsh, former Harvard professor and founder of Fixie.ai, declared earlier this year that AI is the end of programming, most of his peers were sceptical about the arguments he posited. “I don’t believe we’re even close to that point, or necessarily heading in the right direction,” writes Brian Hayes, a senior writer at the American Scientist, in response to this, adding that this dismissal was based on relatively simple computational tasks for which solutions are well known and widely published.
While the potential of AI is unquestionable, a deeper look into its current capabilities suggests that a complete or even a partial AI takeover in programming is unlikely. The consensus is that developers who adopt AI into their workflow have a better chance at surviving in the field long term and are in favour of the ones who don’t.
Subscribe to our Newsletter
Join our editors every weekday evening as they steer you through the most significant news of the day, introduce you to fresh perspectives, and provide unexpected moments of joy
AI Brings Programming at Developers’s Doorstep
AI excels at generating boilerplate code and code that is repetitive in nature, such as iterating through a list of items or serialising/deserialising JSON data. Developers already use Copilot and DeepCode to do what they did with Stack Overflow — copy-paste code. AI can do this copy-paste job very well because it has been trained on vast amounts of data from the internet, effectively “memorising” many code patterns.
The AI-based platforms for coders help them write documentation for code and add comments. It can analyse the code and generate documentation for each method, along with example code on how to use it. Similar to documentation, AI can assist with writing test cases for code. If code testing requires generating test data, AI can deduce the format of the data and generate it accordingly.
When working with an unfamiliar codebase, this feature is incredibly handy because AI’s ability to help explain code line by line is phenomenal. AI models are adept at understanding data. If you provide a dataset, AI can analyse its structure and based on the columns, understand the kind of data it represents. Developers can ask AI various questions about the data and request different analyses. AI can even generate code for you to run and visualise the data. If you provide AI with your database schema, it can help you generate SQL queries for various tasks, such as data analysis or report generation.
Various studies evaluating LLMs’ proficiency in generating code underscore the need for human intervention and understanding in the programming process. AI-generated solutions, while promising, are inconsistent and often require human fine-tuning.
AI to Boost Developer Economy
All the jobs done by AI definitely cast a lot of fear. But, dispelling the fears, Thomas Dohmke, the CEO of GitHub recently said, “The demand for software developers will continue to outweigh the supply.” This runs in contrast with Emad Mostaque’s belief that developers jobs will be dead in five years.
AI models work by processing a task, such as rewriting a piece of code, and producing new code as output. In the process, three components are involved: instruction in natural language, the accompanying piece of code you want it to rewrite, and the model’s output. These three elements form the model’s context window, which allows a limited number of tokens (a token is equivalent to one word, but sometimes one word might result in multiple tokens). This means that these models can process a limited amount of information.
AI is undoubtedly capable of handling some low-level tasks and it will continue to improve over time. However, real-world software engineering is much more complex than these tasks. Engineers deal with various challenges on a day-to-day basis. They have to understand the organisation and abstraction in complex codebases, while also knowing what feature to prioritise over the others. For this they’re required to know what the company and stakeholders need — something that an AI can’t do. Then there’s collaborating with others to understand business requirements and designing scalable solutions with maintainability and extensibility in mind.
Coders are not always redoing what’s been done but often need to innovate and come up with novel solutions to unseen problems, which requires experience and a deep understanding of data structures and algorithms, and the ability to extrapolate that knowledge to solve unseen problems. These cannot be left to AI.
The current landscape suggests a collaborative approach where AI serves as a powerful tool augmenting human programmers rather than a complete replacement.
This article is part of the healthy debate surrounding the potential of AI to replace human programmers’ jobs in the near future. I agree with the article that a complete, or even a partial takeover of human programmers’ roles by AI is unlikely. The article mentions AI tools like Copilot, CodeWhisperer, CodeSense, and how they have demonstrated their effectiveness in handling various programming tasks (i.e. generating boilerplate code, writing documentation, and producing test cases). These tools are superb and are trained on vast amounts of data from the internet to automate repetitive tasks, ensure accuracy & to boost productivity/overall delivery.
However, where these tools fall short is through higher-order cognitive abilities that can be better performed by a human (within software development/programming). Such as: Problem solving, communicating effectively with stakeholders, prioritizing new features based on business needs, making split-second decisions that could impact timelines..etc. Programmers & Software Developers are not just code writers. Human ability and experience is needed to effectively perform in these roles.
I am a firm believer that we should embrace A.I. with a collaborative approach. A.I. can directly complement human skills and should be adopted to help software developers/programmers become even more proficient in their roles.