"It works on my machine" - Please Comment!
Ok, a friend of mine has had a lot of bad experiences with developers. When we first became friends, it was because she couldn't believe that I was a programmer and not a total a33hole. The first company she worked at she worked in support and their software left something to be desired. But there was total stratification there and she was told not to talk to the programmers under any circumstances - as a matter of fact, this person was told that she was not even to say “hello” to any of the developers in passing.
Before I continue, let me point out a few things. This girl graduated 2nd in her high school class in a class of over 1,000 people. She received a sizable scholarship to one of the most prestigious universities in the South and graduate with honors. I worked with her for about 5 months and found her not only really easy to work with, but much smarter than just about any of my fellow programmers. For instance, we had a lot of manual file moving and had to ensure that certain directories stayed in Sync on the machine that was used for deployment. Instead of doing this crap manually - which our Senior Programmer did when he handled updates, she wrote a batch file to handle the move to make sure that she didn't forget anything.
As a tester (which she worked as when I got there), she came back with great bug reports complete with screen shots and very detailed descriptions of how to duplicate the bug. The other testers used to say things like “It doesn't work” or “The tab stops are wrong”. She'd send stuff like “Tab stops 4,5, 6, 7 are out of sequence on Form1. When you tab from tbSocialSecurityNumber (3), you immediately go to tbCity (8) obviously indicating that 8 is actually 4...”
When I first got there, the Senior developer and I had some bad interactions. He told me how stupid OOP was and database normalization was because they both killed performance. He graduated from college in 1978 (I was still breast feeding back then) and although everyone talked about how smart he was, I never saw it. Anyway, after this girl and I became friends, she asked me what I thought about him. I told her that he was a primadona, which was fine, except for the fact that his stuff SUCKED! If your mouth writes checks your a33 can't cash, I'm not impressed - I don't care what Title you have or what you did in the past. She defended him but said that she knew he could be a jerk. Since I'm not Southern, Jerk isn't in my vocabulary. D*****ad, B**ch, stuff like that is my default response. So as we got to talking, she started telling me some of her 'ideas' about how our stuff should work.
This is 100% true as much BS as it sounds and it was in 2001! If you needed to undo a transaction in one of our most popular applications, you had to change the system clock time back to when it 'should have happened' , rerun another transaction and then reset your clock back. If you forgot to change it back, everything you did until you changed it would be screwed up.
Another one of his brilliant apps made users have to check for Hex codes. Unskilled office clerks at small town government offices had to go into notepad and read back Hex to the support people. He'd simply tell the clerks, “Are there Fox Foxes?” What are the chances that some non computer science/math major can read hex on the fly? What are the chances that most programmers can read hex on the fly? When he had to explain it to them, he'd go back and bitch about how “stupid” everyone was because they didn't like resetting the system clock or decipher hex on the fly. Mind you this is the same guy that didn't believe in relational databases or OOP because joins have 'performance issues'. This was in 2001 btw. I went to school back in 95 and even in old school C++, If I wrote a program that made the Professor change the system clock manually - it wouldn't be accepted. They wouldn't even waste their time failing me. Now here I am in 2001, at a company selling expensive software, that requires lay people to change the system clock in order to undo a transaction and read hex values to people. This a-hole was the king of “It works on my machine“
--------------------------------------------------
That's where I learned to hate the phrase “It works on my machine”. At the end of Traffic, David Ayela (Steven Bauer) asks Arnie Metzger (Dennis Quaid), “Do you think there's a difference between a reason and an excuse? Because I don't Arnie” That's what I think of every time I hear anyone pulling the “It works on my machine”.
My friend works at a different company, but they also have a lot of drama. They have a developer there that is the king of “It works on my machine”
I'd be fired if I pulled some crap like that. If I wrote it, my responsibility doesn't end until it's on the users machine, running and they LIKE IT! Until they sign off on it. So if I pulled some “It works on my machine” type nonsense, the client wouldn't much care because we don't get paid until that signoff. But even if our incentive system wasn't based on signoffs, there's this thing called “Pride in my work”
To me, telling a customer, or a support person “It works on my machine” is pretty much the same as saying “It sucks to be you”. Except I CAUSED THE PROBLEM. It's my code.
Every job is a self-portrait of the person who does it Autograph your work with excellence.
So what does “It works on my machine” show the world? “I'm lazy, incompetent, apathetic, overpaid and actually should be unemployed.”
My friend called me the other day frustrated because she's responsible for making sure that stuff works. Old boy pulled about every variation “You must be doing something wrong because it works on my machine” and after she wasted about 6 hours Proving it wasn't anythign she or the customer was doing, he still wouldn't own up to the problem.
Before you level an accusation, which “It works on my machine” does implicitly (seriously, you should include the dependent clause “so it must be something you or one of the other dumb asses is doing”), you should make damned sure that it's not your fault.
I remember Raymond Chen's Blow the dust out of the connector which talks about how to handle customers. Raymond is the man. He has 1000000000000000000000000000 more accomplishments and reason to be a primadonna than either of the two aforementioned clowns. Yet he's so commited to professionalism that he'd go out of his way to keep a customer from feeling dumb. That's why he's Raymond Chen and that's one of the many reasons I admire him.
----------
If you ever use “It works on my machine” and don't fix the problem you created, I think you should automatically do the following:
Forfeit any right you have to complain about your job moving to a contractor, intern or another country.
Acknowledge that in any other profession you'd be fired.
“I just paid you two thousand dollars to fix my transmission. I got one block and it caught on fire”
“It worked in my garage, it worked when you left. What did you do wrong?”
Attach the following:
“I use lame excuses like this because I honestly don't know how to make the code i wrote, work. I'm incompetent and lazy and an embarassment to my profession. Please, Please, Please understand it's me, not you. You're not dumb, I am. You're not the one with the problem, I am”
---------------------------------------------------------
Anyone care to comment? My friend is definitely going to read this because I'm sending her the link. Let's show her most of us bust our asses to write the best stuff we can. The few of 'them' in our profession don't represent the rest of us, and I personally detest this mentality. I think 95% of my peers do as well.