The question I had was regarding building side projects such as a calculator using a tutorial and then modifying it to make it unique. Is it okay to use ChatGPT or Github copilot to add those modifications or should I try coding those modifications on my own so that I gain better lower level programming skills?
I feel like the answer is contextual here.
AI pair programming is fundamentally a speed multiplier, it can pump out raw code faster than any of us ever can.
Which is great if you already know a language/system and just need to get the grunt work out of the way. But if you're following tutorials on something, that's not you.
Instead, focus on avoiding ChatGPT/Copilot for now - you need to learn the fundamentals at play here first, otherwise you can't even be sure if the code being hallucinated out is correct or even doing what you want to do.
Perhaps you could do this if you were interested in learning specifically about using AI tools, but if the goal is "learn how calculators are written" or "learn Go by writing a calculator", using AI will only hurt you.
Agree with Scott that the answer is contextual, but I'm a bit more positive about using AI tools. These code-generation tools are the future, so it's better to embrace using them instead of avoiding them.
You don't need to hide the fact that Copilot/ChatGPT helped create programs you built, but you should still have an understanding of how things work, and have an eloquent answer to how you prompted the AI tools to be more efficient. (In fact, IMO most interviews in the future will test some level of prompt engineering!)
Both answers have provided good context and I'd like to get my own thoughts in as well. There's so much context around it like legal issues about attributable AI that things can get murky quickly. That being said, though, I'm absolutely enchanted by these tools and would use them in my work if allowed. Remember you need to be a good partner to them though and understand what they give you as that is your reputation on the line when something goes wrong. Similarly, you should also know how to test code well and make sure any tests generated are per an appropriate standard. As long as you can do these things though, have fun. These are the ways of the future and they are going to make our lives so much quicker. Also consider that not every task you want to do necessarily has even an according domain specific model for that yet. I say that as I'm going to be getting into some really advanced domain specific modelling soon and it is going to be fun. That being said, you have to see how typical or atypical your use case is and what you can do to make life easy. Hope this helps!