Translated with www.DeepL.com/Translator (free version)
A major issue that most of the developers like me and you within this demographic face is that of most beginner-focused content not being fast enough to learn with. This along with the fact that time is often a big issue for us. I've had numerous times where I had to learn a new framework within a 1-2 week time span in order to plug some work gap or speed up a project, and found no legitimate resources that could allow an intermediate developer like me to learn faster.
This is why I am currently creating content targeted specifically at intermediate to advanced developers and teaching new languages and frameworks (using the 'constructivist' method) in a way that makes the process of learning them much more efficient. In short, faster.
It's a little rough around the edges but you can check out the blog where I share my current tutorials here: https://fromtoschool.com.
To gain a better understanding of why the method of teaching that I've described is more efficient than others for the intermediate developer, check out this post: https://fromtoschool.com/why-most-programming-tutorials-are-...
There are also variations in titles, both real differences and just differences between what companies call you. Are you really a programmer? It sound like you might be a software developer since you are learning concepts and architecture.
So to get to that next level, you can either do it from your perspective or the company's. Use the company's guidelines and get promoted. Or, improve areas you see as an opportunity to improve.
My company sees me as an intermediate developer, but I have often been mistaken as a senior developer or tech lead (not currently as I switched roles/tech stack). So perspective is everything.
"Java concurrency in practice" - will give you deep insights into the "how" and the "why", on this subject which is very important if you wanna call yourself "advanced"