I think what you are describing is pretty common among developers. The good thing about your situation, is that you have the power to change your self limiting behaviours. You have to push yourself. Finish a webapp and post it to HN. Get involved in a local tech group and do a talk. Sign up for a MOOC from Coursera or Udacity. All of these requires hard work, but will give you confidence. Beeing successful as a software developer is as much about how you market yourself as how good a dev you are. So if you want success, you have to learn how do those things. I'm learning this as well. It's not easy, but necessary.