Monday, March 3, 2008

My rules

I have a few rules.  Not many, but the ones I have don't get violated.  The rules that pertain to making sure I don't quit on your sorry ass and go work somewhere else go something like this:

1) Don't fuck with my money.  Let's be honest, I work there because I get paid.   It has nothing to do with company loyalty (would your company be loyal to me if it wasn't in it's best interest?  Neither would I).  It has nothing to do with needing something to do.  I have plenty of things I want to work on, going to work everyday gets in the way of that.  I'm there because you pay me.  When you stop paying me, I stop coming to work.  Period.

2) Let me do my damn job.  Even though I only come to work because you pay me, It doesn't mean I don't have a little pride.  I do a good job, because It's important to me to do a good job.  I'll bitch until you fix the processes that are killing the project, I'll take the extra time to fix the stupid ass code I just found, and I'll take the extra time to make sure my code isn't just as bad or worse than the stupid ass code I just found.  When you get pissed off at me because I'm not being a good little code monkey and shutting up, letting all the bad crap happen, I no longer have any use for you.  If you're not going to let me do a good job, why the hell would I stay?  So you can blame me when it all goes to shit?  No thanks.

3)  If you've got a problem with me, tell me.  Don't hold on to it and throw it out as ammo in a meeting in front of God's naked ass and the rest of the country. 

I've worked for a lot of people since I started my professional career as a coder.  Some of them were unethical.  Well, one was anyway.  And when he asked me to do things that were unethical, I asked him to kindly stuff it in his oversized, cancerous ass.  Figuratively speaking, of course.  He carefully considered what I had to say, then decided that maybe he should choose the ethical route.  That was a good day.

Some were not very bright.  Somehow I survived all that.

Most were pretty good.  I enjoy working for somebody that wants to do things right, and is willing to listen to another's ideas about what that might be.  So far I think my track record has been pretty good.

My previous job fucked with my money.  Now I work at my current job.

My current job, despite all, has been pretty good so far.  They did a lot of really stupid shit when I started, and now they do far less stupid shit.  I'd like to think that's largely in part because of me, but I work with a lot of smart people.  I'm pretty sure I contributed quite a bit though.

Since January, I've been on another team that's more or less doomed to failure.  I took it on as my personal mission to save this project.  I had a lot of work ahead of me.  My team lead was based in New York, so there was the remote aspect of the team.  That was difficult, but not insurmountable.  In addition, he's Serbian, which makes for some cultural differences.  Many of my jokes are lost on him, because English is a second language for him.  That's not really a problem, just an observation.  As the last couple of months passed, I realized that the business unit and the leads were getting pissed and annoyed with me because I wasn't just being a good little code monkey.  I don't do the good little code monkey part very well.  If they wanted somebody to shut the fuck up and just write the damn code, they should have hired a junior developer, not me.  I'm too expensive for that shit.

Last Friday, something happened which I'm not sure I can get past.  We had a sprint retrospective.  It helps if you know a little about Agile methods and Scrum, even though we don't really do it right.  A sprint is a chunk of time in a development project.  A sprint retrospective is basically what everybody thought went well and not so well for that particular sprint.  I made a nice long list of things I thought needed to change.  I don't make this shit up, 90% came from things that worked well on other projects.  I do my homework.

The danger of a sprint retrospective is people taking things personally.  I've been though many, and I try to never take things personally, even if I think somebody might be referring to me.  One of the biggest rules in agile is not to personally attack the other team members.  You can attack an idea, but not the person presenting it.  "Your idea won't work because blah blah blah" instead of "Your idea sucks because you're a flatulating butthead!"  Common sense, one would think.

It's hard, though, to not take comments personally when they keep using your name.  It's harder when that person is your team lead.  It's even harder when the first indication you had that they might be not completely satisfied with the work you're doing is their list of grievances aired about you during the sprint retrospective.  It's even harder when the response to the thoughtful, carefully considered suggestions you provided is "well, X didn't do this and X did that."  Um, how about responding to what I just said instead of a personal attack there, home boy?

Perhaps the suggestions I listed were misconstrued as a personal attack on him.  Perhaps it's another cultural difference clash.  Perhaps my team lead hasn't read the Agile book yet. 

Or maybe he's the kind of guy that will throw me under the bus when the project fails.  That's pretty much what I think happened on Friday.  That entire business unit is big on finger pointing.  It's not important what's fucked up, only who fucked up.

I think my resume is good enough I can get another job without too much effort, so I'm not too worried about getting fired and/or quitting.  I wish I could quit and just not work anywhere for a while like Rory, but I just ain't that cool. 

I need to talk to my boss's boss about this, but I put it off today.  Basically, when I dragged my sorry ass into the office this morning, I was still to pissed off about it to be rational about it, so I figured the meeting wouldn't go too well.  The request will go something like "I need off of his team now.  This can happen one of two ways, one of which includes my continuing to work here."  I'm looking for a less ultimatumish way of saying this.

I don't know how many techie readers I have, but I would appreciate some comments here.  Have you experienced something like this?  How did you handle it?  Am I just being pissy here, or is professional pride enough to merit an employment change? 


  1. My 2 cents: In any job, techie or not, if you get to the point when you're honestly considering quitting (but aren't self righteous enough to do it then and there) you need to talk to the person in charge first and let them know what's going on. I think you're smart in letting yourself calm down a bit, but don't put it off for too long. This may be something easily put aside and moved on from, or it might be the beginning of a new job search. I don't think you'll know until you talk to the right head hancho about it. In some cases, you have a problem, you talk to the head hancho, and nothing is solved per se, but you realize out the problems you're having (and people causing them) are okay as long as everyone else realizes the crap ain't your fault. It's up to the big guys to decide who stays, goes, and gets to do what. You decide if you will or won't quit. All you can do is make sure they have your side of the story, you have their response, and then make a well informed and thought out decision. If you can, it's always better to come to the conclusion you need to leave and look for a job while you're still employed (for as long as you can stomach it). Besides the money thing, you'll be sure when time comes if you've spent time looking at alternate solutions. Good luck and don't kill anybody. :) You know where to find good interview advice at least.

  2. "you need to talk to the person in charge first and let them know what's going on."

    This was actually my plan, but I needed to cool off because ultimatums don't go over very well with this guy. I wanted to be able to talk about it rationally and professionally before I went in.

    Having had the benefit of a couple of days worth of perspective, I've decided to give the lead a chance. In all fairness, he probably has no idea why I'm pissed off at him. He should get the chance to explain, and I need to explain to him why what he did was uncool. He may not have lead very many teams before this, and may not understand why you don't do that kind of thing.

    I also had the benefit of a nice long conversation with my former manager. He was quite rational about it, and explianed that the company would most likely be willing to move me to another project (possibly the top secret new one nobody is allowed to talk about) rather than lose me. I think my track record here speaks for itself, and this was confirmation of it.

    Tommorrow is the day to bring these things up. If I can't resolve things with the lead, then I go to his boss and explain the situation. I think he'll come to the conlusion that another team might be better for me. I hope.

    I also don't want "just another job". I've got at least two outstanding offers, and got an unsolicited call from a recruiter today. They come out of the woodwork, I swear. I could pretty much get "just another job" tommorrow, but that's not what I want. I'm hoping the Minnesota job comes through, now that I've apparently blown the Microsoft one. Someday it will be mine... oh yes... it *will* be mine.

    At any rate, I'm probably not quitting (but I'm not ruling it out either).

  3. It sounds like no matter what things will be cool. :) Good to hear.

  4. Love the ultimatum!

    Been here before... it's really boring and leaves an unpleasant taste in the mouth.

    Ultimately if all they care about is when the thing is due out, rather than good coding practices and doing the right thing, you're going to have issues.

    But if they have a more long-term vision (maintainability into the future, minimising spaghetti, etc, etc) then it'll prolly go your way.

    Possibly telling you something you already know, but there you are... it's the end of the day and I'm going homeski!

  5. @Celes:
    "It sounds like no matter what things will be cool. :) Good to hear. "
    I think they are. It took me nearly a week to be able to be rational about it (and some heavy drinking in front of coworkers and managers) but I finally talked to my lead about it. While the reaction was underwhelming, he agreed with everything I said. I think the only thing I failed to convey is exactly how pissed off it made me, but I covered all the other important points.
    Thanks for your advice. It helped.

    "Ultimately if all they care about is when the thing is due out, rather than good coding practices and doing the right thing, you're going to have issues."
    True, but let's be honest: All business people are more concerned with when it gets out rather than how good the code is. I could go somewhere else, but I'll still have this problem there too. It's been everywhere I've worked so far. One hopes the team leads and dev managers can focus on maintainability, but ususally they're afraid for their jobs and become yes men. Not all though... I've worked for at least two who would push back even at the risk of their jobs. I think they're my two favorite bosses so far as well.

    "Possibly telling you something you already know, but there you are... it's the end of the day and I'm going homeski! "
    I'm not sure what you do for a living, but you seem to know geek pretty well. Are you a coder? I'm guessing not .NET :D