The Rise of the AI Coder
These days, Artificial Intelligence (AI) is no longer just confined to niche areas of research and technology discussions. It has grown into a pivotal theme weaving its way through a wide array of dialogues, from policy formulation and the implications on society, to strategic economic decisions. Importantly, it's also sparking profound philosophical debates, with ethical considerations of AI use and its potential impact becoming a critical part of the conversation.
Although AI is often lauded for its ability to emulate human intellect in tasks such as generating realistic text or recognising and creating images (such as the picture for this post), these popular points of focus only scratch the surface of AI's far-reaching potential. In fact, AI is consistently breaking barriers and reshaping sectors that may not receive much attention, yet are immensely important.
Healthcare, for instance, is benefiting from AI's contributions in areas such as early disease detection, personalised treatments, and cutting-edge biomedical research. Similarly, in finance, AI algorithms are transforming risk management, fraud detection, and strategic investment planning.
The software development process is also undergoing significant changes due to the advent of AI capabilities. Tools that enhance programmer productivity through autocomplete suggestions and code structure simplification are now commonplace. These tools are even beginning to recognise programming paradigms and propose optimal structuring methods, transforming code into a more reader-friendly and maintainable form. While this may seem like minor improvements, they merely hint at the full range of AI's potential. Already, these innovations are aiding engineering teams in reducing technical debt and simplifying the understanding and refinement of existing code. As a result, they improve the overall quality and longevity of the software.
A Tale of Two Perspectives
Despite the undeniable advancements in the application of AI, a perspective advocating the irreplaceable nature of human involvement in software development persists. Adherents of this perspective see software development as more than just a mechanical task involving the writing and refining of code; they see it as a richly creative, deeply intuitive, and iterative process that flourishes with the human touch.
This perspective asserts that software development represents a high-level cognitive endeavour, where understanding complex problem statements, visualising intricate systems, and producing innovative solutions are everyday occurrences. They reason that AI, despite its impressive capabilities, cannot reproduce the inborn comprehension, spontaneous creative bursts, and nuanced problem-solving abilities that human developers bring to the table.
As an engineer with over 25 years of experience in writing software, building and managing engineering teams, I initially approached the idea of using AI in software development with the same scepticism. However, the more I delve into this field, the more I find myself embracing the compelling counter-narrative that highlights AI's capacity to effectively tackle many steps within the software development process.
My Journey
Reflecting on the advancement of AI over the past years, I've seen it evolve from a mere buzzword into a revolutionary force within the software development field. Tools such as GitHub's Copilot leverage large-scale machine learning models to analyse code in a human-like manner. Copilot describes itself as “Your AI pair programmer”, which might seem somewhat ambitious, but the value it offers, especially to junior engineers, is immense and cannot be understated.
The power of AI in code generation from natural language descriptions has sparked numerous conversations. However, I contend that there are other capabilities of AI-based tools that will fundamentally reshape the way we approach software development. Most organisations don't have the luxury of building systems from scratch; the reality is often an evolution of a complex, aging tech ecosystem where the coexistence of modern frontend systems with legacy backends is a common sight in many companies.
More often than not, these organisations are bound to decades-old, poorly documented backend systems, which, despite their antiquated state, remain critical to everyday operations. The prospect of replacing such systems is frequently deemed too costly, too risky, and thus, sidelined.
It’s in this challenging realm of legacy systems that the utility of AI tools becomes even more pronounced. They act as an invaluable ally in the daunting task of code analysis and system understanding. They sift through convoluted and sprawling legacy codebases, providing a comprehensive view of system architecture, dependencies, and potential vulnerabilities, even when the original documentation is scarce or non-existent.
领英推荐
I even challenged ChatGPT with some assembly code on my trusted 8-bit computer, a Commodore 64 from 1982. While it won’t be writing games on the C64 any time soon the improvements from GPT 3.5 to 4 were noticeable and it does a decent job when it comes to analysing code structures and counting cycle times.
Though still in early stages, I firmly believe these tools will soon become a cornerstone in any refactoring process. In some instances, they can even automatically translate code from older languages like COBOL to more contemporary ones such as Java or Python, thereby significantly expediting the modernisation process and mitigating risks associated with manual code translation.
When it comes to ensuring data integrity during migrations, these tools can also be instrumental in generating test suites. They can use predictive models to devise comprehensive test scenarios, considering all potential edge cases that human testers may overlook. They can automate the creation of unit, integration, and system tests, ensuring the migrated data's correctness, consistency, and usability, thereby preserving business continuity during the digital transformation process.
The Future of AI in Software Development
As we look to the future, we see an increased influence of AI in code generation, migrations, debugging, and operational management. AI's capacity to autonomously generate code, learn from past data, and suggest effective coding solutions is genuinely transforming how we approach software development.
Moreover, AI's impact isn't confined to development and testing stages alone. Its influence permeates into operational management of these systems. With AI-powered monitoring systems, the performance of deployed applications can be overseen meticulously, detecting patterns and anomalies that may herald potential system disruptions or failures. Upon incident occurrence, these systems can often diagnose complex issues faster than their human counterparts, speeding up the resolution process.
This paradigm shift ensures not only an optimal user experience and minimal downtime but also underscores the revolution that AI is bringing to every stage of software creation and management, including production environments.
A New Era
What does this rising prominence of AI imply for software engineers? Rather than eliminating the need for human developers, AI is helping to redefine their roles. With AI taking over more mundane and repetitive tasks, developers are free to focus on more complex, creative, and innovative aspects of software development.
It’s the dawn of an era where software engineers don't just write code; they manage, oversee, and direct the AI systems that assist in the coding process. This synergy between AI and human developers draws on the unique strengths of each, promising an unprecedented revolution in the field of software engineering. As AI continues to evolve, it will foster an environment that is more automated, efficient, and innovative, providing substantial time savings and enhancing the quality of software.
Senior Quality Engineer at Lloyds Banking Group
1 年Excellent writeup. Very informative and immersive capture on the purpose of AI. Loved reading it Robert Eriksson. Thanks for sharing !
Thoughtworker | Modern Digital Businesses | Generative AI | Digital Transformation | Data Mesh
1 年I really enjoyed reading your article Robert Eriksson. AI has evolved so much in the past year, and it's just the beginning. Its transformational power will reshape several industries, generating more productivity for companies and employees and better customer service.
Quality Engineer at Lloyds Banking Group
1 年This is a great article. On reflection, I think that applying AI has benefits beyond helping junior developers. My background is in infrastructure planning and design and then performance testing so I don't consider myself a true coder/developer. Having said that, I often have to write a function in a test script or, for example, some Python code to sort data, interact with an API or perform a task in a CI/CD pipeline. AI has helped me to do this. I also see benefits in using AI to help converting code snippets from one language to another. Introducing AI in regulated environments can be a double-edged sword because it may encourage risk taking, corner cutting and bad behaviours in IT; but if used wisely is undoubtedly a great productivity enhancer.
Really interesting article, thanks for sharing Robert Eriksson. In particular, I was struck the section regarding the potential use of AI in the refactoring of legacy systems. Having seen large organisations try and fail to undertake these types of transformations (indeed, even struggle to build new digital stacks from scratch), it has been my view that this wave of emerging exponential tech (including AI, blockchain etc.) would permit newer, leaner companies to out-compete poorly-engineered incumbents despite the advantages that the incumbents currently hold (e.g. sticky existing customer bases). I guess that we will see - the race is on!