We users use Artificial Intelligence (AI) almost every day, often without even realising it i.e. a large amount of the apps and online services we all connect with have a degree of Machine Learning (ML) and AI in them in order to provide predictive intelligence, autonomous internal controls and smart data analytics designed to make the end user User Interface (UI) experience a more fluid and intuitive experience.
That’s great. We’re glad the users are happy and getting some AI-goodness. But what about the developers?
But what has AI ever done for the programming toolsets and coding environments that developers use every day? How can we expect developers to develop AI-enriched applications if they don’t have the AI advantage at hand at the command line, inside their Integrated Development Environments (IDEs) and across the Software Development Kits (SDKs) that they use on a daily basis?
What can AI can do for code logic, function direction, query structure and even for basic read/write functions… what tools are in development? In this age of components, microservices and API connectivity, how should AI work inside coding tools to direct programmers to more efficient streams of development so that they don’t have to ‘reinvent the wheel’ every time?
This Computer Weekly Developer Network series features a set of guest authors who will examine this subject — this post comes from Antonio Alegria, head of AI at OutSystems – the company is known for its software development platform which encompasses low-code technologies and wider full-stack programming and architecture competancies, software integration capabilities and tools designed to work with legacy systems modernisation projects.
Alegria writes as follows…
We know that we need to make software development teams more productive today and be able to build applications with the latest technologies more quickly. We want to be able to use AI to expand the talent pool and unlock new levels of productivity across the business.
Navigation, automation & validation
We see AI doing this in three ways: guidance (or navigation), automation and validation.
First, on guidance and navigation, AI can help developers (especially when they are stuck on a project) and infer the intent behind the problem they are trying to solve and guide them through it – and this element of the equation is extremely important for novice or newbie developers.
Second, AI will help with automation. AI will help developers automate tasks that are the most common, boring and repetitive (grunt work, if you will) that can drain their creative juices. AI also enables them to work on higher-level tasks that add more value to the software being developed, which in turn allows the application to be used more productively and profitably by the business.
Third, AI will help through its ability to analyse and validate code. AI will learn from patterns that are associated with good coding performance and guide developers towards those practices. Equally, AI can be used to identify those coding techniques and practices that typically lead to buggy or clunky code and so steer the developer away from taking that approach.
Taken together, these three pillars can help developers to harness the power of AI in creating code patterns for enterprise software application development.
In practical terms, the advantage factor here manifests itself as a key ability to save time; some of the tasks that might have taken perhaps half a day (or indeed longer) can now be performed in a matter of minutes. Furthermore, for new developers who can’t yet rely on their experience, it provides them with the assistance they need to prevent them from making mistakes.
From natural suspicion to refactoring satisfaction
These are early days in some ways and a lot of hardcore developers have a natural suspicion of the types of shortcuts we’re discussing here.
They (the seasoned developers) usually think that the advantages presented in tools like these are just for greenhorn newbies. Those misgivings are always dispelled once even seasoned programmers discover the refactoring advantages they can achieve using platforms like OutSystems to shortcut previously (and unnecessarily) heavy-duty coding tasks. One thing we have always found internally is that whatever we put into our product in terms of AI assistance, we always make sure that we make it accessible and discoverable… but we always make sure that it doesn’t get in the way of working developers who may initially not want to make use of any particular tool. Creating a frictionless experience for developers throughout the progression of our own platform is of supreme importance.
We should also say that we realise that AI algorithms are not always 100% performant (they’re intelligent yes, but they’re not always perfect) so we need to make sure developers have a route to failover so that their productivity is never impaired.
Let’s say we’re creating a mobile app for image capture and storage. An application button needs to pull up the camera, the application needs to talk to the camera and take the picture and so on. Not all of this functionality needs to be coded by hand because the system a developer is using already has a set of plug-ins to handle these tasks. If the developer (novice or seasoned pro) doesn’t know that these plug-ins exist or how to use them then AI assistance can help direct the programmer to get the job done a) more quickly and b) with greater functionality and accuracy.
Code DNA: ranking refactoring
OutSystems’ own Guided Refactoring tool allows us to perform what we call Code DNA analysis and look for duplicated code and find potential areas for code reuse.
Using AI to identify these areas is a great long term time-saver, because when code needs to be updated it only needs to be updated once. We rank the refactoring opportunities by their most useful and most functional so that the developer can make ‘efficiency decisions’ on what to focus on first.
Looking ahead, we want to be able to use AI to provide more real-time alerts to developers as they are working live (so to speak) with pattern analysis capabilities that can flag potential concerns (and positive opportunities) on the fly. This is obviously in contrast to traditional static code analysis tools with hand-coded rules that typically have high false positives.
The AI coding advantages tabled here are clearly applicable to complex coding tasks across all industry verticals. Although we might imagine that more heavily regulated industries might use these tools more prevalently for guidance, these firms typically also operate within rules and policy procedures that prevent them from being the early adopters… so perhaps look to the commercial sector first for the real innovation that the rest of the coding landscape will surely follow.