A healthy relationship with AI?


My experience in university during the AI hype

I've been recommended some videos lately on AI, the effects it has on novice programmers, and the future it has in our field. Convienently it seems the AI companies are starting to realize tokens wont be free forever, and trying to get people to pay more. All of this has me thinking about some experiences I've had in college, my personal relationship with AI tools, and my opinion on how they can be used in a healthy way.

Intro to Java

In my sophomore year of college (sophomore = second year), I was taking the second course in the introduction to java sequence given at my school. My professor was trying a new teaching strategy called team based learning, letting us know that classes in the future would rely on this somewhat heavily, and encouraging us to learn to work together now rather than later. I was really dreading this class because I felt already capable, most of the work thrown at us I could have soloed, and as someone with some autism in my blood: I really didnt want to work with strangers. In hindsight I am very thankful for this class and what it taught me, and I think I would be much worse of a teammate than I am today without it.

But to backtrack from hindsight, the first couple weeks of this class were pretty much torture. I remember complaining to a good friend at the time about my groupmates, I thought they were somewhat incompetent and that I couldn't ever work with them. They just didn't have the experience I had, and ultimately were making up for that with AI tools, which I despised at the time. Despite this, we were stuck together for the rest of the semester whether I liked it or not, so I tried to make the best of the situation.

They caught on quick that I was passionate about the topics, I picked things up easily, and had experience they didn't. This lead to a really healthy atmosphere in our group. I remember being asked over Discord how I learned what I did and what advice I could give. I got to be almost a teacher to them; I've always been told I accel in explaining things to people without domain knowledge in ways that are understandable, and I thrived in this environment. To me, trying to take advanced concepts and explain them in a way that was understandable helped a lot with my own understanding and lead to a much deeper appreciation for the material.

I can't remember it verbatim, but I remember a few weeks into the semester I was honest with them. Up until that point the answer to confusion was always to ask an LLM (which also werent super great at the time either). I gave the advice that we should stop using AI altogether and emphasized how important it was to read the book and the documentation for the language, I tried to explain to them that mastering the fundamentals now wouldn't just help with Java, but enable them to translate those skills across languages, projects, and teams.

And after a bumpy first few weeks, I saw change in my group. I noticed their instincts changed, not instantly, not without struggle, but the path to the solutions had changed slightly. They would ask me questions, and if I didn't know we would go read the java documentation to figure it out as a team. I saw them start defaulting to reliable resources, I saw them connecting the dots where it wasn't connecting before. The people I loathed working with became the highlight of my week. Our professor would give us a problem to figure out, and it was just our brains and the documentation, and it was amazing.

At the end of each class section where we did programming, professor would essentially come around interrogating us and inspecting what we did. Asking for explanations, "why did you do x instead of y", "what made you chose this", etc. Because we solved the problem ourselves, we had answers to those questions, maybe our reasoning wasn't good, but there was a reason. At the same time, it became incredibly apparent when another group would have no idea what they were talking about, we were able to take pride in the fact we worked through it and figured it out. Not only would I still consider myself friends with those people (some of them are part of our upcoming senior capstone project), they became programmers I give legitimate respect to. I value their knowledge, their opinions, their skills. They've become people I ask legitimate questions to, talented developers in their own right, and as a team we can fill gaps in each other's knowledge.

Where we are today

Despite being only 1.5 years ago, AI seems to have come quite far. It would be wrong to ignore that things like benchmark scores are improving, the models are much better at being coherent, they likely are able to come up with the "textbook" solution to most problems (probably because they pirated and trained off all the textbooks). And truthfully, I still have a bad relationship with the technology. I've watched it make my favorite FOSS projects a hellscape for maintainers, I've seen slop become mainstream, and I've seen first hand how it can impact the learning development of adults early into their lives.

Yet, I can't blame AI for most of that. I've heard it said that AI shouldn't have become mainstream, it should stay in the hands of the professionals in their chosen field. I've heard that its just a tool, that it can't replace a software engineer from figures in the field I respect deeply. The people I looked up to when learning myself. My take might be a little more extreme, in the same way I would never trust a self-driving car by sitting in the backseat rather than the driver's seat, I can't in good faith trust anything an LLM conjures blindly. I think that AI has no place in education, and that in order to use it effectively you are required to be somewhat competent in the field you are using it on. It genuinely frustrates me that my college gives out these AI plans, as I feel it undermines any of the point if used incorrectly. I think any generated code needs reviewed with the same, if not more, scrutiny than a human's code. And I think AI has no place in most passion/personal projects at all.

I'm happy to use AI to write boilerplate, ask it to make a template .html file, or do tasks that are tedious. I think the line in the sand should be when you stop thinking and export that to the AI as well. If you want to refactor a method name across 10 files, ask your agent to do it, that's just a chore. Once it transcends from being a tool into being a decision maker is when I believe the problem begins. Like any tool, I think that it can be used incorrectly and causes more damage than good when used in that way. And that's what it should be, another tool on my programming belt that has a usecase. It's marketed as the solution to every problem ever, and if it was anything else, I think most sane people would have laughed those salesmen out the door. If something sounds too good to be true, it likely is.