Ask HN: Which programming language and Web Framework to learn SaaS development?
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?
26 comments
[ 3.3 ms ] story [ 72.8 ms ] threadAlso 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.
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.
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
Having said that, I'd add Scala/Play to the mix. It's a joy.
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.
Meteor is also a nice option for iterating quickly and building prototypes, but note SEO support is nasty.
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.
students who choose RoR will have a very good advantage as there are many gems which can simplify the creating of SaaS apps .
Otherwise the list seems quite ok.
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.
So, to echo what others have said, why restrict students to certain platforms?
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.