Tuesday 24 March 2009

How to Lose Staff and Influence People

So, yesterday was a bit of a mixed bag. I finally got to put the thing I've been working on into some hardware so I can see what it looks like in something approaching the box it should be in (rather than seeing it on my development machine). It was a glorious moment. In the space of about a month, a very small team of developers have turned around something that outperforms the application it's supposed to replace by so much that I just sat back with a massive, massive grin on my face. It just works, in every way. And on top of that, the code base is almost 1/10th the size of the original. And on top of that it's also been structured such that if you want to add functionality or change the look and feel, you have next to no code to write; it'll just load up whatever extra stuff you generate and incorporate it into itself (of course, no one but the current development team know the extent of the awesome in that respect). Even though I do say so myself, it's a good solution. It's been designed. We spent a lot of time and effort making sure that it does exactly what it needs to, and doesn't rely on lots of special cases and conditional hacks.

And so life is good. This, after all, is why I'm an engineer - it's only partly for the money (though that's sort of important). As I've observed a couple of times, engineering stuff is 90% miserable, difficult grind. But the payoff when you get something working right is worth all the pain. I tried to explain to my wife just how cool what we've done is, and I'm sure she thought I'd lost the plot somewhat: I get excited about it because the whole thing is elegant, and hangs together with the right-ness of something that has been designed and implemented well. I'm not talking about an intellectual analysis here - sometimes, things just feel right. And the more you delve into the design, and look at the details, and use it, the more you feel that. It's wonderful. It's why I do my job. And it's why I get so very pissed off when people force me to do my job wrong, or interfere when things are out of the hands of the designers and cark it up, or just don't get it, and in doing so undo all the right-ness.

Which brings me to the second half of the day. Now, I know I get a bit... how to put it... in your face with people at work sometimes. And because I know it, I actively try not to be in a position that I have to deal with people doing stupid things. And when I do have to, I run things past colleagues who I trust before I open my big mouth. It means I generally don't send emails to people when they've done something stupid pointing out they've done something stupid anymore, but instead send long considered messages about how it "might be even better" if we did x. One side effect of this is that it now takes me in excess of quarter of an hour to send even the simplest email to anyone outside my immediate team. It seems my precautions are wasted, since even after spending that amount of time writing my mail, even after getting it vetted by third parties, even when my direct superior admits he can't see anything wrong with what I've said, I still get a warning for writing aggressive emails. And what am I getting uptight (allegedly) about? Well. Let's see. The company I work for has a spectacular track record of making frankly bizarre arbitrary design and production decisions. I'd go into details, but I don't really feel I have the freedom to do so, but what it comes down to is that the organisation is incapable of either admitting (and learning from) mistakes, and has an obsession with meddling. Not a thing seems to get done without someone interfering from a position of complete ignorance. When it gets to the point that black box replacement components, which the design company state are direct replacements but with lifespan and reliability improvements, are vetoed by a technician with no consultation at all with our internal design team, you have to wonder what the point of having a design team is. I mean, I don't want to go to overboard on how amazing we are, but some of us have spent nearly ten years just training to do our jobs, before you even look at our industrial experience. Why hire people like that if you're just going to ignore them?

And I'm not even going to begin to rant about how let down I feel by the rest of the company. Apart from to state this: It does not take three months to set up an agreement with a distributor. If it does, then your commercial team need quietly taking out the back and shooting.

So, in summary: a good way to break the spirit of your staff, even when they can take pride in their own work, is to get them to the position where they feel let down by every other aspect of the company, cut them out of all communication that touches on their area of expertise as soon as any individuals outside their immediate team need to be involved, arbitrarily assume that your design professionals don't understand what they're designing and overrule their decisions, and if anyone tries to point out any cock ups, tell them to shut up. Oh, and for those of you that advocate the gently gently style of pointing out problems: Tried that. For months. As have my direct colleagues. It just gets ignored.

Well, that's me at my wits end. Anyone need a software engineer?

No comments: