June 22, 2006

Welcome back, it's shit

Welcome back - it's been a while, but I have felt like writing a bit again recently. Work sucks. It's interesting, extends me, and I'm free to make choices and decisions about how I develop, and sometimes even what I develop.

But it still sucks.

The reason is the structure of the team I work in. Everyone has a say about everything, which is fine in a team of three, but even just a couple more additions mean that it's getting impossible to do anything with any visibility, because everyone's entitled to a say, which means everyone has to listen to everyone else and make sure they understand they've been listened, which means it's impossible to move because everyone is tethered to everyone else. There's huge inertia as a result, especially as one guy, who's considered a senior member, has completely failed to buy in to a modular site architecture (he prefers to develop everything with an ad-hoc mixture of SQL, string concatenation and bizarre flattened arrays in some weird redux of C pointer arithmetic) and disputes nearly everything, while the junior team member who joined in July last year, fresh from a course in Internet Technology appears to know precisely fuck all about anything. Have a look at that page - it looks like it covers material appropriate to a 3 month correspondence course with a couple of weekends, but even that should yield a better understanding of, christ, anything than this poor fuck has. For the techies out there, he recently came unstuck when a page was dying with 5 warnings:

Warning: Missing argument 2 for HTML_QuickForm_Renderer_Array_Smarty() in /data1/xyzbolt/blah blah blah line 93
Warning: Missing argument 2 for HTML_QuickForm_Renderer_Array_Smarty() in /data1/xyzbolt/blah blah blah line 93
Warning: Missing argument 2 for HTML_QuickForm_Renderer_Array_Smarty() in /data1/xyzbolt/blah blah blah line 93
Warning: Missing argument 2 for HTML_QuickForm_Renderer_Array_Smarty() in /data1/xyzbolt/blah blah blah line 93
Warning: Missing argument 2 for HTML_QuickForm_Renderer_Array_Smarty() in /data1/xyzbolt/blah blah blah line 93

Too many warnings, quitting page.

He was stumped, he said, and had no idea how to fix it. How many arguments did that function require? How many was he passing in? - I asked. He had no idea; he hadn't checked! In fact, he didn't even show signs of having read the errors. Sadly, this wasn't a beginner's mistake. In fact, I'm pretty sure that even a mediocre beginner would look at the screen and try to work out what went wrong. He's just a stupid, lazy dipshit. He never ever thinks beyong the first solution he comes up with, which more often than not means he spams the codebase with his horrible hacks, like recently when he added the same feature to several classes by referencing an implementation detail in their shared parent. Without the encapsulation-busting incompetence of it, would that not on its own be enough to make a halfway-decent coder think, hmmm, maybe I wouldn't have to copy and paste this code again if I put it in the parent...

And Jesus wept. Or to put it more accurately, my blood pressure rose and I fixed it, again, because apparently as his mentor I'm not allowed to fire him, or to shame him publically - although I have done that to exactly zero effect - but instead I'm supposed to calmly and rationally explain how he could improve. Well here's how - he could improve by sticking pencils in his fucking eyes and scrawling all over his notebook in the blood. He'd likely as not come up with better code that way. More to the point, I'd be happier.

I leave you with a conversation I had with a colleague who has just quit - always a bad sign...

(15:36:53) Oxygenik: I'm getting itchy myself
(15:37:12) Squidgirl!: Well I don't think you would have a problem
(15:38:03) Squidgirl!: I am not sure what salary you are on, but once my CV was out there, I was really suprised how much more I could get assuming I did PHP web related work.
(15:38:28) Oxygenik: We'll see come the promotions next month
(15:38:54) Squidgirl!: I hope you get it, and I will be shocked if you don't
(15:39:01) Squidgirl!: noone in this team deserves it more
(15:39:15) Oxygenik: I'll get something, but there had better be a significant rise because having to mentor (read: clean up after) that dumb sack of shit is really taking its toll
(15:39:28) Squidgirl!: I bet
(15:40:15) Oxygenik: It's frustrating that he's still employed here - this is S0NY for god's sake, we shouldn't have to employ useless tossers who can't follow simple rules when you write them down
(15:40:47) Oxygenik: I simply don't get why he hasn't been fired
(15:41:28) Squidgirl!: It's too hard to fire anyone
(15:41:30) Oxygenik: every checkin needs correcting, and not for things like spacing or naming conventions but for basic basic programming mistakes
(15:41:40) Oxygenik: but I don't know that any remedial action has been taken
(15:42:18) Oxygenik: He should have had a programme to follow to get up to speed such that (after 11 months) he's not still being told how to do what he's supposed to do
(15:42:51) Oxygenik: but in fact he produces code like this:
if(fail condition} {
} else {
 // do something
(15:42:59) Oxygenik: it's already died!
(15:43:06) Squidgirl!: i'm laughing
(15:43:28) Oxygenik: he just acts like a mindless robot
(15:43:52) Oxygenik: doing the first thing that comes in to his dense frigging cheese of a head over and over and over again
(15:44:13) Oxygenik: I could take a 24 year old out of a crack den and teach him to code better than that in 11 months
(15:45:34) Oxygenik: He's got about 3 tools in his toolbox, and isn't even bright enough to know how many he's missing
(15:45:54) Oxygenik: it's depressing, and I feel devalued for being on the same team
(15:47:03) Squidgirl!: Totally understand
(15:47:34) Squidgirl!: Plus its a waste of resources, having someon senior like you trying to teach him
(15:48:36) Oxygenik: Sarah keeps saying, "He's just out of university, he can't be expected to know everything you do," but the fact is, he's just out of university, I shouldn't have to teach him basic programming
(15:48:56) Oxygenik: the real problem is he has absolutely no personal ambition
(15:49:03) Oxygenik: not interested in getting better at anything
(15:49:24) Oxygenik: not interested in pushing himself to solve anything well
(15:49:37) Oxygenik: not capable of spotting emerging patterns
(15:49:44) Oxygenik: not capable of recognising existing patterns
(15:49:57) Squidgirl!: all key for a programmer
(15:50:13) Oxygenik: I believe I said it best originally: dumb sack of shit, with apologies to people who can't speak and sacks of shit
(15:51:25) Squidgirl!: Sounds like you are very frustrated, I'm out tonight but how about a beer or two on me tomorrow?
Posted by Oxygenik at 6:47 PM