But I never failed to do what needed to be done, and I always get praised in the end.
And trust me, this is absolutely horrible, I am always feeling I am not good, yet I am always getting more and more pressure on me, with people throwing more and more crazier shit at me believing I can do it,
I had one job where I was asked as first project to develop alone a geo location augmented reality library for iOS.
I had no idea on how to do it, and it took my three months, and I thought I was slow. When I was done the CEO of the company gave me a 10% raise and praised me for a whole week saying that what I did was really fast and that his other workers would not do that fast... I did not knew if I felt great for the praise, or bad, because I was feeling that I did not deserved the praise and that I was like cheating the guy out of his money.
From the discussion in this thread I don't believe that you're a particularly effective developer - it seems you're used to playing the hero programmer role and have been too poorly managed for anyone to question that. Your descriptions of the C++ STL show that you don't know what you don't know, and if I were working with you I'd be asking all sorts of questions about what was going to jump out of your code and bite us further down the line.
You're probably smart and have a lot of potential, you just need to realise that there is a vast amount that you don't know.
What bothers me very much is that there are seemly noone ever to look at my code and say what I could have done better, or tell me what I should be knowing.
In fact I asked as birthday gift to my grandmother to import the special edition of Bjarne book because I concluded that the only way to improve my C++ pratically now is just work my ass off trying to learn the whole damn thing, because noone will teach me.
And not wanting to be too much pedantic, but std != STL
And am I confused here? I'm interpreting std as the namespace in which most of the C++ Standard Template Library lives. I assumed you were using them synonymously, because I've never heard anyone refer to std as anything more than a symbol used in STL code. Maybe there's a different acronym I'm not aware of though.
Not the lack of the good, but the lack of a team.
Usually I am tasked into solo or soloish positions.
But I think this is kinda expected, considering what I work with ( mobile games and non-web apps, where most of the time one coder is enough, also small indie games for other platforms, that rarely have more than one coder )
I guess you have two options really - find another job that will give you access to a team, or start doing something to give you contact with programmers outside of work, whether that's getting involved with an open source project, finding a meet-up to go to, taking a class, etc. In any case, approaching it with an appropriate level of humility is probably a good idea.
I used to think I was a great programmer, now I'm not sure, because I've seen evidence for and against. But in the end how do you ever know ?
For example I was once asked to develop a JPEG2000 encoder. I think it took me about 3 months. Is that good or bad ? I don't really know because I don't know anyone who's done anything comparable and neither did my managers.
One thing that's different between you and me is that you seem to attribute a lot of importance to what people like managers think of you. But if you're so much smarter than them how could they effectively evaluate you, so why should you care about their opinions ?