It helps to have a CS background, but you can still thrive. I was in your position a few years ago, but I had enough time in college left to get a CS degree.<p>Some thoughts:
1) You develop a deeper appreciation for the "simple" stuff.
It's like this: you turn a wheel around slowly to study its intricacies, appreciate its design, see the structure of the spokes, etc. Now, when that wheel is in high motion, you can thoroughly appreciate the motion and the wheel. So, yes, a CS/engg degree may help you in this respect.<p>2) Pair/peer programming. You can learn so much from observing a good coder at work. Even more importantly, get a big picture idea of data structures and algorithms even if you don't understand it completely. Ask your CS friends to explain it to you. Now, explain what you learned to your non-CS friends. Teaching someone else forces you to get to the core of a problem/question.<p>3) Funny thing about code prettiness. Share your code on Git Hub and ask your friends for comments. Or pick a simple open source project and write your own code. Then, compare it with the source and see how you could have refactored it.<p>4) Repeat 1-3.<p>Well, it seems as if you are comfortable enough with yourself to admit your true capacity. So, go out there and find yourself a technical co-founder someone smarter than you. Chances are very likely that you don't necessarily need to know how to write a kernel, nor does your co-founder. The only thing that matters is that you are smart enough to figure things out and aren't afraid of reaching out to people who do AND can point you in the right direction.<p>Well, if nothing works from above, sometimes it's just better to stick with something you are working on and iterate. Whether that sticking to maybe your startup software framework or improving your prototype, just start with the fundamentals and iterate!