You have a rare and valuable skill, which is a great deal of self-awareness and the ability to see where you need to improve. An rocgf rightly said, you are young and have a lot of time to learn, and the learning never stops, and takes a long time. Relatively few people your age have the advantage of not thinking they already know everything, or appreciating how infinitely much there is to learn! ;)

Peter Norvig wrote a great paper called "Teach Yourself Programming in Ten Years", which asks "Why is everyone in such a rush?"

https://norvig.com/21-days.html

You can't learn everything, so it's good to choose something interesting to focus on. It might be useful for you to find some specific application areas you're interested in to motivate you to learn programming, like 3d graphics, which is very fun, satisfying, and in demand.

For example, I've embarked on an at-least-10-year journey to learn the 3d graphics tool Blender, which is programmed in Python, and has its own visual programming languages (node graphs) for image processing, generating 3d geometry, animations, and all kinds of other stuff. There is no ceiling on how much you can learn about it, and there are lots of great free examples and tutorials.

If any of that kind of stuff interests you, then programming Python and node graphs will super-charge your abilities and be extremely fun, too.

This is a great tutorial I just went through, and you can find many more on youtube, but this guy has such a deep understanding of what you can do, it's one of the best. The full course requires a Blender Studio subscription, but if you're interested in that topic, it's well worth it, has a lot of other benefits, and is for a good cause (Blender is an open source project, one of the most successful in the world):

https://studio.blender.org/training/geometry-nodes-from-scra...

There is a huge demand for Blender programmers in many different roles and abilities, including node graphs and Python too! It doesn't hurt that Python is the lingua franca of machine learning, and also very useful for web programming, and there is a huge rich ecosystem of modules you can use that plug right into Blender. So everything you learn about Python will be useful outside of Blender, too. (Although Blender's node graphs are quite unique and specific to Blender.)

Another fantastic and powerful visual programming language for learning computer science and programming is "Snap!", developed by professor Brian Harvey at Berkeley. It's easy for both kids and adults to use, but it's not "dumbed down" like some visual programming languages, and it teaches many powerful high level concepts. It's essentially a visual interface to the Scheme programming language, including all the hard core computer science magic like recursion, closures, continuations, Y combinators, etc.

https://snap.berkeley.edu/

There is a lot of educational computer science courseware around it, too, like The Beauty and Joy of Computing:

https://snap.berkeley.edu/bjc

The Beauty and Joy of Computing

The Beauty and Joy of Computing (BJC) is an introductory computer science curriculum using Snap!, developed at the University of California, Berkeley and Education Development Center, Inc., intended for non-CS majors at the high school junior through undergraduate freshman level. It is a College Board-endorsed AP CS Principles course. It is offered as CS10 at Berkeley.

The curriculum: BJC is available online at https://bjc.edc.org

Resources: You can find information about BJC, teacher preparation, and additional resources at https://bjc.berkeley.edu

Snap is Scheme disguised as Scratch [pdf]:

https://news.ycombinator.com/item?id=28337196

Snap! 5 is here:

https://news.ycombinator.com/item?id=20309162

One of the coolest ways to learn programming I've ever seen is the Snap! visual programming language, which is written in JavaScript and runs in the browser:

https://news.ycombinator.com/item?id=20310134

Here's the elegant Snap! visual Y Combinator:

https://news.ycombinator.com/item?id=20312091