I don’t tend to define myself in terms of my work usually. Usually, I go in, work not particularly hard and then go home. I don’t do free overtime. I don’t rush things. I don’t bogged down in things. Occasionally I’ll spend all day working hard but usually I don’t. The result of this is that I usually produce high quality code that doesn’t blow up on production systems when you’re least expecting it, because I don’t find myself under pressure to submit code that I’m not confident in. I have one live project which the sys admins told me they needed to reboot because its uptime was too long. The projects I have a lot of input to tend to go smoothly because I have realistic expectations of what I can achieve and I try not to sabotage myself with optimistic assumptions. And also, importantly, my usual manager doesn’t pressure me to sabotage myself either.
This week is a bit of an exception. I have worked hard on things I don’t want to be working on, and I have achieved absolutely nothing. Literally not a single thing. It’s the worst of both worlds.
The summary is this:
I’ve been moved onto a doomed project of my boss’s (who is not my usual manager). It’s doomed because of bad decisions from management, i.e. him.
Bad technology choice is the biggest problem. We’re using something that’s not very mature, not very well supported and not very widely used. It’s OK to try things out sometimes, but there is an obvious alternative we could have used which is popular and widely used and would have been a far safer bet. I wasn’t involved in the choice here so I don’t know the details but from knowing my boss for the past 5 years I know he sometimes has an aversion to what he calls ‘fashion’ and homes in on unpopular things instead. You have to fight against him when you see him doing this, and even then it’s no guarantee you’ll get him to back off. We have another project I have occasional involvement with which is plagued by a dependency on a completely unsupported and abandoned library for which there wasn’t even a real requirement. I tried to get him to set it aside multiple times before we actually started using it and I eventually got back the justification “I know, but I want to see how it works”. Using technology that nobody else is using is the last thing you want when things go wrong because it means there’s no help easily available. And it will go wrong, because if nobody else is using it, it’s not very well tested.
The second problem is the fact that the developers for the past year were two student interns(!). We don’t actually have good developers at this company. We have me in the office, and everyone else is either a student intern or a contractor in eastern Europe. Why eastern Europe? Because they’re cheap. Why are they cheap? You know the answer to that. Occasionally we get developers who are actually on par with British developers, and then they leave within a year because it turns out they can earn more than £4 per hour. Amazing how economics works like that, it’s almost as if you get what you pay for. That’s my boss’s choice and I find it slightly embarrassing that we’re a software company which refuses to pay the going rate for software developers. It doesn’t really affect me usually; for the past few years I’ve been working on projects where I’m the main developer and I make sure quality is there. But the last few weeks have been a reminder that outside of my bubble this company is not very professional.
I’ve found it a bit annoying that he has acted as if I’m going to swan into the project and make it all work. That’s a form of pressure and it’s unreasonable to expect me to be able to do much quickly with a year’s worth of existing work containing a lot of decisions I wouldn’t have made and using technology I wouldn’t have chosen. Ensuring quality is fairly easy when you write the code yourself and have a project manager who values your opinions, but being handed a load of broken code and being told to make it work better is a different kettle of fish. And, crucially, my boss does not value my opinions. Or anyone’s. He doesn’t trust the people who work for him and always wants to be controlling the details – at least, when he’s interested in them. Not only do I find it really annoying to be essentially ignored, the other pressing concern he should have is that he’s not really benefiting from my skills on the project because he’s not giving me the freedom to use them.
I wasn’t too happy about it the first week, so last week I went in and made a conscious effort to be more positive. It has been a total failure. I ended up working harder than I should have and I literally did not impact the project in any way whatsoever. I could have stayed at home all week and it would have made no difference.
Monday and Tuesday were spent implementing some performance fixes which my boss wanted me to write. I had explained to him on at least three separate occasions that they would likely have no effect, but he blanked me every time because, well, I said he doesn’t trust people but it might be more accurate to say he trusts himself more than he trusts others so when he latches onto an idea and gets excited by it that’s the end of any kind of discussion. Result: waste of time – my code had no effect. He was completely shocked.
I managed to do some of my own investigation and found a real performance issue, so in the aftermath I managed to get him to focus on that instead. I spent the rest of the week trying to push that particular task into a background thread but after initially promising results I’ve hit some pretty major roadblocks due to obscurities in the technologies we’re using. It’s a total hack anyway to work around an architectural problem in a dependency so I shouldn’t be surprised. He was trying to get me to put my unready code in for testing on Thursday, but after working on it all day on Friday I’ve gone from thinking it might be ready on Monday to no longer being confident it’s even possible, and, even if it is, I’m less convinced it’s a good idea.
He won’t be happy, but, then again, if the project goes down in flames he might learn something.
So this next week will be a new approach. I tried working hard and I produced absolutely nothing useful while just getting frustrated about it. Next week I will go back to working not very hard.