Hollywood still tends to portray coders as over/underweight, bespectacled, Doritos-munching, Coke-drinking nerds... I think a more appropriate characterization, though, is a wizard. Someone like Gandalf, who can make amazing things happen, and has spent a lifetime learning and refining his powers.
Coding gives you tremendous powers to do things in the world—make things fly, interact with people, entertain, provide comfort and care. The ability to write code is like magic...
So come on.... Who wants to be a magician?
Write code, copy out code snippets you find, play with code, change code, try to refactor code or think of different uses for your code. The best magicians learn from doing.
Sometimes we are so eager to do great deeds that we end up forgetting that they can only achieve their maximum potential or be possible if we have a strong foundation on the basics. Forgetting this also makes us feel overwhelmed by the simple thought of larger challenges.
Even though rolling a coin on your knuckles or flourishing cards are cool things to perform, these are not magic tricks. The only thing that will make you better at performing a trick is actually practicing, observing where the difficulties of each trick reside, criticizing yourself, and experimenting with variations and approaches to improvise in case something goes wrong. When practicing coding, try to find challenges that depend on the same set of skills you are trying to exercise, that are different from the outside but similar in essence.
Magicians get better at what they do by finding out how a magic trick is done rather than getting frustrated when the mystery comes to an end. A good part of what makes us evolve as coders is based on curiosity and observation, so wondering how an existing solution for a problem is implemented and trying to understand its implications can be a very powerful stimulus for you to explore new concepts.
At some point in history, most of the techniques used in magic tricks also didn’t exist. When we are juniors, it might feel overwhelming to come up with new ideas, challenging the status quo. We feel as if nobody we consider "smarter" than us did it, we might not be capable enough to do it either. But thinking like this actually hinders our progress, so don’t be afraid to be inventive when you face some new challenge, don’t rely only on open-available solutions, and even allow yourself to question the existing solutions to reach for better ways.
One of the most important traits of a magician is being confident that they can, and will, unravel the magic. Think this as the same way of thinking you should apply to coding, don’t see the problems you need to solve as something bigger than you, but rather see them as something that you can, and will, overcome.
There is one crucial point that makes magicians different from programmers: magicians try their best to hide the gimmicks of their tricks, they try to be mysterious, and when people find out how they do the trick , it usually means that they are now less impressive, but this is not true for programmers. When you develop a solution for a problem, and later someone discovers what you do or get to the same conclusion as you, this is good, it means that more people support this idea, this is how things like design patterns arise. This is something that should give you more confidence!