So I quit my job. That was a relatively big change for me, after spending 3 years sat on the same chair working with the same team. But I felt it was time for a change. The new job is quite a bit different from the old one. One rather obvious difference is the programming language .. I've gone back to my proverbial roots and am now churning out PHP on a daily basis. And because I'm such a programming nut, I'm working on some after-hours Ruby projects as well.
PHP and Ruby are both obviously very different from Java - and very different from each other. Sometimes in good ways, sometimes in bad ways. Syntax wise, PHP and Java are very similar. The dollar sign on my keyboard is definitely seeing a lot more action now, but other than that not many dramatic finger changes are required. PHP doesn't have have a bunch of things I like, like final method arguments, multit-hreading or a half decent collection of standard classes. What it does have is excellent documentation and easy & interesting meta-programming. That, and it's obviously much more tailored for the web than Java. For the first time in 3 years I *don't* actually need a whole armada of frameworks just to get something simple done. Still .. I miss my (Concurrent)HashMap, ArrayList, and most importantly my trusted BigDecimal.
And then there's Ruby .. Even after a couple of months of Ruby, I have very mixed feelings about it. The documentation sucks. Don't argue with me, it really does suck big fucking donkey balls. RDoc (especially online) is to JavaDoc what Spam is to nice and tasty Prosciutto. Then there's the lack of backwards compatibility (granted, Java may take this a bit too far, but still).
And then ... there's the syntax. This is where my feelings are mixed, rather than plain negative. There's too much choice. You can mix and match a bunch of styles, do..end, curly brackets, semicolons or no semicolons, method arguments with or without braces, and the list probably goes on. This leads to code that's hard to read (and thus hard to maintain), especially when different people stick to different styles. On the other hand, it also leads to nice syntactic sugar. Clever use of methods can make it look like you're defining your own keywords, which is very nice for creating your own DSLs. It's also rather nice to have Operator Overloading, and being able to treat everything like an object also has its benefits.
Still .. my feelings remain mixed. And in spite of everything, I feel like Java is still the only choice for Serious work. Not only because of the amazing documentation, the excellent standard library or even the massive community, but also for the amazing JVM, its security model and its thriving ecosystem.
Java ain't dead, folks.