You might start as a junior dev but within a year you'll be talking the lingo, your toolbox will have exploded, and you'll be well on your way.
You have already demonstrated that you have the one quality necessary to be a good programmer. The ability to think abstractly and manipulate and express those thoughts in a concrete manner. Everything else is just practice and hard work.
To be fair, I am a programmer and I've had exactly the same thought over the years! ;)
I guess I finally have to get started with my work day... ;)
I've friends who are in the same boat and invariably the excuse is "I don't have the time to learn the theory, I have other things to do." Because of that, their workflow never really gets any easier. That's fine if coding is that side thing you do to make your job easier. That fails when it's what you want or need to do as an end to itself.
Also, I don't mean theory in the sense of the MIT "Introductions to Algorithms" book, I mean in the sense of the standard library, idioms, syntax and common usage of the languages and libraries you use.
I understand and almost echo that sentiment myself, but bear in mind that it may be an instance of impostor syndrome :).
I've worked in a marketing role in a software company and realize that I don't have the understanding of how to contribute in a meaningful way to a team-based professional programming project.
My workflow isn't ideal: bang my head against a wall, Google my way out, copy/paste/edit until things work, and move on.
Because I'm generally on a mission to get something done, I don't have the patience to name variables in a meaningful way or write clean code. I'm basically programming to accomplish something in the moment and it works for me.
To paraphrase the Woody Allen quote, "I'm not sure I'd want to work anywhere that would hire me as a programmer." :)