First of all, what you are feeling is very normal. Secondly, it’s good that you’re thinking about these things.
Don’t worry about being able to do the fancy tricks that other people do. Maybe they have previous experience. Maybe they are just cutting and pasting from other people’s projects or SO. Don’t worry about what they are building, just build something good yourself. Just meet the criteria.
I think a good strategy is to build it the best you can with as little peaking as possible. Then, after you’re done, take a look and see how other people have done it.
Yes, I too (as a professional developer) spend time looking on SO. I do cut and paste snippets. But (and this is very important) I never put anything in my code that I don’t understand. If I find a solution to a small problem that I couldn’t have come up with on my own, I learn it and now I do know it - it is part of my coding vocabulary. No one does this all without see what others have done. That may be in the context of a structured course or “learning as you go” by finding a way to solve a specific problem.
I was a jazz guitarist before dev. I knew a lot of jazz students who insisted that they would never copy anyone else’s licks. They would develop their own vocabulary in their own voice on their own. A lot of them didn’t want to learn theory. They would only play what they hear. To put it bluntly … they all sucked. They only ever heard what was already in their heads. The point of learning other people’s licks and theory wasn’t to become a robot, but to expand what they could hear and to suggest new ideas. It was to expand the number of available colors on their palette. In the words of Clark Terry: imitate, assimilate, innovate. I think it is the same for coding.
So, don’t be so hard on yourself. If you learn something from what you do, then it served its purpose.