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...
if(fail condition} { die; } else { // do something }