Technology

Code Like a Pro(ptech): GitHub Copilot and ChatGPT Boosting Developer Efficiency at IMMO

IMMO's engineering team is pioneering AI co-piloting in coding to accelerate development speed.

Apr 7, 2023

Introduction

At IMMO, we’re always on the lookout for strategies to boost our efficiency and productivity. We’ve recently managed to do this by tapping into the potential of GitHub Copilot and ChatGPT. These AI-driven tools have proven invaluable in our day-to-day development tasks, enabling us to optimise our processes and enhance our software offerings. In this blog post, we’ll delve into some of the ways we integrate these tools into our development process to empower our developers and share some of our favourite use cases – true to our motto of “powered by machines, managed by experts.”

Before we dive deep, let’s quickly recap what GitHub Copilot and ChatGPT are all about. GitHub Copilot is an AI-powered coding partner that generates code and full functions in real-time, directly within your favourite editor, helping developers create code more quickly and with reduced errors. OpenAI’s ChatGPT, on the other hand, is a well-known large language model (LLM) that hardly needs an introduction. With its training on a massive amount of text data, it’s able to understand and generate text that closely mimics human language, and in this particular case, code.

Transformative impact on engineering workflow

Since incorporating GitHub Copilot and ChatGPT into our workflow, one of the most notable benefits we’ve observed is the accelerated code generation to solve specific challenges, surpassing the conventional Google search and Stack Overflow browsing approach. As Andrej Karpathy highlighted in his tweet, Copilot has evolved into a crucial component of the software development stack, assisting developers with code autocompletion and expediting the development process.

Let’s take a look at a few examples through the lens of implementing a delete button with a confirmation dialog in React using Copilot (code based on this tweet). 

After typing just a few characters, Copilot makes surprisingly accurate suggestions on how to autocomplete the code block: not just lines but whole functions. Alternatively, we can simply add a comment block for a function we want to develop, and Copilot automatically provides helpful suggestions in light grey text. The developer is continuously steering and prompting the AI tool, but effectively 80% of the code is generated, ready for the developer to review.

Here’s the full code of the generated confirmation dialog React component. We’ll be using this to illustrate some of our favourite ChatGPT use-cases below.




ChatGPT has proven particularly effective at explaining complex or unfamiliar code. IMMO software developers have leveraged these tools to improve their understanding of code and bridge knowledge gaps. As an example, consider a sample prompt that generates a plain English explanation of the functionality of our delete button React component.

Prompt:

What will the following code snippet do {enter code}

Here at IMMO, we believe that the finest code is code that speaks for itself. We recognise the value of adding comments to enable our teammates to grasp the purpose and function of the code without needing to switch context and reference additional documentation. The advent of ChatGPT has been a game changer in this regard, as it effortlessly generates inline comments for our developers to review. In case of an error in the suggested comments, a quick correction ensures that the code remains well documented and seamlessly accessible for the next engineer to engage.

Prompt:

Regenerate the code snippet below, but please include comments to each line of code {enter code}

We can further enhance the quality of our code through the automatic generation of unit and end-to-end tests. In the past, the responsibility of crafting unit tests rested solely on the shoulders of the testing team, resulting in a less-than-optimal workflow with frequent handovers and cumbersome dependencies that could lead to bottlenecks. However, with the advent of developer-centric unit testing, we can now achieve a streamlined process that empowers developers to deliver robust tests as part of their story completion. Here’s an example of a prompt we use to generate a unit test draft for our React component:

Prompt:

Write test cases for the main edge cases that could happen to the below code snippet. First outline the test cases you’ll write. Second, write the test cases in javascript using the Jest framework. {enter code}

ChatGPT also enables automatic translation between languages and frameworks, ensuring seamless integration across our diverse tech stack. Most notably, we were able to convert components written in React Native to React while simultaneously transitioning the UI library from React Native Paper to React Bootstrap. Furthermore, we could execute the generated React Native code without requiring any manual modifications.

Prompt:

Translate the code below from React to React Native whilst changing the UI library from material-ui/core to react-native-paper {enter code}


Another excellent application of ChatGPT is the efficient creation of SQL statements based on English descriptions, which streamlines data transactions and manipulation. It can also function as an SQL simulator, generating tables populated with test data in seconds, enabling developers to rapidly prototype and evaluate queries:

Prompt:

The database contains tables named “Buildings”, “Residents”, “TenancyAgreements” and “Investors.” I will type queries, and you will reply with what the terminal shows. I want you to reply with a table of query results in a single code block.


We’ve found that ChatGPT can not only bolster the resilience and security of our code but can also be used to facilitate the dissection of large components into smaller, more digestible fragments. ChatGPT’s prowess in debugging and rectifying errors is remarkable, as it pinpoints potential issues and recommends suitable fixes. 

We have also successfully leveraged ChatGPT in some unusual use cases such as transforming REST API specification into GraphQL schemas and auto generating regular expressions for data scraping based on a few unstructured samples.

Things to Keep in Mind

Are these AI-powered coding tools the holy grail that replaces the developer’s role in software development? Absolutely not. Let’s be clear, what we have here are sophisticated machine learning models, trained on vast amounts of code, capable of translating natural language inputs into programming suggestions.

While ChatGPT and GitHub Copilot have tremendous potential, we must remain mindful of their limitations. One of the major concerns is the issue of hallucination, where the suggestions generated by the AI may not always be accurate or reliable. Therefore, it’s crucial that developers exercise caution and scrutinise the output generated by these tools. Software engineers should always verify the code themselves to ensure that it aligns with their intended logic. While AI tools can be helpful, they are not a replacement for a developer’s judgement. It is crucial that engineers invest the effort to understand how the code functions, as they remain ultimately in control and accountable. Furthermore, we at IMMO maintain our existing quality assurance measures, such as peer reviews, to mitigate the risk of any unintended consequences.

Another critical consideration when using these tools is GDPR compliance. If you’re working with customer data that contains Personally Identifiable Information (PII), you should avoid inputting it into ChatGPT as it is not GDPR compliant. OpenAI employees can access your prompts to debug and refine models and add them to their training dataset, which may pose a risk to your customers’ data privacy.

Most recently Italy has temporarily blocked ChatGPT due to data protection concerns, as there are allegations that OpenAI has unlawfully processed users’ data. We at IMMO take these concerns seriously, especially given OpenAI’s admission that a conversation history feature may have inadvertently leaked users’ chats and potentially exposed their payment information. It is crucial that every company remains cautious and prioritises the protection of users’ data.

Conclusion

At IMMO, we have experienced a paradigm shift in our development processes, thanks to the game-changing capabilities of ChatGPT and GitHub Copilot. These AI tools have not only accelerated our workflow but also contributed to our ability to deliver high-quality software solutions. By understanding their strengths, limitations, and risks, developers can harness the power of these AI assistants to improve their workflows and achieve impressive results, even with a lean team.

Looking ahead to the future, we can anticipate even more remarkable AI innovations. In the not-too-distant future, we may witness the first-draft of code generated automatically by AI, based on a well-crafted user story. As a result, software development could shift into a new phase of reviewing and prompting, representing the next level of abstraction in the software development process.


© IMMO Investment Technologies S.à r.l. 2023, 17, Boulevard Grande-Duchesse Charlotte, L-1331 Luxembourg, all rights reserved.

IMMO Investment Technologies UK Limited is a wholly owned subsidiary of IMMO Investment Technologies S.à r.l, and part of the IMMO group of companies – see the full list of entities in the IMMO group of companies

The investments referred to on this website are not suitable for all investors and are intended for certain categories of investors only. IMMO Investment Technologies UK Limited does not give financial advice to investors about the suitability of the investments. Investors should seek advice from a person who specialises in advising on illiquid real assets. Unregulated investment opportunities in complex instruments are considered high risk. Therefore, we only work with investors who are sufficiently knowledgeable and experienced in dealing with these types of investments and are classified as professional investors. Investors should ensure that they comply with the laws of their local jurisdiction before investing.