Java, Ruby, Groovy, Python, C++, Perl, Smalltalk, who cares…

I had a conversation the other evening with our CEO (hi Roy) about Groovy and I made the heretical statement that I just don’t care about it. I spent the next couple of days thinking about why.
Now, before James Strachan and his codehaus minions come thundering down upon me I’d like to be able to explain myself.
I like the concept of Groovy, I like Perl, I’m not that keen on C++, I’ve never used Ruby or Python or Smalltalk, but I’ve investigated them. I use Java in my day to day development, and have done pretty much since Java came out and I defected from the C++ camp. So, I’m not really a language bigot, but I like how Java just doesn’t surprise me. It’s not perfect, but it solves 99% of my problems, and it does so fairly elegantly.
I used to care a lot about the language, and I used to think it was really important to be incredibly productive and know the language and all the new features as they became available. I still like to do this, but it’s for my own personal gratification.
Since joining a consultancy and working on customer sites, with all the vagaries of process, of maturity of development environments and of levels of politics I’ve rapidly decided that the environment is a first order determinant of how productive I can be, and not the programming language. Heck, the choice of using EJB or not generally doesn’t even rate as a factor when all the build is done via some busted-ass IDE running a JVM that was used by Noah to build the Ark, there isn’t source code control and there are meetings called on a daily basis to discuss the current status of the biscuit rations.
At this stage, giving me a “better language” would be akin to giving me Lance Armstrong’s bike and expecting me to finish first in next years Le Tour. It ain’t gonna happen boys and girls. (Lance, if you’re reading, I’d like your bike 😉 )
If I ever get to the “perfect” development environment (heck, I’d happily have an environment that doesn’t add time to the project) then, and only then I’ll start to worry about which language is the “best”. Until then my best option is to use Lean Development techniques and focus on reducing the waste in the environment and giving me and my team more time to actually develop code, regardless of the language.


12 thoughts on “Java, Ruby, Groovy, Python, C++, Perl, Smalltalk, who cares…

  1. Exaccers! Care factor too low captain! I think it behooves us to keep abreast of these things but I aint no michael shumacher in need of a faster ferrari. I need smaller leaner smarter development teams working for clients that have a clue. Then maybe I’ll have the luxury of using a new fandangled language 🙂

  2. Simon, you don’t get it. The clients have a clue. They want Java code because it will be around in the next few years. Groovy probably won’t.
    Play with these toy languages on your own time, but when it comes down to business, Java is good enough to get the job done. Not perfect, but good enough.

  3. That’s so stupid that it’s not even wrong: Java, Ruby, Groovy, Python, C , Perl, Smalltalk, who cares…

    Jon Eaves: “… I’ve rapidly decided that the environment is a first order determinant of how productive I can be, and not the programming language.”
    I always thought that would be true, and now that I’m in an environment designed to make it eas…

  4. I have to agree, Jon. Heck, I haven’t even got around to looking closely at the EJB 3.0 spec yet, and I know I’ll end up using that. Of course, that won’t be until WebLogic 10 is out, which is probably about 2 years away, so it’s not like I’m running low on time… 🙂

  5. I used to think deeply about the language I was using, now 98% of our technical conversations at work are not about the language, or its semantics, but about design, OO concepts and requirements. I think its a developer maturity thing, where your higher processes can turn to conceptual and structural problems rather than some syntax issue.

  6. Noone (if in fact that is your real name),
    If you read my post clearly (and I’m sure you did) you’d see that actually I was saying that I DON’T NEED GROOVY and that JAVA DOES JUST WHAT I NEED NOW.
    Ok. Maybe the clients that have a clue was a bit cheap but it was left over bile. For that I apologise. My point was not that clients don’t have a clue but that it is more important that they do than what new fandangled language we use.
    Until someone comes up with a problem that I can’t solve with standard Java, I see no need to use the latest and greatest AOP/Groovy/Whatever the flavour dejour is.

  7. Have to agree.
    Every so often I sit and think about how much cleaner my code would be if I had internal iterators, etc. And then I think about groovy. And then I think about nice. And then I wonder which would be more useful.
    And then I remember the following things:
    1] Neither of these languages provide a sufficiently useful development environment
    2] Java is expressive and safe enough for 90% of the code I write.
    3] The majority of java code that has ever been written, could be made cleaner just using existing constructs. We don’t need a new language to get cleaner code, we just need to raise our standards.

  8. I’m a language whore… I’ve had many, and I’ll use which ever one I’m most likely to get paid for using.
    Java does this for me the most at the moment. Sure others could, but Java keeps food on the table and the bills paid.
    I can pretty much guarantee that most of my customers (at management level anyway) won’t have considered an application written in Python, Groovy, or PHP. But Java…

  9. I think that your problem is that you think that all those languages (Groovy e.t.c.) are not complete, but ruby is. And my clients care about speed for daily aplications and ruby does that. When you need more libraries just jump to jruby. It’s hightime to consider speed or the next thing that market will lead us to is C#. And many from yoy would say C# is for windows (mono sucks anyway), but how many users do you know not having windows and how many not having JVM installed?

  10. The point is not Groovy or Ruby replaces Java, but using Groovy or Ruby simplifies many tasks you have to do in Java.
    Jon, it is well agreed that knowledge of the fundamentals and design is more important than language, but the need for better language is always there (and it really helps).

  11. What you are missing is that there are tasks for which java is good, and other for which a scripting language is required.
    A scripting is required when you boss comes in tells you: I want this for tomorrow. And “this” is a solution to a relatively complex task that requires no perfect handling of all excecptions but rather a quick and dirty solution that will last on the field two week before the full solution is ready.
    Well than Java simply doesn’t fit.

Comments are closed.