He'd been fighting me on minor piddly little things for a while now. It's been issues that are borderline between "bug" and "unspecified behaviour". If it's unspecified behaviour, then we just have to do what makes sense for the user. He was refusing to fix stuff on principle. Uh, hello, it's NOT UP TO YOU to decide what the user needs to do. The user doesn't give a rat's ass about our engineering principles, they just want their data and to be able to get their work done. They were really minor, so I wasn't going to go running to someone every time.
He's also incredibly unprofessional in the usage of the Issue Tracking tool. We have a VPN connection and the database is hosted on our client's site. I'd go to verify bugs and they're still not fixed. Because the client can see everything, I was NOT going to get into a bug assignment fight with him. I go to talk to him about those. More than half the time, he "could not reproduce the problem." THEN WHY THE FUCK DID YOU MARK IT "FIXED"?!?!
I could maybe see if he marked it "Not Repro", but even then, our developers know that if you can't get it to happen on your machine, you DO NOT mark it "Not Repro". You ask the person who logged the bug to provide more info. The "Not Repro" state is when QA agrees the issue is no longer occuring. If I logged the bug, come over to my desk and I'll show you on my machine. He's within 10 feet from my desk.
I build directly from the source repository. Developers can have all kinds of things different depending on what they're working on, experimenting with, etc. I don't care what a developer says, it has to work on my machine. And our other fulltime developers are great about that sort of thing. They will not mark something as Fixed unless they check in unit tested changes specifically for the issue.
Sometime last week, he checked in unspec'ed sweeping FEATURE changes that affect the usage of the application. Without permission and without checking with anyone. I can understand that he wants to show initiative, but he was just not senior enough to do that and his vision of the project is so different from everybody else's that it was bound to cause problems if he did things on his own.
"It works mostly the way it did before with minor changes", he wrote in his after-the-fact notification e-mail. No, it most fucking certainly does not. The basic operations ARE MISSING, you meathead.
You could tell that his design was made for a technical person, not a Production Layout Artist. I met his wife at the Christmas Party and I happen to know that she is a layout editor, so I can only presume he ran his changes by her first for an end user's perspective. But his wife doesn't represent the entire population of end users. I'm a wife myself and I can guarantee you that any idea my husband runs by me will look at least a notch or two better than it actually is. He can take the time to sit with me to make sure I understand the nuances of how it works. That's the reality of it.
We're also in a Bug Fix phase right now. We are not implementing new features. He lied to someone outside of the project that we were doing both bug fixes and new implementation. The advice from that outside person was to just take initiative and implement it(!!!)
First of all, that person is NOT on the project and has no clue what's going on. Secondly, even if that outside person were on the project, he wouldn't have the authority to approve the scope of the changes Contractor Boy was about to make. And, thirdly, I doubt that outside person had any inkling that he was about to change SO MUCH. He was probably thinking it was a little tweak.
The Dev. Lead told him to back out all his changes. But that meant that I had to waste time rerunning the feature tests for the mods that he decided to muck with. Thanks a lot, fuckbag.
YX, I would like to recommend that we DO NOT hire ______ _________ back if we need another developer for the N project or any other project. I found him argumentative and unprofessional. He argued with me on very minor things. He refused to fix bugs saying that it was not spec'ed properly (examples: #1013, #1111). I concede that the specification is lacking for this project, but from a user's perspective, there was no way that the behaviour I logged makes any sense. Regarding #1013 (the Template "Last Used Date" issue), I asked The Client about the behaviour specifically in a conference call. ____ still refused to fix it "on principle". He also made a change to the ____ ______ Tool that was completely unapproved and completely different from the original behaviour as well as vastly different from _____. He didn't tell anyone what he was doing and only announced it once it was finished. The most basic operations in his "improvement" were completely missing: I could not create or break a link. His changes were removed from Source Safe, but this meant that QA had to waste time doing regression testing on the features that his code has touched. When I go to verify his bugs, sometimes the problem will still be there. I understand that this happens sometimes in development, but when I talked to him directly about it, a few times he said he could not reproduce the scenario. But he marked it "Fixed" anyway(!). I asked him why he marked it fixed instead of asking me to help him reproduce the symptoms and he did not answer me. In the end, if his technical ability outweighs his unprofessional attitudes, I will accept the decision to bring him back and work around it to the best of my ability. But I wanted to speak up and let you know what I thought. Thanks, -- J.