I've always been a software development nerd. I got started with web development (HTML, JavaScript, CSS, etc) and continued with PHP, Java and C#. All along I never seemed to become really good at coding; when I solved problems it was equal parts copy-paste-customize and spending too much time on what seemed to be basic stuff. I thought it was because I was still young, that I was too young too grasp certain concepts.
Now I'm much older yet my old habits are still here and I've realized that I, frankly, am a bad programmer. Which is kind of sad since I'm still very curious about software development and read the literature, keep myself updates with new languages, development methods, tools and libraries. I find pretty much everything from algorithms to interface design to be interesting, so it's not like I don't care - quite the opposite. With "bad programmer" I mean that it's difficult for me to even analyze basic problems and implement them in code. I often find myself going back to basics and looking up trivial information.
Should I just quit being a software developer? I find being a talentless hack far worse than being unemployed, but it kills me to think that I will never become a great or even good programmer.
I've been coding professionally for about a year now.
Addendum: I've received a lot of incredibly uplifting feedback in this thread and I just wanted to say to you all how much I value it and that I will take your advice about perseverance, getting more formal education, and having fun while programming to heart. Again, thank you very much Stack Overflow.