As complexity and sophistication grow, software engineers are increasingly assisted by automation tools. Will this trend lead ultimately to AI taking over software engineering? Billy McNeil and Resham Dhillon explore engineering’s future.

Object orientation was introduced several decades ago and, as a result, software engineering working environments have become increasingly sophisticated. This sophistication will continue to increase for the foreseeable future but with increasing levels of automation. AI capability will however reduce the need for routine human-based programming and increase the use of interchangeable components.

Will increasingly sophisticated AI replace front-end developers?

The short answer is: ‘No.’ However, writing lots of lines of code in a specific language will become a smaller proportion of the role of a software engineer.

Problem solving through creativity, design skills, security awareness, performance tuning, effective deployment, implementation, and a very broad level of understanding of how complex and sophisticated system components fit together will be the significant proportion of the role.

No-code, low-code, AI-enhanced and application composable platforms will grow in popularity as they enable development productivity for businesses to quickly respond to market changes and emerging opportunities.

Design mindset and thinking will be a foundational skill for IT professionals as increasing levels of automation, low-code environments and generative AI take a larger proportion of the coding load. Data driven design, human-centred design, user interface design, diversity of experience, test and learn will all be important skills to be successful.

For you

BCS members can read the very latest F-TAG technical briefings and reports.

Yet the legacy of the last forty years means traditional programming skills are still unlikely to disappear in the short term. Java has been the mainstay of enterprise application development for over two decades with millions of lines of code supporting the modern world. Full stack JavaScript powers many websites and mobile applications. Python is hugely popular for machine learning, big data, AI and IoT, and is still the primary language for scientific research.

Is AI engineering better than software engineering?

Instead of AI replacing the software engineer, utilisation of machine learning by skilled engineers will improve the output of software engineering activities by augmenting required practices. These include examples like Co-Pilot from GitHub.

A great example of a current AI tool aimed at developers which can autocomplete lines of code, add whole lines of code, or add entire functions. This will continue to be refined to improve developer productivity and manage away common errors (or mass produce common errors if developed / used badly!).

Another example is the initiative CodeQL – which can effectively give a developer actionable feedback – efficiently finding vulnerabilities in different circumstances.

The use of AI will increase in software engineering across the software development lifecycle to encompass activities such as:

What can AI do in Software Development and Programming?

If we map on a grid how close to usable reality these capabilities are against the impact they could have on the working life of a software engineer we’d see something like this :-

  1. Automating code reviews and performance optimisation – using parameters which are machine-learned and avoiding human-driven repetitive regression and performance tests.
  2. Improving user experiences by learning how specific users behave and adjusting the user interface adaptively with variable content to reduce customer abandon rates, increase conversion rates and make interfaces more accessible.
  3. Automating repetitive DevOps activities around software deployments with a high level of intelligent control to protect against inadvertent mistakes during the deployment process.
  4. Improving the approach to security during the development process through automated reviews of code security and assessment against known vulnerabilities. In addition, constant application of security assessment during live use can be a dynamic way of keeping on top of an increasingly critical area of software engineering.
  5. Increasingly intelligent software testing capability to drive test execution, qualify and reproduce issues reliably, shortening the development cycle and ensuring higher quality results.
  6. Applying AI to the design stage to provide a higher level of direct input when considering the pros and cons of architectural options.
  7. Improving estimation accuracy through the application of experience from previous projects, user stories, implementation methods and feature description.
  8. Automation of code refactoring when the application of the latest version of a specific technology emerges.
  9. Analysis of large system logs to identify and predict degrading issues before they become critical problems and to respond to error situations more intelligently.
  10. Improving developer productivity through method recommendation and parameter in-fill and preventing developer syntax errors by integrating AI into the development environment as an IDE (integrated development environment).
  11. Improving developer quality by augmenting coding syntax through auto suggestion of how to fulfil a functional requirement and advising on alternative methods which may be better under certain conditions.
  12. Database updates / migrations with zero downtime – generally make zero downtime deployments easier to achieve and more mainstream.
  13. Automation in process – making developer environments frictionless and easier to identify and rectify vulnerability dependency. Potentially automating the generation of UI from sketches and documentation.

 

Impact vs Time Grid

These will all contribute to allowing the software engineer to spend more time on higher level creativity, problem solving and design and do the opposite of removing the need for human software engineering. They make the software engineer ever more valuable.

So, will artificial intelligence replace software engineers?

The short answer is still: ‘No’. However, engineers will need to have a broader base of capability as software engineering will become more of a generalist discipline with less routine tasks, fewer segmented specialisms, greater requirement for composable architecture skills, and greater general focus on performance, reliability, sustainability and security over traditional programming.