Perspectives

Low-code in a world of high-code copilots

craig-st-jean-avatar
hero-bp-low-code-vs-copilots

Can low-code platforms still live up to their promise of accelerating development in a world where generative AI (GenAI) is generally available as a companion to coding? As Chief Technology Architect at Xebia (an OutSystems partner), an OutSystems MVP, and a developer with significant experience in enterprise applications on traditional Java stacks, .NET, and OutSystems, this is a question that’s been at the back of my mind for awhile. In this blog post, I evaluate modern-day low-code offerings and how they compare to high-code with GenAI copilots.

Understanding low-code development platforms

Enterprise low-code platforms, such as OutSystems, are graphical coding tools designed to increase developer productivity up to 10x by abstracting traditional high-code technologies. They differ from no-code platforms, however, by being fully general-purpose development tools that you can use to build what you want, how you want.

Common features of enterprise low-code platforms include:

  • WYSIWYG (what you see is what you get) UI designers for web and mobile
  • Hybrid flow-based coding with code-like expressions
  • Integrations and extensions with traditional code (JavaScript, C#, etc.)

Platforms like OutSystems also offer:

  • Composable and reusable architecture, including UI, data, logic, workflows, and APIs
  • Web, native mobile, PWA, API, and batch endpoints
  • Abstractions around code to offer best practices out of the box

What does low-code look like?

Here is an example of a mobile OutSystems application. As you can see, you have a wide array of UI patterns and widgets available, and you can create the user interface you want without any constraints. Templates are available to accelerate your development, not to hinder you from creating the next best thing!

outsystems low-code environment

Fig. 1: OutSystems template. Source; Xebia's Digital Bank in a Box Solution

Coding in low-code is very visual. Here’s an example flow from an invoice app:

  1. If the invoice is a new invoice, it:
    • a. Creates the invoice in the database
    • b. Sets invoice permissions in the database
    • c. Initiates the approval flow
  2. Or, if it already exists, it:
    • a. Verifies that the current user has permission to write to the invoice
    • b. Continues the approval flow, or gives an error

outsystems code example

Fig. 2: Example code in OutSystems

As you can see, the flow is easy to read in the OutSystems interface but not limiting. Where additional logic is required, such as in the condition to check if the user has permission to write to the invoice, an expression can be used to extend what is already there.

What are high-code copilots?

Copilots are AI tools used to generate code suggestions in high-code languages, such as JavaScript and C#.

The initial copilot that took the market by storm was GitHub Copilot, which came out in October 2021. Today, there are many cloud-based copilots, including GitHub Copilot, Claude, Amazon Q Developer, and even tools that can run on your own computer such as Tabby, Refact.ai, vLLM, and more.

Copilots are a result of training an AI model from huge amounts of existing code, then looking at what you are trying to do and predict what should come next. For example, if I write this simple C# class that will output the tenth number in a Fibonacci sequence, it might suggest what you see here at line 5:

github copilot

Fig. 3: GitHub Copilot suggesting code in a C# project

Note that I did not write any of the Fibonacci function. GitHub Copilot simply tried to predict what I wanted based on the code available to it and offered it as a suggestion. It does not have line numbers yet, because I have not yet accepted the code in my editor.

As you can imagine, such a powerful tool has the possibility to greatly increase developer productivity.

How are people adopting copilots today?

The adoption of copilots has been interesting to watch. Initially, many people immediately jumped on GitHub Copilot to accelerate their development. At the same time, risk-averse businesses waited to identify concerns such as intellectual property ownership and whether their code would be reused to train the copilot models.

Over time, several concerns have come up around the use of AI-generated code:

  • Generated code may have security vulnerabilities that are harder to find.
  • Generated code is inconsistent and has no understanding of a code style guide that you may be following.
  • Defects caused by generated code, such as missing or incorrect validations, take longer to identify and resolve because developers are not as familiar with what was written.
  • Incorrect generated code that constantly appears in your editor interrupts flow and concentration.
  • Junior developers are finding it harder to develop their skills and move up due to a dependence on generated code.

As a result of these challenges, many senior developers are actually turning their copilots off and finding the result to be faster end-to-end development and higher job satisfaction. Others have found that they prefer to keep automatic suggestions off, and instead use it on-demand and only for boilerplate code.

How does low-code compare?

Aside from the challenges I just mentioned, comparing low-code without copilots to high-code with copilots tells an interesting story. Even though copilots can assist with writing high-code very quickly, the things that make low-code appealing still prevail.

Low-code is based on best practices

Low-code is built on top of composable and reusable patterns that provide best practices and security out-of-the-box. With a copilot, you only get code, and you can’t tell what it was based on, nor can you be assured that it is secure.

Many of the challenges of coding by hand are removed

Because low-code abstracts underlying technologies, developers do not need to be aware of nuances in the code, or of differences between versions. By contrast, copilots often will guess at an API that might not actually exist, or it might generate code for the wrong version of a framework that you are using.

You have a visual representation of what you are developing

Low-code’s graphical WYSIWYG editors make it much easier to see what you are building compared to high-code. Copilots can’t help you there, either. Even with conversion into designer tools like Figma, the copilot itself does not understand what you are trying to accomplish.

Low-code platforms manage the full lifecycle of your application

From development, to deployment, management, and monitoring, low-code’s got you covered. Plus, it makes it easy to maintain your app and change it over time. Copilots, on the other hand, can only write code, and this code will never be as easy to change or maintain than low-code.

Do low-code platforms have copilots?

Yes, actually! Many enterprise low-code platforms have some form of copilot, with some (for example, OutSystems) that actually had one before GitHub Copilot came on the scene!

In the case of OutSystems, there are 2 “copilots” available:

  • The blue dot for logic recommendations
  • Natural language database queries

The blue dot

The “blue dot” was once called OutSystems AI Code Mentor. OutSystems trained the blue dot on millions of code samples (anonymously, of course) using machine learning to understand what you are trying to do and offer specific and generic suggestions. For example, if you’ve just queried the database, it might suggest that your next action is seeing if you got any results back.

code mentor suggested logic

Fig. 4: Code Mentor suggested logic. Source: Logic Mentor Example

Natural language database queries

Using a different type of “copilot,” OutSystems allows you to tell it what you are trying to accomplish when you query data, and it will come back with the query all ready to go for you!

In OutSystems, database queries are called Aggregates, which are essentially a visual form of a SQL query. Consider an HR management system, where I might want to find all sales manager employees, sorted by the country they are in:

natural language database query

Fig. 5: Natural language database query (Aggregate)

First, I try, “Find all Employee with a job position name of ‘sales manager,’ ordered by their country name”; however, that doesn’t quite get it right. (Note that OutSystems will recommend table names and attributes while you type, hence why I wrote “Find all Employee” instead of “Find all employees.”)

So, I give it a hint that Country Name is in the country table, select Get Data, and it creates exactly what I was looking for!

natural language query result

Fig. 6: The result of the natural language query

OutSystems has identified that the query will need to look at the Employee, Country (joined by Employee’s CountryId) and JobPosition (joined by Employee’s JobPositionId) tables. These sources are similar to the FROM clause of a SQL query.

sql query

Fig. 7: FROM clause of an SQL query

In the Filter section, which is similar to the WHERE clause of a SQL query, it has added that I am only looking for JobPositions with a Name of “sales manager.”

filtering section

Fig. 8 Filtering Section

Finally, in the Sorting section (similar to ORDER BY in SQL), it has added an Ascending order against Country Name.

What comes after copilots?

If AI copilots are code assistants that can write chunks of code based on context and user input, what comes next? It’s quite simple, full-stack applications! But, not only the code for an entire application, but everything across the SDLC.

Introducing OutSystems Mentor, the industry’s first full SDLC digital worker, which uses GenAI and AI throughout the application development and deployment process. Mentor allows you to take anything from a simple prompt, to a complex prompt, to a full requirements document, and produce an entire application. After creating the application, Mentor allows you to use natural language processing either to iterate on on your request, or switch over to ODC Studio to continue developing the application as you desire.

Throughout the process, Mentor monitors your code for coding practices, security concerns, and more. And, when you’re ready, you can use it to confidently deploy your code to test and production.

Learn more about Mentor, the next evolution of generative AI and AI.

About Xebia

Xebia is a trusted partner for organizations worldwide, delivering end-to-end IT solutions that accelerate digital transformation. Specializing in technology consulting, AI, software engineering, and intelligent automation, Xebia helps clients navigate the complexities of the digital age. With expertise spanning industries such as finance, healthcare, and retail, Xebia’s innovative solutions empower businesses to improve efficiency, drive growth, and enhance customer experiences. To learn more, visit Xebia’s website or follow Xebia: LinkedIn, X (Twitter)