
Ask HN: What framework/language should I use? - pranavpiyush
I&#x27;m a product&#x2F;business guy who studied computer engineering in college. I&#x27;m familiar with the basic concepts but haven&#x27;t coded for a living at all.<p>I want to build a web application and am unsure which language&#x2F;framework I should go with... I considered node&#x2F;express&#x2F;meteor or python&#x2F;django or ruby on rails... how do I even decide?<p>Thoughts?
======
spdebbarma
Hey Pranav,

I started learning web dev about a year back. I was right where you are and I
will try to shed some light on what I finally landed on.

___

Frontend- ReactJS

Backend - Google Firebase

___

React is amazingly simple to learn. You just need to know some HTML, CSS and
JS as a base. Google Firebase is probably one of the greatest things ever
made. As a beginner, it helped me do things in days that would have taken me
weeks.

This stack took me months to find and I'm so glad I did. I can even code and
deploy static sites in minutes.

1\. [https://www.codementor.io/yurio/all-you-need-is-react-
fireba...](https://www.codementor.io/yurio/all-you-need-is-react-
firebase-4v7g9p4kf)

------
gls2ro
I would suggest Ruby on Rails. I am not familiar with other frameworks, so it
might be that others have the same advantages as I will describe below.

For me the first and most important aspect is that for a new idea/project I
just create a new Rails project, add Devise (authentication gem) and in very
short time I can have login/signup and a welcome page. All of them with a
decent level of security so that I don't need to think a lot about CSFR, XSS,
SQL Injection (if you will follow Active Record guidelines) and many other
things.

In Rails you can create your frontend directly in HTML/CSS/Javascript without
the need to learn also React or Vue. And this "old" way of doing things will
allow you to focus on the product and not on learning two frameworks (Rails +
Frontend Framework). At least for me this is what it brings.

Also it is very easy to make your webapp expose an API and thus connect to the
backend business logic from a Mobile App or some other client. This way you
can re-write later your backend incrementally without loosing any downtime.

There is a healthy community of functionality packed as Gems and if you need a
feature that is pretty common it might be that someone created a gem for it.
Please be aware that not all gems are equal.

Also I like the language - Ruby - because for me it was very easy to pick it
up and in the beginning I did not need to understand everything to have a
prototype running.

I will add to this that the community is very supportive. I suggest
RubyonRails.link Slack community where you can really address your questions
and in general someone will help you with it.

------
earenndil
Literally use anything you want. The secret is that it _doesn 't matter that
much_. Some options:

* node.js

* python with django/flask

* perl

* php (please don't)

* C# with asp.net

* Java

* lisp

* d with vibe.d

* Rust

* C with bchs[1] (please don't)

* ruby with rails

* Write your own framework in one of the tiny languages that doesn't have one; it'll become the de facto standard for that language, and all of the users of that language will thank you for increasing its potential market share.

Point is, it really doesn't matter. What matters is you pick something,
_anything_ , look up a tutorial, and then start making your webapp. Don't like
it? Pick another one! Don't like that one? Do it again! Language/framework
doesn't matter that much, as long as you know it well.

1: [https://learnbchs.org/](https://learnbchs.org/)

~~~
dynamicdox
This a good list, but with some exceptions. At work I use laravel (php) and it
is reasonably pleasant, works well, and is fast to develop with. On the other
hand, I have been working on a project with nodejs/express/sequelize, and I
have to say I’ve been a little let down. I love JavaScript and I like node a
lot, but the lack of features in very popular libraries is worrisome. I found
myself really disliking sequelize, and express still doesn’t support
async/await natively.

------
BjoernKW
You probably can't go wrong with either Django or Rails. From my personal
point of view I'd favour Rails. In the past at least, Django also was more
about creating CMS-type applications whereas Rails' main focus always has been
SaaS-type business applications.

There's an argument to be made for isomorphic / universal code as well, i.e.
using JavaScript both in the back-end and the front-end. However, if you're
fine with learning two languages I'd say that the productivity gains by mature
frameworks such as Rails or Django outweigh the reduced cognitive load of
having to work with only one language on both the server and the client.

------
wizardofmysore
Couple of things to look for * Language preference * What is present out of
the box * How easy it is to extend * Performance

I'd pick one among Django, Rails or one of the popular Js stacks for the
backend.

For the front end the same criteria apply, however there is not much scope for
language preference. I generally go for jQuery based site unless I have a
requirement for a framework. From a framework perspective I liked React + JSX.

I'd say go for JavaScript in the backend too since you'll have to learn the
best practices and idioms of a single language.

------
saluki
I would recommend using Rails(Ruby) or Laravel(PHP).

Both have great communities to help you along the way.

Due to clients I have moved from Rails to Laravel. Both are similar.

Checkout Laracasts.com.

Laravel has some great tools. Valet (Local development environment)
forge.laravel.com is a great tool for setting up servers and doing
deployments.

------
quantummkv
I would suggest Django over Rails. Python is powerful and beginner friendly
and can be used for all sorts of stuff.

And whatever you do, don't go for JavaScript based frameworks. Setting them up
is a pain and the plethora of options available for every single bit of the
framework can be overwhelming for beginners.

------
jstewartmobile
Since this is PG's website, take a more Bayesian approach:

[https://en.wikipedia.org/wiki/Programming_languages_used_in_...](https://en.wikipedia.org/wiki/Programming_languages_used_in_most_popular_websites)

ps: back end column/table

~~~
wizardofmysore
That'd place java at the top. I wouldn't recommend java for a starter website
though.

~~~
pranavpiyush
you're right... i think i just ignored java while scanning the list :P

~~~
wizardofmysore
Java is a great language for larger companies which need to focus on
performance, cross platform support and high code quality. I have worked with
python and Java for a living and when there is a project that is going to last
for couple of years I'd choose Java hands down. However for a single or a few
people startup Java is an overkill.

------
anonfunction
Check out Golang for the server, it's a statically typed language so it's fast
and hard to introduce subtle bugs that can cause a lot of confusion. There is
a ton of interest and mindshare moving towards Go and it's supported by Google
so it's not going anywhere. Big projects like Docker and Kubernetes are
written in Go.

For a web application I think most of the work will be in the frontend which
basically means javascript. We've had a lot of success using Golang for the
backend APIs and React for the frontend.

------
sloaken
It depends on your actual application. Given your lack of programming skills I
have a hard time recommending any programming based technology.

As it stands you wi9ll not only need to learn the technology you are going to
use but also the programming language.

When people ask me which programming language to learn, I recommend that with
the best debugger. Screaming at the computer WTF! for an hour does not help
sovle problems.

For a web application I am unsure which has a good debugger, although I am
sure there is some variety.

I would also look for which ones provide plenty of learning material.

------
gscott
[http://simplicity.ws/](http://simplicity.ws/)

------
oweiler
Node + Express on the Backend, Hyperapp + Bulma + Parcel on the Frontend.

------
jeffnappi
Rails. No competition if you want to get shit done.

~~~
wizardofmysore
Why would you put rails over Django? I have used Django in the past but don't
have much idea about rails or ruby, could you shed some light?

~~~
jeffnappi
To an experienced Python/Web developer I would most likely recommend Django. I
personally spend my days writing Python, although my Python backends are
Bottle+SQLAlchemy.

Rails has a large community with Gems that can solve most of a beginners
needs, and also has full-fledged solutions for business ready to go (eg.
Double Entry accounting systems, monetary exchange rates/handling,
oauth/users, etc)

Perhaps I'm wrong and I should take another look at Django however :)

------
mabynogy
Javascript and no framework.

------
lamhoanganh
python/django is the best choice!

