When doing personal coding challenges like maybe creating your data structures and algorithms and or just working on your personal projects. Is it bad to set a condition for yourself like you can't ask for help or no ai tools. Really only relying on Google searching or videos/documentation
I think that's a great idea! Learning to be a great software engineer is all about the struggle. If you are constantly copy-pasting code from ChatGPT, you will not learn the underlying material, which will be seriously damaging both in interviews and on the job itself.
Just relying on Google and core documentation/videos is how people did it in the "good ol' days", and it's a time-tested method. That is how I built my entire Android foundation.
My code quality course talks about this all in-depth as well: [Course] Level Up Your Code Quality As A Software Engineer
It's hard to do something in programming without asking for help, especially if you're doing it for the first time.
What I'd recommend which is perhaps not as daunting: after you get help, either from a person or AI tool, redo the whole feature without the help. Forcing yourself to do it again (just checkout a clean branch) will make sure your learning is a lot deeper.
I will say that it depends on your ultimate goal:
If you want to learn something deeply, you'll need to struggle through the material. It's not enough to passively go through the material. But, you also don't want to spend an entire week struggling on a problem because you won't learn quick enough. A solution is to timebox the struggle time to 15-30 minutes. Or, you can make sure that you come up with 3 solutions, then look up the best solution.
For your own personal projects, if the goal is to ship something, make use of all your resources: use AI tools or ask people about the problem.