AI and the Future of Software Development
16 Dec 2024

Introduction
One of the hottest topics in tech and the world right now is AI. I want to write about its connection with software engineering and the positives and negatives I perceive from AI, mainly in regard to coding and the software development industry in general. I will primarily be talking about ChatGPT as that is the AI I used almost predominately in this course and in outside endeavors.
Personal Experience with AI
- Experience WODs : For the most part in this section I did not use the AI unless I was severely stuck. The main reason why I avoided using the AI here is because the video is fairly easy to follow, even when there were times when the technologies didn’t line up exactly, I found it easy enough to get through the experience without using AI.
- In-class Practice WODs : Did not participate in these very often but when I did, I didn’t use AI really. Because our class, and therefore the in-class WODs, was before the practice WOD’s were released it was generally the same concept being covered.
- In-class WODs : I would say I used the AI in at least 30-50% of the in class WODs, although funnily enough sometimes the AI would only make me more confused, especially in relation to front end formatting with CSS/HTML. I think ChatGPT would sometimes almost overthink or even straight up misunderstand what my end goal was in terms of formatting the page so it only left me more confused.
- Essays : I tended to use the AI here, my reason was that I would generally type a draft of my thoughts about the topic we had to write an essay on and then I would feed it into ChatGPT to format it and check for grammatical errors and such. However, I then would recheck the output ChatGPT gave me and do a double clean up of what it wrote to better align with what I wanted to convey. I think the language of ChatGPT sometimes is a bit…almost too identifiable? Almost like there is no character or soul in the writing.
- Final Project : I used ChatGPT quite frequently in the final project. I saw someone say on the internet they use ChatGPT almost like a “Google on Steroids” and this is generally how I used the AI. When I was looking at other websites for inspiration for the design of our final project I looked at both the site’s HTML/CSS but as I parsed through that I was asking ChatGPT what exactly certain parts of their code were doing and how to implement it on our project. I also used it to help me understand how exactly the prisma/back end portion was implemented in our project. Since we were going off a template, I wanted to exactly understand how certain code worked helped me get to speed on understanding how the project worked overall.
- Learning a concept/tutorial : I think this generally ties into the previous topics, I tried to use ChatGPT for this mainly. Getting more clarification on a certain topic or subject can really help my understanding of it, however I still try to check the internet in general for confirmation on what ChatGPT says to make sure it’s correct/not totally wrong.
- Answering a question in class or Discord : Didn’t use AI for this. Most questions asked in class I generally didn’t have a problem with or with the ones that were more complex like setting up Vercel, other students had figured out solutions prior to me starting the problem.
- Asking or answering a smart question : Similar to the answer in 7. If I had a general question I tried to ask the teacher if possible, but Google and ChatGPT sufficed for my needs.
- Coding example : I used ChatGPT for this somewhat often. In the same vein as number 6, when you ask ChatGPT to elaborate on a concept, especially one that is related to coding, it will generally generate a code snippet for you to see. And because I like to reinforce this, I will sometimes ask ChatGPT to step through the code line by line for me so I can really understand what it is doing (and make sure it also knows what it is doing is correct).
- Explaining code : Covered in question 9. I do think that the way ChatGPT can format stepping through code can be very useful. I’ve used it to help reinforce concepts like algorithm/data structure type questions by asking it to step through code line by line to explain something.
- Writing code : I’ve used ChatGPT for this. When I write code I generally attempted it myself, or by following similar patterns we learned from the professors in the experience WODs. Occasionally I would ask ChatGPT how it would do this portion of code, and I’ve found sometimes it was able to condense the code to something much more clean/readable. Similarly, especially with certain underscore functions, it can make it quite complex that it is fairly unreadable. When you are able to recognize the general pattern of the React components and how it works with HTML/CSS I generally approached that myself. It was more so in the logic portion where I would ask chatGPT to double check my code/understanding and it would sometimes rewrite it in a more optimal way.
- Documenting code : Somewhat answered in the previous questions, but I didn’t use ChatGPT much for this. Our code was straightforward enough for the most part that documenting it yourself was an easy task.
- QA : I think I answered this in 11, but I generally did not use it at all for ESLint errors. I found that ESLint’s explanations were straightforward enough to fix yourself, there were occassional logic ESLint warnings, like with null values being possible that were a bit trickier but it wasn’t enough to warrant using AI.
- Other uses : Another use I like to use ChatGPT from time to time is brainstorming ideas for projects and such. It doesn’t do the best job honestly, but if you are really out of ideas it can help at least kickstart ideas a little.
Impact on Learning and Understanding
I think AI has enhanced my understanding of software engineering concepts, but I understand that there is possbility that one may use it as a crutch such that they can’t code themselves and I want to avoid that. I try to use ChatGPT as more like a “Google” type of tool as much as I can rather than just asking for answers to be copy and pasted.
Practical Applications
I think AI has a place in real world projects, but it can’t be taken as gospel. I believe that ChatGPT from using it for quite awhile now will point you in generally good directions, it will also generate code that is generally good. But in specific scenarios it won’t be exactly what you want. An example of this being with working on front end which I talk about in the next point. I watched a Youtube video of someone attempting to recreate someone else’s website with little coding knowledge but just by only prompting ChatGPT. They got something going, but it wasn’t close to quality of the original website. Though with a prompt like “Give me crash course of SQL syntax” ChatGPT feels extremely effective, and if you can ask it to give you code snippets to help interact with your database (assuming it understands your schema) it can be invaluable in teaching/reminding you of concepts quickly.
Challenges and Opportunities
There are certain things I feel that the AI can struggle with severely. One example was trying to understand the logic of why the Playwright tests were failing. I attempted to fix it myself and got nearly there, though I would say I did not have a complete understanding of how Playwright worked, I got the gist of it reading the test code. When I asked ChatGPT to help me understand why this last test wasn’t passing, it attempted to show me reasons and fixes, but it did just not work. Similarly, like I talked about in the last point, ChatGPT, at least to my knowledge, cannot “see” another website, thus it cannot explicitly understand the design you may want unless you are incredibly specific.
Comparative Analysis
I think to build a strong foundation in software engineering education one must stick to mainly traditional teaching methods. I think one of the aspects of coding that really hammer home your knowledge is the feeling of struggling through a problem before you are able to finally figure it out. However, I think there is most certainly a place in using AI to enhance ones education too. Before ChatGPT was mainstream many people referred to stack overflow for certain problems, especially if the language you had to use was quite difficult to find documentation for (Racket, Lisp..) I think with ChatGPT this can speed up your understanding 10x instead of flipping through 10’s or 100’s of stack overflow questions that barely help you understand at all, while simultaneously making you feel stupid for not understanding the problem as well. Using AI is a double edged sword though, in that if you use it too much you’ll learn nothing, but if you don’t use it, you may waste significant time and mental energy.
Future Considerations
I think ChatGPT is here to stay and perhaps professors need to be aware of what it can do and how to address their courses accordingly. Something that comes to mind is how ICS 212 is formatted : The projects and assignments were all take home coding projects, but the quizzes and exams were all paper based. This could be effective in that you can use AI to help you if needed when you code, but you still need to understand the concepts of the course if you hope to pass the quizzes and exams.
Conclusion
Overall, I think it will be extremely interesting to see how AI use evolves in regard to education and the world in general. I think especially in Software Engineering courses students can really experience how powerful some of these AIs are getting first hand; it is quite incredible that an AI can almost entirely develop a working piece of software itself, that didn’t seem possible even 3-4 years ago. I think personally my recommendation is similar to what I said in the previous point, I don’t think we should completely stray from AI, but certain concepts should be tested without the possibility of using AI to really hammer down that the student really understands the important concepts we must take away from the course.