To put it simply: You are good at developing your own ideas and shipping them but that's not what a coder does. When a coder is hired, it is their job to develop and ship other people's ideas.
One limitation you likely face is that your lack of programming prowess limits your ideas or, at least, which of your ideas get developed. By the same token, if I asked you to build Product X (say, a Google-like indexing engine), I'm guessing you'd be hitting walls pretty quickly because your breadth of knowledge is, frankly, limited.
If you want to become a good coder, you probably just need to fill in the gaps. You need to take the time to learn the essentials of computers and programming. Most devs get this through formal study but many also are self-taught. The trick is you need to put in the effort to be self-taught. You need to come at your education with the goal of learning a wide base of knowledge instead of just learning what is needed to solve today's problem.
My personal recommendation for a starting point would be to read and thoroughly study Programming Interviews Exposed: Secrets to Landing Your Next Job (2nd Ed.). This book just offers a wide range of topics all of which need to be mastered to be a "good" programmer and be able to handle many challenges that are given to you.
http://www.careercup.com/ is also helpful.
Lastly you can look around http://programmers.stackexchange.com
Get dozens of book recommendations delivered straight to your inbox every Thursday.