

Ask HN: Which programming language and Web Framework to learn SaaS development? - cfarre

I&#x27;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&#x2F;Groovy + GRAILS.
What do you think?
======
MichaelCrawford
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.

~~~
znt
+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.

------
dangrossman
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?

~~~
matt_s
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.

------
davedx
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.

~~~
rankam
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.

~~~
sandmansandine
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](https://atmospherejs.com/meteor/spiderable))
package has made it easier to serve static HTML to search engines I believe.

------
dirktheman
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.

------
dotdi
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.

------
trcollinson
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?

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

------
akbar501
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.

------
ing33k
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 .

------
vorg
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.

------
theaccordance
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.

------
slickwilli
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..)

------
justincormack
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.

------
M8
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

------
pjmlp
I would probably also bring some Scala/Clojure stacks.

Otherwise the list seems quite ok.

------
percept
RoR.

------
satchute
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.

------
envex
How about Node + Sails?

------
znpy
Grails!!

~~~
holaquetal
Thanks

