I work in a small development group with 3 developers.  We are loosely managed and have no structure to the team.  There is no designated team leader and the manager is fairly hands off.  The Senior developer has been with the company for 4 years, in that time he has had a huge hand in setting up systems and keeping them running.  He is not a very good developer but is a great cowboy coder and understands the network in a way I never could.  He has taken the role of "lead developer" and "systems architect" because he has seniority and feels he is better at his job than the rest of us.

My problem is that he threatens to quit all the time.  Yesterday he informed me that in 6 weeks he will move up another level in the 401k vesting program and is planning to leave after that.  When I asked him why, he said that it is because our manager (a man) and the team (the team being me) are “demasculating” him.  He feels that he "deserves" to have been made the development manager based on his seniority.  He doesn't like me because I keep pushing for things like bug/issue tracking software and because I am good at my job.  

Last time he threatened to quit I took him seriously and started to plan my work around him leaving.  Then he changed his mind and told me that the work I was doing was his responsibility.  He lost his temper with me and tensions ran really high for a while.  

Here are some of the different ways I have approached the situation:


Just do what he asks: This lowers tensions but then nothing gets done and the users get upset.
Take control and get stuff done: This keeps the users happy but then he gets angry at me and shuts down, he won't talk to me or work with me to get the things done that only he knows about.  He won't give me access to the systems I need to get into to do it myself.
Work more closely with higher management:  He has no respect for higher management and they don't want him to leave the company so they coddle him.


One option I haven’t moved forward with yet is to leave the company: I haven't been there a year yet and don't like the idea of leaving.  Overall the job meets most of my requirements in a position.

Ideas? Suggestions? Conversations?  Options I haven’t considered?

Update 5/11/2012:
I finally decided to leave.  It was a good decision.  Between the original post and now he got better but still was not what I consider to be a good developer, much less good management material.  I respect him for his knowledge but am glad I don't need to work with him any more.  

Management won't change anything if they don't feel any pain.

If you allow management to be hands off (by fixing things and being successful) then you will  be expected to continue fixing things and being successful.

After all -- from management's view -- things are fine.  Stuff is getting done.  You may feel stressed, but that's not what's important.  What's important is that stuff is getting done.

If you want change, you have to change.  You have to make your co-worker into your manager's problem, not your problem.

You need to make it your manager's problem when your co-worker makes demands and "nothing gets done and the users get upset".

You need to make it your manager's problem when "he won't talk to me or work with me to get the things done that only he knows about. He won't give me access to the systems I need".

Until someone else feels the pain, nothing can possibly change.
