Thursday, April 17, 2008

Java vs. C(++) vs. Lisp (?) vs. [Put your geek addiction here]

First of all, you should know that I get paid for putting Java code together and trying to get into production. Those of you that have a similar job need no further explanation.

I don't really think Java is neither the best nor the worst thing out there, its just a fair language with a lot of effort, money, marketing and open source code under the hood.

So, what is this post for? You see, where I work we _try_ to follow Evans' DDD most of the time, and there is this guy who joined our team a couple of months ago... he's a nice person, but he also is what you would expect to find if you crack open an Oracle DB: He loves stored procedures, JDBC (no ORM trash), hates overpatternized (?wtf) business code... you get the picture. So you could imagine, Banks here in Argentina have been using stored-procedure-only access to the DB to provide extra performance and security, Mainframe is still kicking most J2EE apps asses and so; explaining why we should use DDD to this guy wasn't a task for the weak.

After a while, all the talking with this gut got me thinking about a topic I had buried some time ago, the same thing that made me go and try Rails and friends: How come the Mainframe is still the best darn thing out there to do Client-Server apps? Most Java Enterprise editions are development/deployment/configuration nightmares, so I usually fantasize about something simpler.

From a development point of view, you could have hundreds of Junior devs coding EJB2 interfaces with well defined DTOs and everyone should be happy if the specs are good enough, you'll end up with a big, well priced, working product. This scenario is considered BAD, EVIL, NASTY. Everyone wants to code Spring supported DDD code (xml/annotations nightmare?). I also know small teams coding in Smalltalk (niiiice, though not nice enough :(). The thing is that it is hard to get complex -in some ways- with objects, so this guy I was talking about wants to do as much as he can inside the DB and then having just one layer that does a bit of business logic and puts everything in the response. I don't really like it, but I can't say I don't!! It rings so many bells, including Paul Graham's! The guy would even hack lisp code in a running production server, it doesn't get much more agile than that!

So, summing up a little bit. I want your opinions, thoughts, feelings, about non traditional architectures such as: Paul Graham's ViaWeb (lisp hacking), Google's Map Reduce architecture, and so on. What have I been researching?

Facts:

  • Rails (sadly) sucks for important -this depends on you- things.

  • *ails also have a tendency to suck.

  • JRuby runs better that Ruby itself. Thanks guys coding JVMs! And JRuby team too.

  • ('nuff said 'bout ruby)

  • I don't care about a language "easyness", I want effectiveness and efficiency.

  • The Gmail team is hiring software engineers that know a lot about C++ and TCP/IP (Python is just a plus).

  • A really big etc.



I've just realized that this list is too large and will defer it to a later post.

So, I want to know if YOU could make something better than J2EE (and the like), not easier, not nicer, not lighter, not heavier, not rocker(?), not fancier, but just better.

Cheers!

No comments: