Like many curious engineers, I have been playing with ChatGPT since late 2022, before it received widespread publicity, adoption, and notoriety. At recent Google IO and Microsoft Build conferences, both companies demonstrated products using Generative AI models to change how users interact with applications. Other software vendors are following with their own offerings building on the possibilities of LLMs (Large Language Models), the foundational models underpinning this wave of possibilities. I have also been avidly reading, listening, and watching material in this space from ethics, security, popular opinion and supporting infrastructure. All the while, contemplating the role of the software developer with Generative AI now in the tool bag.
I am seasoned enough to remember my first spell checker running on my treasured BBC-B home computer. As a dyslexic and therefore terrible speller, I was amazed at how it identified those broken words from my early essays with a good deal of floppy disk thrashing. It allowed me to train it with words that it didn’t already know. The modern word processor does so much more in real time including grammar checking and tips to improve readability and style. I mention this as a good example of what was once magical is now commonplace and more importantly, expected.
Software engineers used to craft code long-hand in a text editor (vi, emacs). Syntax errors were only identified at compile time and runtime errors on execution. IDEs (Integrated Development Environments) transformed this with syntax highlighting, automatic matching, infinite loop analysis, etc. Auto-complete of a loop construct was viewed with scepticism when first introduced but was quickly accepted as the key-stroke saver it is. The same with refactoring tools allowing blocks of code to be pulled out and variables, methods, classes renamed reliably across a project. Any project starting up now would make an IDE selection and not expect developers to use just vi or notepad++ or similar.
IDE vendors have introduced AI assistance features that can be used to generate skeleton projects, classes, methods, test cases, documentation, code based on written description, and code based on method prototype, to name a few. Adobe Photoshop (beta) Generative Fill allows the user to describe in words an image selection that is then ‘magically’ created in context of the overall image with very impressive results. Microsoft has document summary and automatic presentation build in Office 365. In all these examples, the machine is doing something that humans can do but at a faster rate. This seems to be the critical aspect of Generative AI that has captured the imagination of the public. One cannot imagine other AI innovations using massive data sets (for example, AlphaFold) being ever done by hand. That is clearly a job for a machine.
I believe the patterns being established for Generative AI will impact the software developer in the following ways:
- Like auto-complete, asking an IDE to write a class, method, regular-expression will speed up development tasks that are mundane, leaving more brain cycles to focus on business features. Need a function to read and parse text from a file or write a unit test to cover a feature, just ask the IDE to generate it. Generated output will be well formatted, will have well named variables, and the right level of comments. It will still need expert review to make sure it does what is required in a safe and secure manner. This is analogous to looking up and integrating boilerplate code from a previous project or online tutorial or even a book.
- Engineers will need to become skilled at prompt engineering. The way of asking for something to be created with as little ambiguity as possible. Some prompts will be provided contextually, like the programming language being used or previous prompts, but others will need to be described and provided manually.
- Engineers will need to be mindful of being given hallucinated code (e.g., code using an API or operator that does not exist) and for potential IP infringement.
- User interfaces will be reimagined with a ubiquitous text entry box saying, “What do you want to do?”. This will simplify an otherwise complex set of menus, buttons and wizards. This will be a challenge for UX engineers and developers alike. How would you test something that has near infinite input possibilities?
- Solutions can now leverage LLMs at low cost. APIs are offered by vendors with the LLM being provided as a commodity service. A couple of cents per API call, tiered pricing, etc. The LLM will be curated and upgraded as a service for its users. Data boundaries and privacy concerns are being addressed such that you can ask questions on your own data with confidence that data will not be leaked.
- Architects will have to evaluate various Generative AI options and APIs, such as performance, functionality, accuracy, privacy, security, and resilience.
- Engineers will have to manage stakeholders saying, “But surely this can be generated for you in a fraction of the time you have quoted?”. It will be an easy trap to fall into, taking the quick wins of generative tools without balancing the need for engineering quality.
All the above examples require the engineer or expert to be in the development loop. This is where the Microsoft copilot sub brand is spot on. These tools help by taking care of the mundane and providing options. It will be like developing with a buddy by your side but without the demand for coffee and biscuits. You will still need the engineering disciplines of design principles, software architecture, source control hygiene, and software quality metrics. These are forever responsibilities.
This is only the start of a long journey, and these solutions will get better over time. It will be like an arms race between the vendors on the level of automation that can be achieved and how real-time the models are. The genie is out of the bottle and there is no chance it is going back in. It is a fascinating time to be in software development. CGI is excited by the opportunity Generative AI brings and as a trusted AI expert, we’re helping clients demystify and deliver responsible AI.
If you would like to discuss this blog further, please reach out to me.