Thanks Arjun, I wanted to solve all these problems for myself, and I always expressed myself better with writing.
So I decided to combine them, and admit that I do have some problems first, and then work on their solutions.
You just see. I will conquer all my fears, and become a great writer / programmer. Thanks for the comment!
Admitting your weakness is the first step to overcoming or working around them. So you're doing great.
If there's one thing I learnt from being a programmer, it's to never be afraid of asking questions, ever. Keep asking questions to your mentors, colleagues, friends, random people online.
There's no way you'll have more than enough knowledge at any given time, there's always something new to learn, new depths to explore so accept it a keep learning and practicing, it's shouldn't stop you from practicing because in coding, you only get more knowledge by practicing, not just by reading theory or other's code.
I struggle with perfectionism as well my dude, still do.
Strangely I find it exciting when someone peeks over my shoulder when I'm coding, gives me an opportunity to show off, although that's not going to stop me from making mistakes, I just accepted that making mistakes is an everyday thing.
Good luck with your job applications.