"Java beats the crap out of .NET any time" I hear a colleague scream across the dinner table to a group of arrogant C# Jedis. Interesting. Let's have a closer look behind the scenes. Have a bit of patience and follow me while we explore some of my company's project management folders together:
Wow, I think by myself, maybe Java is the hot productive technology of the future! Let's have a look at the time tables for some of the Java projects at my company, then! Alright, what do we have here, a relatively simple web application for example. Hm, deadline slipped six times already, stability problems, 300% over budget, cannot get simple things to work properly, over 10000 lines of code in utility classes alone just to get a few bytes from a database? I actually took time to compare projects like these with equivalent PHP projects, and not a single one of them had those problems. In fact, the PHP projects produced consistently better solutions faster with more features.
And what do we have here? Novell Portal Services - "the industrial grade portal solution for all your enterprise needs"? Sounds solid, all right. Let's open the project management folder to have a closer look. I see: stability problems, deadline was 18 MONTHS ago, 200% over budget, thousands of lines of bad code to get plugins to work but failed anyway, total database crashes in the staging area, severe security problems - and all that for a portal project with almost no more features than a static website? Hm.
Ahh, there, an Oracle project! The leading database company, mind you. Says right on the box that it saves you tons of money in development and operations! OK, just why are the developers still trying to get this project to work, 3 months after the project should have gone gold? I asked them. Problems with reading data from BLOBs, setup problems required specialists to constantly tweak the config, features hard to use. There is a team working on a MySQL solution right next door, I asked them, and they just laughed at those problems! They were happily implementing features, while the Oracle team was still trying to figure out how to even get basic things done.
But wait! PHP is not a real programming language. MySQL is not a real database, right? I just read the MySQL tweaking article here at K5 and the comments were all like "fuck MySQL, use Oracle/PostgreSQL". Righteous bashing. Maybe those are not "real" technologies, but if I can actually get the job done with them, I'd use them regardless of their image problems. OK, let's close the corporate project folder now and get some questions out there that just beg to be answered.
Why is it so freaking hard to just create working software with "Enterprise Solutions"? I'm beginning to suspect that maybe the main reason why enterprise grade software is so expensive is not because of features and stability (the gods know those are marketing myths anyway) but because actually implementing stuff with it is nearly impossible.
Why is the industry willingly wasting so much money? The conspiracy theorist in me begins to wonder if there is a purpose to it, a purpose that comes from keeping prices high, dominating people and technology by putting software out there that requires large training programs so developers can get basic things to work. I mean, look at those companies behind the examples above: Sun, Novell, Oracle. Don't they have something to gain from making their solutions hard and slow to use?
Why are most developers part of this? There are many reasons for this. First, no one gets fire for using IBM^H^H^H Java. Second, we're being fed these technologies from the start (school, uni). Also, our managers love those consultant people who tell them to migrate to ...a Novell-only shop, for example. And peer pressure constantly reminds us that there is something very wrong with us if we're beginning to wonder why our company purchased that ridiculous ATG server in the first place.
I think the industry needs to wake up. Is Java the wrong tool for everything? No, sure not, but there is a whole buttload of things you better don't touch with Java. Yes, technologies like PHP and MySQL lend themselves to being used even by lesser programmer-wannabe kids - but maybe it's time to think about why 90% of the professional world denies itself the benefits in productivity that the hobby sector has been enjoying for years now.
I know that many developers feel the same way about those over-designed solutions that do nothing but eat time and money and keep the development costs up. Ask yourself why you have that "wow-cool" moment when you finally succeeded in serializing and unserializing an object in C# when the PHP geek next to you simply did it with one lousy method call and moved on to other things 3 hours ago!
WAKE UP - WAKE UP - WAKE UP
(to the tune of Rage Against the Machine)
And yes, I know that this is an invitation to righteous flamewars. As long as it reaches one other geek our there who feels the same way, this was worth it.