Jeez that's bad advice, If I caught you writing backdoor code in my company because of some office politics you'd be fired so fast your head would spin.
Rather improve on those skills that you've acknowledged as lacking.
Also some attitude adjustment, seems to me you think it's us against them (management) and any interaction is considered brown nosing. Get that idea out of your head.
The guy is not "stealing" your code, it does not belong to you in the first place, he is managing you and doing the job that you admitedly don't enjoy which is interacting with colleagues and finding out from them what they need from the apps. Note this takes alot of time and effort which you obviously have given no thought to.
Also - Complaining to others behind his back will alienate you in the company.
So either you make amends with the guy and try working together as a team covering each others weaker attributes, work on improving your weaknesses, or resign.
I think the wrong impression is given, so maybe I can shed some more light on this.
Sure, the company pays him to write code. So technically it's not his code that "gets stolen". It's the companies. And the company (aka MANAGEMENT) doesn't care how it gets done or by whom, as long as it gets done and the money keeps rolling in.
So when it comes time for performance bonuses, just because he prefers not to brown nose with management, or pretend like he wrote some awesome client-cash-cow of a program (which he pretended to do based off of others work within the company), he will be left in the lurch because:
a) Management likes the other guy best (and don't try and convince me otherwise)
b) The other guy "gets the job done faster" because he doesn't have to put in the R&D
c) "You" are seen as just another programmer
Sure, "selling yourself" and being more friendly and open to management sucking their cocks and stroking their egos might be all that is needed to get ahead.
But I learned 1 valuable thing over the years:
Any R&D work I do in my own time and ideas I work on that's my own and not company related. I keep to myself. I'll obviously show-case my work.
I'll show them how I got a website page down from 600kb to just under 100kb with MORE functionality than their current intranet site has. I'll quickly discuss SOME concepts behind what I do to simplify this "framework" of components for other programmers to be able to use without a 10 week introductory course or months of training... etc
So when I do work on stuff at work. During working hours. Doing what I do. I just make sure that I know I produce better stuff on my own time with my own ideas.
Code is just that. Code. Putting the "other guy" in a spot where he has to write something from scratch would probably have you in stitches laughing at him as he clutters around trying to figure out "how". You can put me in any environment without any support whatsoever code wise, and I'll flourish. Because I know I don't have to leech off of someone else to get ahead.
So if they promote him (in the same field, not management) grab some popcorn.
Otherwise, just do your job. If you want out, get out. Implementing document management systems for source control or bugging the software to give yourself credit are all nice ideas. But in practice, won't work. Not if management are blind to the fact of what you actually do there.
I've tried being constructive before. Nothing panned out. This is now with 3 companies. And it's not that I bring an "attitude" to the table.
I do the research, show them HOW my ideas would benefit the entire company and give them open source solutions to these.... and agree to it (that's the worst part, they agree to following this methodology) and then maybe 3 days after, nothing.
So I gave up. Why would you want to constantly struggle and argue at a workplace to get them to see you want to help them... it's not worth the effort.
I'd rather go spend it cranking out some of my own code and perhaps become the next billionaire.