First of all, you are not alone. When I read your post it really resonated with me. I've been developing software professionally for 25+ years and have had 3 bouts of burnout and have gone through the same fear, uncertainty and doubt you seem to be going through. It can get better and there are a few things you can do to help (at least these helped me):
1) Take a break, even 1-2 weeks can make a huge difference. You need to rest and recover so you can get persepective. It's really easy when your in the thick of things to loose sight of how bad things are or see a way out. If you can get away from that for a week or 2 you can start to think clearly again and figure out what you want (and do not want) to do next.
2) Stop working crazy hours. There are times when we need to work really hard to get something delivered, but if you're doing those hours all the time you're going to be exhausted which means you're getting less done in the regular hours and have nothing left to give when it's really needed.
3) Don't sweat about side projects. I have several hard drives full of half-finished or abandoned side projects that will never see the light of day. It used to bother me that I couldn't get them done, but now I treat them as hobbies which should be fun. If it stops being fun I stop working on it.
4) Believe in your abilities. It sounds corny but if you're shipping software then by you're doing the job. Sure we all have things we wish we could do better, but accept that you have skilla and then figure out where you want to go next. As an aside, hacking together snippets of code found on the web is how most software gets built...it's our indeustry's worst kept secret :)
5) Learn from smart people. This one is harder to do but if you can find some really smart people to work with you will learn more than from any other source. This doesn't have to mean changing jobs (although that really helps) it could mean contributing to an open source project you really like.
1) Take a break, even 1-2 weeks can make a huge difference. You need to rest and recover so you can get persepective. It's really easy when your in the thick of things to loose sight of how bad things are or see a way out. If you can get away from that for a week or 2 you can start to think clearly again and figure out what you want (and do not want) to do next.
2) Stop working crazy hours. There are times when we need to work really hard to get something delivered, but if you're doing those hours all the time you're going to be exhausted which means you're getting less done in the regular hours and have nothing left to give when it's really needed.
3) Don't sweat about side projects. I have several hard drives full of half-finished or abandoned side projects that will never see the light of day. It used to bother me that I couldn't get them done, but now I treat them as hobbies which should be fun. If it stops being fun I stop working on it.
4) Believe in your abilities. It sounds corny but if you're shipping software then by you're doing the job. Sure we all have things we wish we could do better, but accept that you have skilla and then figure out where you want to go next. As an aside, hacking together snippets of code found on the web is how most software gets built...it's our indeustry's worst kept secret :)
5) Learn from smart people. This one is harder to do but if you can find some really smart people to work with you will learn more than from any other source. This doesn't have to mean changing jobs (although that really helps) it could mean contributing to an open source project you really like.
Hope some of that helps.