Needless to say, Pete was fired after Dick told the upper management that he saw him speaking with FooNorsk's tie guys and telling lies about Java and all that.
Another real-life inspired story, folks!
Also... why didn't Pete just say (right in front of these potential clients):
"Dick, shut up... we DO use Java, all the fucking time, and we get great stuff done with it... YOU ARE THE ONLY ONE THAT DISAGREES AND EVERYONE ELSE IN THE OFFICE THINKS YOU'RE A IDIOT BECAUSE OF IT".
That way, you win the contract, and you become Dicks supervisor.
It's good, but maybe a little fix:
Pete: "He's joking, of course. Dick knows that you have done extensive research and concluded on Java as your chosen technology. We have a number of Java projects in the past and the only issues we came across were implementing with more experimental, non-Java procedures."
Still not perfect, because this is likely a universe where disagreeing with the boss is bad for your career. Dick will no doubt be cross, but will he dare to chase them away right then and there? If so, how? "He's joking about me joking." Smooth. One way or another Pete can theoretically argue the gain/loss of the contract as being attributable to the presence/absence of java.
Of course, I'm sure Dick can find some complication to throw in there to lose the contract AND make the result inconclusive. He seems to be a politician, after all.
Personally I'd have followed up Dick's comment with... We do use a lot of Java as discussed earlier, but we like to use some C++ behind the scenes for performance-sensitive tasks. That would possibly appease both Dick and the prospective client.
Exactly. Because public infighting among senior employees on top of bad tact and ignorant generalizations is the ideal way to win over potential customers.
The contract was already in a state of "being lost" because Dick was ... a dick. They had a marginal chance to win it back, by IMMEDIATELY pointing out that this guy did not speak for the company, and would not be working with that client because of his attitude. Possibly they couldn't have clawed it back, but it was already going out of the door anyway, so its worth a punt.
Instead, they just let it slide, and lost the contract, because no-one was willing to stand up to the bullying Dick, and his abject idiocy. TRWTF is that Dick hasn't been fired already, for just being completely incompetent.
Java's syntax is so clean, it's aseptic. It makes up for this by requiring so much boilerplate to accomplish any non-trivial task that one wonders if javac thinks all developers are retarded. The workaround is to use an IDE which will write this boilerplate for you. Preferred ones are NetBeans--which will make you wonder if its developers have ever used an IDE before--and Eclipse, which will rape your memory manager and also make you wonder if its developers have ever used an IDE before. Using an IDE will also acquaint you with the Java GUI development standards: 1) no single thing should look like any other single thing from the host OS; 2) a dialog that opens in less than 5 seconds is a showstopping bug; 3) there is no rule 3.
Its type system combines the ease and elegance of Algol 68 with the safety of C void pointers. Strict typing guarantees that every single type must explicitly define its relationship to every single type it is a subtype of. A dearth of metaprogramming features ensures this specificity is in vain. Generics "fixed" this by making type safety a function of a library's license agreement; I'm not sure even Richard Stallman could dream up something so asinine.
Hotspot's garbage collector goes on strike more often than those of NYC. GC means that managing memory is no longer a requirement of the developer; instead it is the responsibility of the user. Trying to understand when or why the GC runs is like answering a Zen koan--whatever you declare is likely to be both right and wrong at the same time.
Not sure if troll, but in any case, they did have a whole war about it after they told them where to stick their taxes. So if you can get enough people to fight a war for you, you can absolutely declare your independence and celebrate the date every year.
During the sales post-mortem:
Sales rep: Everything was going well, until Dick opened his mouth and told the client we don't do Java! That is what lost us the contract.
Sales Manager: Dick, the supervisor for the order management system?
Sales rep: That's the one. I do not want him in another one of my sales meetings, ever!
Sales manager: Don't worry; he won't be. Let me deal with Dick.
The next day, Dick is called into the office of the VP of Operations where the Sales Manager and the HR manager are also present. Let's see, 2 weeks paid notice, plus one day for each year worked amounts to about 1 month's pay in a lump sum, along with some paperwork.
Addendum (2013-07-04 11:01):
Congratulations on the promotion Peter.
Are you saying that, if you were evaluating potential suppliers and that exchange happened in front of you, they'd be top of your list?
No I'm saying that, if someone like Dick had just put himself (and by extension his company) bottom of the list by being a dick, and if Pete subsequently served Dick a verbal hammering because of that specific dickishness, I would be more lenient on the company because at least Pete knows what he's talking about, and at least someone is prepared to put the incompetent fool in his place.
Not top of the list, but the car crash that is Dick will have been at least partially offset by liking Pete.
Assuming other factors are good, and I like the company (other than Dick), then I'd possibly hire them with a contract that stipulate that Dick mustn't be allowed near the project.
Oh, so the JGCCC (Java Garbarge Collector Correctional Center) actually helped? That's good to hear.
Still, Java is inferiour to C++, it's as clear as day.
Ok... I realise that you are just playing along with a joke, but just in case the reader doesn't get that, lets get some facts on the table:
Yes, if you benchmark any small piece of code, C++ will normally be slightly faster. This seems obvious, because, well, the JVM is written in C++.
This is exacerbated by the fact that Java has some overhead on startup, because the virtual machine must be started. However, most businesses deal with long-lived processes.
BUT, BUT, But....:
Java has a JIT (Just In Time) compiler, which allows the JVM to watch how the code is actually being used, and optimize and recompile code as necessary. C++ can only be compiled for one processor architecture and one usage pattern (the pattern proscribed by the programmer).
Garbage collectors are much maligned, but any sizeable application will need one, and Java's garbage collection is absolutely awesome compared to anything you could try to create in a given C++ project.
Business applications much more simple to implement in Java than in C++. Do you really need your developers to be worrying about pointers? No, you want them to spend their time writing and fixing business logic and putting buttons on screens. If you really, really need the speed of C++ in some specific area, you can use C++ for that part, and Java for the rest. (I don't know anybody who has needed to do this).
Points 3. 4. and 5. above mean that a given project with a given budget and given programming expertise creating a business server application is very likely to be faster when written in Java. And besides, the kinds of performance problems people encounter are rarely anything to do with the language used.
If you have a whole bunch of truly expert programmers, and you are prepared to spend years optimising your codebase for performance, perhaps even rewriting the whole thing once or twice, then you want to use C++. Otherwise....
Java seems to make programmers retarded, or the language is terrible, or both. I don't program in it, but I've had to deploy enough enterprise applications that when I see the word "Java" it means to me "Requires 64 GB RAM / Fastest SSD known to man / multiple octo-core CPUs / forget about it being usable on a VM outside of a tiny lab + enjoy restarting it every few weeks".
Now, when I'm bored at home, I play minecraft, which you all know is written in Java. That seems relatively fast, if unstable. Maybe the only way to get fast code out of Java is to hire games programmers?
Beats me, I just sysadmin for a living. :P I'm sure you've all had your own experiences with Java that say otherwise.
The main problem that I have with Java is that for some reason the users of Java seem to think that it is a good idea to create 800 classes for every problem. OOP is great but it is not the only design pattern/philosophy in the book.
The result is not Spaghetti code but a spaghetti architecture.
Well for many yeas now x64 and x86 architecture have been.....*cough*virtualmachine*cough*
(Long gone are the days when the transistors of the ALU directly switched based on bit patterns of the op codes. Every mainstream modern machine is a virtual API to an internal RISC processor....)
It comes and it goes. The 8086 was microcoded: the 80186 was 10 times faster at the same clock speed because the microcode had been reduced to silicon. The 80286 was then 2 times faster because the clock speed was increased.
Some of every mainstream modern machine is microcoded. Particularly legacy instructions that are not used anymore.
C++ can only be compiled for one processor architecture and one usage pattern (the pattern proscribed by the programmer).
Be careful of the difference between "proscribed" and "prescribed". In the context given, "proscribed" means "forbidden" and "prescribed" means "mandated". Given that, and ignoring the occasional pinheadedness of compilers, I'd guess you probably meant "prescribed...
And don't forget that the Java compiler builds code for one architecture - the JVM. C++ compilers can be made that build code for any architecture (caveat: architectures like the CDC Cybers that have 6-bit character sets (CDC Display Code) aren't compatible with C++, partly because they don't have lower case (makes it hard to even write C++ code), partly because char must be at least 8 bits), although they normally only build for one at a time.