

Ask HN: What web languages and frameworks would you recommend learning today? - someguy1233

I&#x27;ve been wanting to try out some new server-side web frameworks to expand my knowledge (Currently use the Laravel PHP Framework, and ExpressJS), but I&#x27;ve been struggling to find any consistent information about how relevant each framework&#x2F;language is going to be right now, and in the future.<p>There is currently a lot of material on the internet saying how &quot;Node.JS is dying use this&quot;, &quot;Rails is dying use this&quot;, &quot;Django is dying use this&quot; etc.<p>1) Is there any truth behind these claims?<p>2) What languages&#x2F;frameworks do you recommend (for the web) in 2015?<p>3) Have you ever switched to a different framework&#x2F;language and never looked back? (why?) (For new projects, or migrating existing ones)
======
trevordev
1) I don't think any of those tools are dying, people are just sharing that
other tools will work better in certain situations and each tool has it's
place. I'm a fan of nodejs but I have found the dynamic typing and poor
performance of JavaScript can hinder my recommendation when building a large,
performance critical app.

2) The languages/frameworks I would recommend depends on what you want to
build. The large amount of JavaScript libraries and its ability to work in the
browser make me highly favour javascript and I have found that typescript
provides a nice layer on top to provide sane typing and code auto completion
for many of my needs. However, Typescript tools and the language still feel
underdeveloped. I would use node to handle web requests and offload "heavier"
work to c/rust/go if needed

3) I used to use c/c++ for a lot of my personal project but I have found tasks
like managing memory can add unneeded complexity to the majority of my tasks.
C still has it's place when certain requirements must be met.

~~~
vorg
> use node to handle web requests and offload "heavier" work to c/rust/go if
> needed

Go's "net.http" package is fairly good for web requests.

~~~
trevordev
agreed but I prefer to use the same language for front and back end to reduce
the context switch cost when working on both ends.

------
iDemonix
Not the answer you are looking for, but I've heard so much about Laravel that
I've finally started to dive in. I do wish there were more L5 tutorials
around, however.

Coming from a background where I did more or less everything myself from
scratch, learning the ways of a framework isn't the easiest thing I've done in
a while.

Back on to your topic, what you need to remember is that proponents of a new
piece of software will always criticise its rivals. You also need to remember
that a lot of people will just learn a single technology, never try the
others, but declare the one they are using is the best. I see it a lot at
work, people will say X language is far superior to Y language, and if they
need to argue why they'll Google until they find something that agrees with
what they're saying. This comic sums it up:
[http://i.imgur.com/ROS7lGT.jpg](http://i.imgur.com/ROS7lGT.jpg)

~~~
someguy1233
Laravel is best learned from the documentation. Laravel 5 changed a lot, but
most things from Laravel 4 still apply; I'd recommend looking at Dayle Rees'
Code Bright along with the official docs
[http://daylerees.com/codebright](http://daylerees.com/codebright)

You're right about the criticism though, it's hard to find any quality
comparison on the internet, that's why I've posted here, in hopes of finding a
lesser biased comparison, especially from those who've changed their go-to
framework (e.g. from Laravel to Rails, from Express to Django etc.)

------
scalesolved
1) If I had to switch from current stack (Java/Play Framework/Spring) I'd look
at one of those, they all seem super healthy and a lot of remote work uses one
of the 3 (I'm a fan of working remotely).

2) Whichever language you enjoy working with and be productive in (I've heard
good things about Laravel), don't always think the grass is greener. I'd say
try out the Play Framework
[https://playframework.com/](https://playframework.com/) You can code in
either Scala or Java and it'd make a change from dynamic languages for you.

3) I switched from Java to Ruby and back again and found the sweet spot of
both, I think I've improved more since I stopped worrying if I was missing out
and just concentrated on being productive at work and solving problems I enjoy
outside of work.

~~~
someguy1233
Last time I looked at Play, I took one look at Akka/Reactive Programming and
knew there was no chance of me touching that.

I might look at it again, this time staying far away from Akka. What's the
performance like? Considering it's Java I would assume pretty good, but I'm
not sure how bulky Play is

~~~
scalesolved
I don't touch any of the Akka stack, I certainly make use of the non blocking
parts of the framework where I can. At my current company half our services
are in Java on Play and the other half in PHP, the Java boxes run on half the
number of servers and lower spec'd than PHP with about a 50% decrease in
latency too.

------
brickcap
I feel that any one who is using nginx would benefit if he learnt a bit of
openresty ([http://openresty.org/](http://openresty.org/))

------
liamcardenas
There comes a point in a developer's career where the framework/language
doesn't really matter. Node, PHP, Rails, Django, etc all have their strengths
and weaknesses.

If you are wondering which framework/language to use for a given project, the
above questions won't really help you. Instead consider the following:

1\. How much community support does the framework have? For example, a novice
NodeJS developer is probably better off using Express than, say, Koa-- which
is much less widely used and documented (unless that developer likes
struggling through problems). Tackling less supported frameworks can be very
educational but is also risky. If you are building a startup based on
something that is unstable and/or unsupported, you may accumulate some serious
technical debt that could hurt you later.

2\. Try out all your options and decide: which one's easier/more fun (for
you)? If you are trying to build a product, why bog yourself down with a
framework that you find more difficult to use, just because some other
developers say that it is "not as good"? Many people love ruby and python--
I'm personally not a fan of either. Does that make rails, django, or flask bad
frameworks? Not at all! I just personally don't like them. At the end of the
day, you are trying to make software that /does something/. I highly recommend
simply picking the easiest/"funnest" route. You might even consider using
parse to skip backend development altogether (it just makes you more efficient
as a developer).

3\. Are you collaborating with others? If you don't have a strong opinion on
which framework to use, why not let those who do pick their favorite for you?

4\. Are there any special libraries/tools that you would like to use? Not all
ecosystems are created equal. Most languages have frameworks that allow you to
easily make HTTP endpoints and packages to help you access databases-- which
is all you need for a basic web application. However, sometimes languages will
have niche libraries that make them especially ideal for a given use-case.
NodeJS and Ruby have very rich ecosystems, however, there have been times
where I have been forced to use python or java for this very reason. It
depends completely on what you are building.

I typically advise people who are just beginning to learn NodeJS, so that, as
a web developer, they get more comfortable with JavaScript (I see you already
use express, so this may not apply to you). If you are just asking this
question for the thrill of trying a new framework, and not from the
perspective of using it to build anything in particular, why not try Rust
Iron? I've been meaning to check that out, although I'm not sure if it is
production ready yet.

