views:

99

answers:

4

The title might really sound like another "this is beaten to death" topic but bare with me please.

I've been a Java Web Developer for 6 years now. I don't see Java just as a profession. I'm really into the language its related technologies and OO principles and methods. I really love coding in Java.

However as freelancer, I feel like is really an overhead (boilerplate code, over configuration, a hassle to deploy, etc) to support the needs of SMBs. In addition to that, hosting and maintenance of a Java Web App seems like a nightmare. Even Google's App Engine doesn't seem to play with it nicely (see all the limitations on Java and the restrictions on web frameworks).

I was thinking of learning a RAD (or so called) language. Ruby (Rails) or Python (Django). Ruby due to its pure OO design (coming from a Java background I believe I'll relate better to it), Python due to its Google App Engine support.

I'm into a dilemma whether learning a new language is really worth the time for the given use case or just stick to Java which I feel really confident/comfortable with.

The type of needs I'm looking to address for SMBs are really day to day operations. Stock management, accounting, reservations, etc. Nothing on the enterprise side. Though some would argue on what enterprise really means or if Java EE 5.0 is really heavyweight or not.

I really don't want to turn this post into a flame war on which language is the best. I believe I've stated the simple reasons on why I'm considering each.

I'm really looking for any personal experience that you might have.

PS. I wouldn't jump to C# since Java already covers that. PHP although tempting due to its heavy demand, isn't that appealing to me for some reason.

+2  A: 

One of the biggest hurdles is that many SMB people don't understand the time it takes to do something. You're more likely to run into people who have been through the web development process as the client before in larger corporate cultures. You'll need to manage expectations and time lines very carefully.

To compliment this, my suggestion would be to find a language that you are comfortable with and that allows you to quickly turn out modifications to logic and UI. If the client will be managing the application themselves, then pay special attention to the language's big name CMS options and their respective learning curves - you don't want to spend time swapping out images in a slide show for your customers, because they can't figure out the CMS.

Sam Bisbee
Very good points here. Your comfort and agility are important factors.
timdev
So would you say that it really doesn't matter on what language you choose as long as you feel comfortable with it? Still there must be a reason for calling them RAD :)
Cue
@Cue: I still think that the language matters - it's one of those situations where you have a hammer and therefore all your problems look like nails. But your question was a general one, so it's hard to prescribe a solution without a problem. :-) Also, RAD is [yet another] method of developing software and not a classification of language, though some people might try to apply it as a classification (http://en.wikipedia.org/wiki/Rapid_application_development).
Sam Bisbee
A: 

Others will surely disagree, but I think PHP is a serious contender in this space.

  • Tons of OSS solutions to typical SMB problems
  • Widely available, well-supported, dirt-cheap hosting
  • Easy to use for quick hacks, but these days suited well for larger, more structured development
  • Easy to find other devs to take over, or assist on larger projects.
  • Many SMB customers already using it somewhere
  • Works well enough for whipping up command-line utility scripts
timdev
+1  A: 

I don't think you should rule out C# and .Net. C# has a lot of similarities with Java, and I think you would have an easier time transitioning to C# than you would to Ruby. I'm a C# developer myself, and sometimes I mistake Java code samples for C# samples - this never happens with Ruby. The only thing you'd really have to pick up is the libraries, but this would be true for any new language/platform.

More importantly, most small businesses still use Windows, so when you tell them that your stuff requires Windows, this doesn't tend to scare them at all. This is not the case when you start trying to talk them into Linux and Ruby and whatnot.

MusiGenesis
+2  A: 

If I were you, I would consider becoming expert in one of Oracle, SQL Server, or PostgreSQL. So many data processing tasks become trivial when you work with these systems, rather than simply treating them as dumb data stores.

At that point the choice of application language will become far less relevant, since so little "business logic" will be captured in application code.

Steven Huwig
that's a great response and I never actually thought of it this way.
Cue
I'm convinced that advanced usage of RDBMS systems is killer for SMB software. It's what they were designed to do, and smaller businesses have none of the scalability concerns that larger ones do.
Steven Huwig