“I’m really just a mediocre programmer with really good domain knowledge”
Your problem is that you have no problem. Let me explain…
I believe that the quality of a programmer is not how much you know, but what you can do with it. So if you have “really good domain knowledge”, then you probably aren’t a mediocre programmer at all, you’re probably a good programmer or even better.
Like many other programmers, I love to check out the latest cool stuff people are doing. Then I hear the 2 voices in my head. One says, “That is so cool - I have to learn that!” The other says, “Big deal, I could do that in BASIC. I may need a few more lines of codes and a couple of hacks, but it will still do the exact same thing.”
It’s tricky to balance all the cool stuff going on with your ability to “just get stuff done”. You will never learn everything. You will never become the expert at more than one or two things. It’s great to “learn”, but not at the expense of “doing”. You need both. There were many times I had to build something with my limited knowledge and wished I knew more. But then I built it anyway. Something built with limited resources today is better than something built perfectly tomorrow.
If you’re unhappy with your job but like coding, then either find another job or start something on the side. But please don’t fall into the trap that you aren’t good enough because “someone else” knows “something more”. That will always be the case. You can’t win that battle.
Just do the best with what you have and make a practice of adding to it a little at a time. Get satisfaction from the benefits you provide others with what you know now.