For my blog post this week I chose to answer the following questions:
How are you using AI in your project? What are some pros and cons? Has it made you a better programmer?
How are you using AI in your project?
This is a particularly relevant topic for my team and myself as the project we are working on is AI Coder.
In short, the goal of AI Coder is to attempt to rely on AI Tools as much as possible to create a software development project in a team. While a finished software project will be delivered, the true deliverable for the project will be a detailed “How-to guide” on creating similar software projects using AI. How should the team be organized, what are the most efficient tools, what are the best ways to use these tools, etc. The project that we have chosen to develop with our AI Tools is Job Tracker.
What are some pros and cons?
Trying to use AI tools to develop a software project in its entirety has been very interesting and challenging so far. I have been focusing on using ChatGPT 4 and Github Copilot with Chat primarily.
It was initially obvious that ChatGPT 4 is very powerful and has leveraged a large amount of code very well. I was able to paste in the requirements for our AI Coder project, the Job Tracker project, and the decisions that we had made so far and it was able to create a very detailed and well made project planning document for our team.
One of our team organization decisions was to split up into two teams who will create two parallel projects for comparison sake of AI tools effectiveness. I was assigned to create the backend for one of the teams, so I used the same ChatGPT 4 conversation to ask it to begin to code out the backend and MongoDB connection for me. It also did this extremely well, including all of the terminal commands needed to set up the environment.
When it came to actually coding out some endpoints, I began to see some limitations of ChatGPT 4. It was able to deliver very correct and well-functioning examples of code for tall the things I asked of it, but it seemed to have very little memory of the responses it offered in the past. I’m sure this is a necessary optimization technique as I can only imagine how expensive storing what it remembers already is (there have been reports on how much it costs OpenAI to run their servers and it is quite extreme, apparently around $700k a day).
An example that caused annoyance is that it couldn’t remember what it called my main server file on it’s own. It first called it “job-tracker-server.js”, than in later examples it referenced “jobTrackerServer.js” in code. Obviously both of these naming conventions are rational and descriptive, and in many cases it references the fact that it doesn’t know what you ended up naming your files, but when I have to go through the code examples and correct the name of the files for each code example it generates, it can get cumbersome. I was able to prompt it and tell it specifically what the name of this file was, and it said it would remember it, and so far it has. I imagine that it has your prompts stored in its memory, but not all of its responses.
Has it made you a better programmer?
I can certainly say that code generation with AI tools can be very fast. I can generate these projects in a fraction of the time that it would take it to write it by hand. Now realistically and in my experience, very few projects are unique enough to do entirely everything by hand in the first place. Most developers would probably start by copying a similar project that already exists in their repository and modify as needed. Generating code with AI tools certainly could be faster than that if it was correct. AI tools that are more aware of your code repository such as Github Copilot with chat can be much smarter in this regard, and evolutions of these projects are likely the future of software development. In general, it seems like another level of obfuscation, which can be both good and bad, bad to the detail of understanding, but good in that it can potentially scaffold and generate results faster. At the end of the day, most production software is about meeting deadlines, and it seems that AI tools have made me faster at doing that, so maybe that does make me a better programmer.
Leave a Reply