A few weeks ago, the development department of Kiteris received the task of creating a web application that would allow end users to fill out a simple form reflecting a technical inspection report for the naval sector. The client wanted it to be implemented with Microsoft’s Low Code applications, which we are not experts in at Kiteris, but we do have specialised partners.
Taking advantage of our internal R&D initiatives regarding the use of AI tools, we decided to also carry out the project with a personalised development approach using GitHub Copilot for Vue.JS and .NET.
Therefore, the project was approached by a development team that used AI, “competing” against the estimated times by an external provider specialised in Low Code with Power Apps.
Without a doubt, our intuition told us that starting a development from scratch could result in a decrease in productivity compared to a Low Code solution, although this could be compensated for in the long term. Let’s take a brief look at the pros and cons each technology has:
Taking into account that it was a project with a simple UX/UI and basic CRUD functionality (Create, Read, Update, Delete) with image uploads and simple login, it seemed logical that the Low Code solution would have clear cost and time advantages despite needing external services from Power App for images and additional SharePoint experts in the team.
This is where we decided to assess the real possibilities of AI in the current state.
As an AI-assisted development tool, we opted for the one that is currently more established and advanced: Github Copilot.
We started our development with AI.
How was our experience with Github Copilot?
Honestly, it couldn’t have been more satisfying. The development team, intentionally formed by junior developers assisted only by a senior to assess the presumably most unfavourable scenario, completed the application in record time, similar to the estimate one provided by our partner to do it using low code.
One of the few drawbacks of using an AI-assisted tool is that the quality and outcome of the delivered code depend on the quality of the received prompt instructions. But, as I mentioned earlier, it was a simple CRUD solution, so there was no room for misunderstandings and detailed to exhaustion instructions were not necessary. Simply starting to briefly describe the method to be performed already gave a similar result to what a well-experienced developer in the technology in question would.
Introducing a text indicating that an API method is desired, which can receive an image and save it to an SFTP address magically produced a method that included all necessary libraries, in addition to adding their corresponding packages.
The code fulfilled its purpose and did so correctly. Obviously, it was requested to make the corresponding modifications to replace the username and password values in their corresponding configuration file instead of directly in the code. And if necessary, it could have been asked to further improve security by instructing it to use a Key Vault service from the Cloud provider. The possibilities for modification, such as resizing the image, are endless and are just seconds away from describing the change to Copilot.
The development was so rapid and accurate that unsolicited improvements were made to check its capabilities beyond basic functionality.
At this stage of the proceeding, tests were conducted comparing it with the common ChatGPT assistant. At this point, we observed that in some cases ChatGPT provided interesting solutions beyond creating a method, but its “obsolete” knowledge meant that its code constantly had to be reviewed for using deprecated libraries and methods.
But, once again, having the Github Copilot extension integrated into Visual Studio makes this not a problem because its ability to detect obsolete code and adapt it to the latest updates makes using code generated by external tools also a valid contribution.
Conclusions
Upon completing the required development and going beyond, we were able to conclude that:
In scenarios where the use of a Low Code solution is valid (basic functionality and/or with few or no adaptations or customisations), classical development supported by AI can also be valid.
We believe that in projects similar to the one discussed in this document (CRUD), the differences in the required implementation time are clearly shortened between classical development and low-code, becoming similar.
What is more, the virtues of classical development (total control, customisation possibilities, ability to create a scalable product) are preserved while significantly reducing its scarcities.
In the case of CRUD application development, the decision to opt for a low-code environment or a classical development environment with AI depends on many economic, strategic, and organisational factors of the company, with one of the most relevant being the development team maintaining the software, as they have all the functional and business knowledge of the company.
What is clear is that implementation time is no longer a difference in favor of low-code.