Timesaver or Troublemaker: AI in Software Engineering

21 Nov 2023

I. Introduction

When it comes to school assignments, the biggest hurdle to get over is typically the beginning. I have found that AI technologies, like ChatGPT, have been useful in getting me to a starting point to complete tasks or mapping out a plan that I can follow to get through my work. I have not tried other AI technologies, aside from ChatGPT and I have only recently started using Github Co-Pilot.

II. Personal Experience with AI

  1. Experience WODs e.g. E18: I don’t recall ever using ChatGPT for any of the Experience WODs. I always attempted it on my own first, and if I DNF’d or did not understand what I was doing, the WOD explanation video would be sufficient in explaining the concepts covered.
  2. In-class Practice WODs: I did not use any AI technology to complete the in-class practice WODs, mostly because I wanted to understand what I was doing and not have to rely on the AI during the real WODs.
  3. In-class WODs: I did not use any AI technology for the in-class WODs because I did not want the generated response to leave me with an incorrect or insufficient answer that I did not understand how to correct. I found it easier to study and practice the concepts on my own so I would fully understand the code I was writing and could self correct. Looking back, I think that I should have used ChatGPT for help with the earlier concepts, like Underscore, since it seemed to generate useful responses for the problems we covered at the beginning of the year.
  4. Essays: I usually used ChatGPT to generate ideas for topics or an outline of the essay based on the topics I wanted to write about. Or if I did not like the wording of a sentence, I would ask ChatGPT to rephrase what I had written.
  5. Final project: When I learned that we couldn’t use the project’s original placeholder name — Toaster Oven Lovin’ — I utilized ChatGPT to generate a list of possible names based on the project specifications. I had also tried to use it to debug parts of the project, but found that the responses weren’t very helpful since the scope of the project couldn’t really be copy-and-pasted into the text form.
  6. Learning a concept / tutorial: The resources provided on the course (ICS 314) website were sufficient and covered the class concepts well. Regarding tutorials, I think I learned better from a video format than the written steps in a generated response.
  7. Answering a question in class or in Discord: Most of the troubleshooting I had to do for ICS 314 were problems that other students had also ran into, and since I have a tendency to start assignments pretty late, those students had already asked and received answers to their smart questions in our class Discord.
  8. Asking or answering a smart-question: If I did struggle with a concept, I preferred Googling my question and reading through any documentation or forum posts (Stack Overflow, Quora, Reddit) over asking ChatGPT.
  9. Coding example e.g. “give an example of using Underscore .pluck”: I think when we were first introduced to Underscore, I used ChatGPT to generate a few examples of how functions (like pluck, map, where, etc.) could be used.
  10. Explaining code: Any explanations that I needed were usually in the documentation or found through a Google search. I didn’t really try to use ChatGPT for this.
  11. Writing code: I recently started using Github Co-Pilot to auto complete some of my work in the final project. I’ve also tried to use ChatGPT for tasks like overriding Bootstrap CSS with a custom stylesheet file, but the code suggestion it gave didn’t solve the issue so I resorted to Googling my issue for help.
  12. Documenting code: I usually wrote the documentation by myself since I hadn’t thought of using ChatGPT to do it for me, but I probably will going forward.
  13. Quality assurance e.g. “What’s wrong with this code” or “Fix the ESLint errors”: Instead of submitting code to an AI technology, I preferred to Google my issue. Since most of the problems that I ran into were typical and common, the results would be sufficient in helping me troubleshoot.
  14. Other uses in ICS 314 not listed: For the professional portfolio, I copy-and-pasted my previous resume into ChatGPT to rephrase some job descriptions.

III. Impact on Learning and Understanding

In my use of ChatGPT, I appreciate that the generated responses use simple language that makes its answers easy to understand. Especially since sometimes, when looking for answers on forums, responses can become quite technical when coming from professionals or more experienced programmers. I think that AI has improved my overall learning experience, though I really haven’t utilized it to its full extent.

IV. Practical Applications

AI appears quite frequently on my social media feeds (i.e. TikTok) through things like photo/art generating filters and celebrity-dubbed covers of songs. That seems to be the way that its use is being normalized in our society. Additionally, its pattern analysis and predictive abilities can be used to automate daily tasks or make suggestions to improve our lives.

V. Challenges and Opportunities

There have been times when AI could not provide effective solutions to the problems that I posed. I can see how a deep reliance on AI could end up hurting a student’s understanding of a concept. It may be able to solve a specific problem, but rather applying that problem’s concept to a larger project could be difficult if the student does not understand how that concept truly works.

VI. Comparative Analysis

In my general chemistry class, the website which we use to complete homework problems has an AI chatbot that can be used to rephrase the problem, describe the basic concepts, or answer any questions to guide us through the problem. It’s like having a teaching assistant walk through the homework with us. However, it avoids giving us the plain answers and instead checks our understanding of the textbook chapter so that we have all the information needed to complete the problem on our own.

In high school, one of my math teachers utilized a similar math site that generated practice problems for specific concepts. I realized that if I repeated math questions, I would end up memorizing the steps and numbers instead of understanding the concepts. Generating new questions forced me to apply the concepts rather than simply recall what I had just attempted. If we answered the question incorrectly, it would show an answer and explanation but I think that it would be more helpful to integrate a ChatGPT-like response that analyzes the answer and points out where we may have made a mistake.

I think that these learning assistant chatbots and problem generators will become the new standard for homework assignments in the future.

VII. Future Considerations

Overall, I think that AI can be an extremely beneficial learning tool. Though, in software engineering applications, I have found that technologies like Github Co-Pilot were more useful to me than ChatGPT because it is specifically designed for programmers. When working with a large-scale project, asking ChatGPT to troubleshoot your work may not be efficient since it can only reference whatever part of your code you provide it with. I do think that it’s useful for things like explaining general concepts, debugging smaller snippets of code, and providing insight on given examples.

VIII. Conclusion

Overall, it’s clear that AI tools, like ChatGPT and Github Co-Pilot, played different roles in helping me along the way. ChatGPT was handy for brainstorming ideas, outlining essays, and explaining general concepts, but it had its limitations, especially in tasks like coding examples and troubleshooting large-scale projects. On the other hand, Github Co-Pilot, tailored for programmers, really stood out in completing coding tasks and auto-completing code snippets for our final project. AI positively impacted my learning by providing accessible explanations, but it had its challenges when it came to solving specific coding issues, highlighting the need for a balanced approach. This balanced approach ensures that AI serves as a complementary resource, enhancing rather than replacing the essential skills of software engineering students.