So, back in college we were given an assignment to create a day planner program for a company, a list of things it needed to be able to do, and then required to pitch it to the class as if they were the "customer". It was a rather boringly repetitive class as groups got up and went through the motions until one of the final groups got up and went balls to the wall presenting quite literally the swiss army knife of day planners; it had features on top of features on top of features. They'd clearly put a lot of work into it in an effort to shock and awe their way to an A. This strategy was going quite well until the question and answer section where the teacher had them take a question from each person in the class as if they were the client inquiring about their device and they got to me.
The reason for that is that I tend to be just a tad bit of an observant analytical asshole when left to my own devices and thus my question was quite simply this: "You seem to have spent a lot of development time on this product, and these features you've demonstrated seem useful, but… does it actually do any of the things we asked you to make it do?"
Yup, in their effort to come up with a whole bunch of useless perks they'd delivered a product that did everything but what it actually needed to do by design.
I'm bringing this wonderful memory up because I'm currently on loan to a project at work that involves dealing with a programmer who repeatedly takes the position that his program is better because it does something we don't need it to do and our demands that it work the way we actually need it to work are clearly wrongheaded… every… single… fucking… time…
There are a lot of things I could blame for that but ultimately it comes down to this: the programmer is running solo, treats this thing like it is his baby and can't take any criticism of his work at all. Every technical issue is someone else's fault; which it sometimes is but mostly isn't. Every request for change has some vital reason it can't be done until management intervenes and then it somehow happens. Every glitch or incorrect behaviour is working correctly within his view of how the tool should work until you write a twelve page novella on why it's actually extremely important that it doesn't do it that way. Oh, except for the times where you actually sit down, explain how to do something correctly multiple times, point out where the solution is, and then he still can't be arsed to do it until you finally intervene in the middle of a conference call and explicitly walk his ass through how to properly code the program so it works for the 4th god damned time.
That's right; here I thought I'd left the programming world behind forever yet now I'm stuck doing QA, psuedo-coding, and, ultimately, handing over the solution code to be inserted in real time in front of 10 other people all to spackle over the reality that someone who likely gets paid 3-4 times what I do is functionally incompetent at actually delivering solutions while working for an external IT contracting company that waives around the word "Solutions" in their branding all the fucking time.
Fuck my life.