Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Which programming language and Web Framework to learn SaaS development?
20 points by cfarre on Apr 9, 2015 | hide | past | web | favorite | 25 comments
I'm teaching an undergratuate course on SaaS (Software as a Service). My students have to develop a small project and they have to choose among the following options: Ruby + RoR, PHP + Laravel, Java + Spring, and Java/Groovy + GRAILS. What do you think?

SaaS is a business model. It doesn't seem like the goal of a business course would be to teach new programming languages or frameworks. Why is it important that you restrict the tools used to build the project assignment?

If the goal is to illustrate how the model works and implications to application design then maybe supply a pre-built application that they will continue to evolve over the course. In that case - you pick the framework as the prof.

If the class is business focused - then they shouldn't be doing much of any coding, right? And a pre-supplied app would work well for them to tinker with to understand the business model.

Indeed. It would help to know what the objective(s) of this course are and how the assignment mentioned fits in. On the information so far, I also can't see why restricting the tools to particular combinations is helpful, particularly in a field where new tool sets are often developed but then superseded within months, not even years.

Ruby on Rails. It lets you build out generic webapps the fastest, is very mature now, and Ruby is the most pleasant language to use out of those.

Meteor is also a nice option for iterating quickly and building prototypes, but note SEO support is nasty.

Sorry to get off topic, but why is SEO difficult with Meteor? I only ask because I'm thinking about using it for a side project that I plan to monetize, but I could just as easily use Rails or Django because the application is, for the most part, quite simple. Meteor was my choice only because I find it really fun to develop in.

To add my two cents to the OP's question, I would say RoR because it's easy and there are a ton of resources freely available. However, I should say I'm biased because I haven't used either of the other options.

Meteor was difficult with earlier versions because it is very heavy on rendering on the client with Javascript. The [Spiderable](https://atmospherejs.com/meteor/spiderable) package has made it easier to serve static HTML to search engines I believe.

Why don't you let the students choose their own framework? Maybe I'm fluent in Python, It'd be pretty annoying having to learn Ruby/PHP/Java first instead of focusing on my SaaS project.

The best framework for any job is the framework you know the best. I don't know Java, but I can accomplish the same with Laravel than with Rails, but with Laravel it will take a fraction of the time. Not because it's somehow 'better' than Rails, but because I know it better.

I can't think of any benefit for you or your students that a restriction on language/framework would offer.

Professionally, I work with Java/Spring in a quite large B2B setting.

Having said that, I'd add Scala/Play to the mix. It's a joy.

This is rather tightly tying the idea that SaaS and Web Applications are the same thing. It could be argued that all web applications are a SaaS product (because of their multi-tenant nature or whatnot) though I think this depends on a number of other factors. Not all SaaS products are a web application. Maybe they are a web service, for example, purely producing data with no front end web application at all. I could imagine, for example, an undergrad creating a SaaS platform for distributing college basketball scores during march madness in the US, but with no front end at all.

So, to echo what others have said, why restrict students to certain platforms?

It's hard to argue against Ruby for that type of course. Perhaps Ruby and Sinatra or Ruby and Lotus (http://lotusrb.org/) instead of Rails.

I think they are great, would add Python + Django also .

students who choose RoR will have a very good advantage as there are many gems which can simplify the creating of SaaS apps .

I personally use Java+Spring, JavaScript+Node, and Python+Flask. However, I would recommend against the Spring and Node options as they take a while to master (Spring due to size, and Node due to async programming).

I have not used RoR, but everyone I know who has used it recommends it highly, so it would be a solid choice.

Also, Python+Django is solid for a course. Django is not my choice of framework, but it's well designed, documented, and comprehensive.

I'm quite certain "Grails" should not be fully capitalized as "GRAILS". Also, Grails 3.0 and Grails 2.5 have both just been released together, a few days apart, as two separate products and I'm not sure how compatible they are with each other so you might want to specify Grails 2.x or Grails 3.x.

I'd let them choose what they want, let them quickly realize what works best for them, forcing them into a corner is only going to stifle them ("Hmm, I know how to do this with Django but not in rails/laravel/groovy/etc...fuck it let's dumb it down and get it to work..)

I recommend considering the MEAN stack if you're teaching a course on building SaaS projects. The students will benefit from this due to the MEAN stack's continual rise in popularity, and the fact that they'll essentially be using a single programming language - JavaScript.

What do you want them to learn form this exercise? "learn SaaS development" is a bit vague. Ruby on Heroku is perhaps the most canonical example.

You have following choices covered:

1) a dynamic language

2) a horrible language

3) an OOP language that is due an update

4) another dynamic language

I suggest adding following options:

1) an up-to-date OOP language:

C# + (WebAPI + Angular/React)/(MVC)

2) a functional language

F# + same as above

3) another functional language

Scala + Play

I would probably also bring some Scala/Clojure stacks.

Otherwise the list seems quite ok.


why pick one? Have them do the project in Ruby/Rails and then do it again on one of the others and then have them compare the pro/con's of each one.

How about Node + Sails?



I would add Python + DJango.

Also have them choose among MariaDB or PostgreSQL.

Really the best choice has quite a lot to do with your personal style. For example I think Objective-C is OK, but I far prefer C++ and would not touch Swift with a hot rock.

However I am completely cool with someone else writing Swift code provided I never have to look at it myself. I know very well that Apple created Swift for the specific reason that Mac programmers tend to be quite clueless about memory management. That trait goes all the way back to the 1984 Superbowl Mac.

Despite the Mac memory manager and all of the System and Toolbox APIs being lucidly documented, the very reason that we have Mac OS X at all is that Mac developers so very commonly crashed the entire system when they would do something that Inside Macintosh Volume 1 said you should never do.

While today we won't crash the entire system, just have a look at the App Store. Pick a few Apps completely at random, then sort the user reviews by Most Negative First. Overwhelmingly, the users say the apps are complete crap.

What this has to do with SaaS?

Were I to write such code, I'd use C++ but I know very well that most would choose not to, and very many it would be really bad if they did.

As a consultant, I spend a lot of time looking for gigs. I learned PHP and MySQL a while back, I can do OK with it. But even so, when I find a contract on craiglist for PHP work, I don't even apply for it. PHP isn't my cup of tea.

I know very well that Facebook is written in PHP. More power to them - I respect their work, but I personally wouldn't want to work there.

On the other hand whenever I find C++ work I'm on it like a pit bull on a pork roast.

Among the more typical web programming languages, Python and PostgreSQL are more my style then Ruby, PHP or Java.

+1 for Django, it is pretty actively maintained.

Another advantage of learning Python is you can also use it for data analysis, with the helper libraries like pandas, numpy etc.

This would give you more flexibility if you would like to switch to another domain later on.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact