Hey Chris,
thanks for you post. I've almost had the same experience as you. I startet using WordPress more than 12 years ago. With working on websites I learned CSS, HTML and PHP. My JavaScript knowledge was more copy&pasting code from Stackoverflow or writing some small jQuery scripts. My contribution in code to WordPress Core was really small, just a few small code corrections.

I see Gutenberg as a chance to dive deeper into JavaScript. Since one year I am working more intensively with Gutenberg. Thanks to the Gutenberg team I have learned a lot during this time. I also started with reading the issues and trying to understand the PRs. Then at some point I opened my first ticket and finally the first pull request.
You get feedback very quickly and can expand your knowledge and improve the code even further. Today I regularly create pull requests, triage and test issues, or review code from other contributors.

I've invested a lot of time, but it's worth it. I also haven't understood all the concepts 100% yet, but I have been able contribute a lot to the project and the future of WordPress. Step by step the project Gutenberg and the code makes more and more sense and I understand the concepts behind it. By giving something back to the project, your skills and understanding of JavaScript grow.

Any help is very welcome, even if it is a very small idea or change. Start small and grow ;-)