As some others have said: programming and CS are only somewhat related.
I like to compare it to some kind of manual work.
Programming is the tool. There's a hammer, or a screwdriver, or a saw. A good manual worker is able to use most of them. She may not have experience with all of them, but with enough experience she will learn to use new tools faster.
The manual worker usually doesn't know much about creating those tools.
CS is like creating tools. You know what properties the tools should have, what materials they should use, etc. Most engineers are probably not as good in actually using them as the above mentioned worker.
So, being a good programmer does not mean being good at CS, and vice versa.
What I'm saying is that it's totally fine. You'll learn (using the comparison again) what's the best material for a given tool for your current project as soon as you need it.
I like to compare it to some kind of manual work.
Programming is the tool. There's a hammer, or a screwdriver, or a saw. A good manual worker is able to use most of them. She may not have experience with all of them, but with enough experience she will learn to use new tools faster. The manual worker usually doesn't know much about creating those tools.
CS is like creating tools. You know what properties the tools should have, what materials they should use, etc. Most engineers are probably not as good in actually using them as the above mentioned worker.
So, being a good programmer does not mean being good at CS, and vice versa. What I'm saying is that it's totally fine. You'll learn (using the comparison again) what's the best material for a given tool for your current project as soon as you need it.