For some background, I’m an engineer with roughly five years of experience across data and automation. Currently, I’m an automation engineer within the Enterprise Finance Department. I’ve had previous experience with ChatGPT helping me bug fix template code with mixed results. When I first experimented with ChatGPT many years ago it could handle simple tasks, but not much more.
About the app and use case
In my use case, I was looking to develop a new web app to act as a self-serve portal. The intent was for users to access reporting that was often requested from the team.
Additionally, my team wanted to start experimenting with containerisation to see if we could use it elsewhere.
I’m very familiar with Python and SQL so I had some foundations to get started with, however I don’t have any experience in web development. This left a gap with HTML/CSS/JS and Django. To help prime myself I did the introductory Django tutorial in the Django documentation.
The experience and results
I thought I’d give Copilot a go in the development process to see if it had become better.
As mentioned, it looked like some massive improvements had been made. While developing the app I was amazed at the code Copilot generated. The code was consistently fully functional, save for a few sections that needed tweaking to meet specific requirements.
Currently, the app is up in our OpenShift environment. It’s fully functioning with user login with authorisation, data filtering and the ability to export the results from the app into excel.
Copilot’s impact in numbers
I’d estimate around 90% of the code is generative AI (Artificial Intelligence), and the other 10% I only needed to modify slightly. It helped me generate code in Django (Python), HTML, CSS, JS, and a bit of Docker as well. Using Copilot enabled me to cut down the development time by at least 70%. It’s a process that went from months to weeks, mainly through reducing errors and easing the learning curve. Additionally, it made trouble shooting and bug fixing far more efficient.
Some examples:
A good example of how good Copilot has gotten is below. This function is used to generate an Excel output of the table currently on the app.
Some key callouts:
- It's taken feedback from a previously generated piece of code I’ve given it and had manipulated it. It focused on only the problematic parts of the code and cut the rest out in its response.
- It's explained the change at the bottom.
Another important development is Copilot’s instructiveness and ability to generate a feedback loop, improving its ability over time.
As an example, I was having some issues with the login function while trying to build user authentication. Below are a few snippets of the conversation we had while trying to resolve the issue.
In the above you can see how in-depth a conversation with Copilot has become. It’s giving multiple possible fixes and the logic behind the suggestions.
Finally, in the above screenshot, we’ve got a resolution. Again, note the detail and explanation of the fix. It trains the user up to understand the situation and process meaning you’re working with Copilot rather than for it.
Reflection as a developer
I think it’s at the stage where it’s time to start viewing using Copilot as another tool in the tool belt. It’s going to do to developers what the calculator did to mathematicians. No one’s doing math by hand anymore, but you still need to understand the theory behind what you’re doing. This is because you still need to make sure that what you’re putting in, and what Copilot is putting out, is correct.
*Screen shot of the app is highly redacted for privacy reasons.
Zachary Brown is an automation engineer at ANZ. He is passionate about bridging the gap between technical and non-technical stakeholders and colleagues. He has a wide range of experience across consulting, scale-ups and major corporate banks. The most rewarding times in his career have been building simple solutions for complicated problems.
His core technical skills are SQL, Python and AWS, with exposure to Azure, Teraform, Teradata and Spark.
This article contains general information only – it does not take into account your personal needs, financial circumstances and objectives, it does not constitute any offer or inducement to acquire products and services or is not an endorsement of any products and services. Any opinions or views expressed in the article may not necessarily be the opinions or views of the ANZ Group, and to the maximum extent permitted by law, the ANZ Group makes no representation and gives no warranty as to the accuracy, currency or completeness of any information contained.