I just wanted to make this point because I've repeatedly seen folks frustrated by others who just get things faster and ultimately make progress much more quickly in their careers.
I think it's useful/important to acknowledge that programming is a bit like sports. It's not fair, but some people start with an incredible genetic (or something) advantage built in. I've seen this time and again.
Incidentally, the best programmer I've ever met (he co-authored a very popular programming language) happens to be one of the slowist typists I've seen. I once asked him why, and he said "because I have to think."
Take your time and have fun.
For some it means writing hard mathematical algorithms. For some it means writing the efficient and secure low level code. For some it means solving real problems fast by efficiently glueing existing code. For some it means great communication/management with 30 other programmers on team.
I think it is more about finding who you really are and following that than trying to become some dogmatic idea of what "amazingly good programmer" is.
Find your niche. The bubble effect is strong in all of us.
Yes!
If we assume that about a third of all programmers are "average" (whatever that means), another third is "above average", and one third is "below average". So, it's not actually a tiny minority, despite what Hackernews might make you think.
Programming consists of many different aspects: creating an architecture, designing algorithms, implementing them, hunting bugs, testing etc.
If you think you are "below average" in one of these areas, you can team up with other developers who are good in that area, and let them guide you.
For example, I work with somebody who is amazing at digging deep and really understand the low-level nitty gritty of bugs. But, they are not that great at building high-level abstractions. So when a task involves building high-level abstractions, we discuss these abstractions beforehand, write some mock examples that use the new abstractions etc.
Some developers aren't good at low-level stuff, but build great user interfaces. Some don't do that very well, but shine when it comes to automation.
To sum it up, "below average" programmers can be very useful to an organization with the right amount of specialization and collaboration/mentoring.
I used to hate (the lack of elegance of) JS but I got used. After a lot of dabbling, I'm still between React and Vue. While I prefer Vue, all jobs ask for React. Framework marketability seems to be crucial when/while you perceive yourself as below average.