AI Driven Development: Hello world!
After having used ChatGPT to generate tiny utility programs and using it for assistance in solving isolated software development problems, I wanted to delve deeper into exploring its potential in assisting software development on a larger scale.
I got an idea for a product that I want to develop the software for. I have experience of development large scale personal software projects and the problem with them has been that they grow too large for me to handle the software development on my own. The prospect of just creating the prototype for my new product is daunting understanding the hours that will go into coding it the traditional way. There’s no way I’m going through that grind again.
Redefining objectives
This time I will attempt a different approach and set my objectives differently. In the past my objective was to develop a prototype of the product and keep building it up while developing the business. I still haven’t been able to launch the business using this approach because even though with each new attempt I scaled down my software development input and put more effort into the business, the software development part was still always too demanding to perform alongside business development.
This time around I have a different set of objectives.
- Learn large scale AI driven development in-depth
- Develop scalable AI tooling for a software project
- Leverage developed AI tools and methodology to prototype the product rapidly
- Extend the AI driven methodology to support business development for the product
Enter ChatGPT
I started with defining my intention on the high level.
I’d like to start developing a new software product and create application code for it utilising ChatGPT in the development process from the very beginning. First of all I want to establish AI tooling for my project. The purpose of the tools is to interact with ChatGPT via API to generate code to my application given feature requirements and to store the context of my application in such way ChatGPT would be aware of the entire code base and my development goals. I want to develop these tools using Typescript and Bun runtime.
The response was an overview of subjects such as Project Setup, ChatGPT Integration, Feature Requirement Processing and Code Generation And Integration. I can use each of these subjects when I start drilling down to implementation of the project.
Context scalability was a special concern that I wanted to address from the beginning as managing larger context has been something where I’ve experienced ChatGPT to fall short.
The project code base including tests, configuration and infrastructure code will eventually encompass numerous git repositories and web services. It may eventually comprise hundreds or even thousands of files. Is there a way to make ChatGPT aware of the entirety of this context using API?
ChatGPT recognized its inability to support direct awareness of an extensive code base and offered a set of solutions to achieve my goal based on segmentation and management of context data as well as scalable workflow solutions.
Let’s start by designing the project structure. I want to use Bun runtime and Typescript as the primary development language in a multi repository setup. The first module of the project is AI tooling enabling AI driven development referenced in my initial message of this conversation. Suggest me the project structure.
I got a workable suggestion for a project structure that was close to what I would have created myself. I created a directory for the AI tooling module and went on to initialize the Bun project for it.
Let’s start with the AI tooling module. Give me a step by step guide to initialize the project and the repository.
Following these copy-paste instructions I had my initial project setup commited to a local Git repository. I requested to change the testing runtime from jest to Bun’s native tests, created my first test and ran it.
Next chapter
In this chapter we defined our problem and stated our intention. We used ChatGPT to outline our project and set up some initial scaffolding for it. In the next chapter we will move on to design and implementation of some essential functionality of AI tooling. I have a feeling it’s going to be a very interesting chapter, and I hope to see you there!