

Ask HN: What web technologies should I learn before entering the field? - svermeulen

I haven&#x27;t done web development in 5+ years and am anticipating re-entering the field shortly.  This could mean writing any web site from e-commerce, to basic company landing pages, to a complex javascript&#x2F;html5 app, etc.&lt;p&gt;I assume I&#x27;ll need to know jQuery for client side stuff, and I&#x27;ve heard Node.js is really useful.  But what other frameworks are gaining traction today that are worth knowing?  It seems like there are so many frameworks, each with different advantages&#x2F;disadvantages that I have a hard time figuring out where to start!
======
anonyfox
Let's look at the stack bottom-up.

You'll need probably some kind of Database, right? For most of the usecases in
different web-apps a document-based approach is just a perfect fit, i
recommend MongoDB, since its fast and very easy to use, and the query language
is just javascript. If you need something _really_ fast, choose an in-memory-
DB like Redis (again, mostly you don't need this, 99% of all webapps won't
have serious traffic).

For the serverside-stuff itself, i highly recommend Node.js. Pair it with one
of its great frameworks like express, and you'll be up and running in a couple
of days. Don't even bother with RoR, as of today it is quite a steep learning
curve to master, especially with all the different components of the rails-
stack. Also see
[https://news.ycombinator.com/item?id=6171440](https://news.ycombinator.com/item?id=6171440)
about Ruby/Rails in startups. Since you wrote what kind of webapps you're
writing, node.js should be a good fit for you. It's lightweight, fast and you
don't need another language to learn, since its just JS.

For the Frontend-development it depends on what type of websites you'll be
developing. If its a "classic" webapp, you'll be fine without additions. If
you want to build a single-page-application, have a look at backbone.js, it's
a client-MV* framework. I prefer it over the alternatives because of it's
minimalistic and intuitive approach, the spirit of node.js.

When it comes to styling and the view-code, you'll have jade as html-
templating-language and stylus as css-preprocessor-language if you want,
thei're some kind of default with node.js / express and pretty good. For
layouting, bootstrap is the best ui-framework out there, hands down. Take a
look at the (mature) version 2.X or the (upcoming) version 3.

If you take my suggested road down, you'll have a complete javascript-stack,
one language to rule them all. Using the same skillset, you can even build
desktopapps with node-webkit or mobile apps with phonegap for example. Just
don't bother with additional languages, ecosystems and all the hassle, JS will
do the job for you today.

If you want some kind of standardlibrary for javascript, or better known as
the "swiss army knife", have a look at
[http://underscorejs.org/](http://underscorejs.org/) .

------
argonaut
I will go ahead and add some points and disagree with other points.

1\. I believe that the best path is to start from the top. Start with the most
user-facing side of the tech stack, the client-side. Why? Because further down
the stack (esp. deployment and DBs), there are more and more modern
services/libraries that abstract things away. So things like Parse, Firebase,
ORMS, Heroku, hosted DBs, MongoHQ, etc. I'm not saying you should never learn
these things, just that in terms of getting an app out the door really
quickly, the client-side is the most important piece.

2\. Agreed with sentiments on this thread about starting with Bootstrap and
jQuery. I'll chime in and say that while I greatly prefer Angular to Backbone,
Backbone can be fairly educational. If you find Backbone frustrating, check
out AngularJS. Whether or not you use an html templating language or CSS
preprocessor is really up to personal choice. I'd start with bare HTML
honestly. Although CSS is enough of a pain to code in that I'd recommend SCSS
from the get-go.

3\. I'll be pedantic for a bit and point out that Node.js is _not_ a framework
- it's a runtime environment for JS with some additional standard libs (like a
barebones http library). You almost certainly need something like Express.

4\. Here things diverge a bit. I'm a big fan of node.js. But let's be clear
about what your goals are. If you want to get employed at a startup, Rails is
vastly more popular and widely used than node.js, and for good reasons. So if
that is your goal, that should be a clear winner. But if that doesn't concern
you, or if you're too lazy to learn Ruby, I wholeheartedly endorse starting
with node on the server-side. You get to focus your energy on one language,
get to share your IDEs, tooling, and testing setup between the client and
server, and get something that's highly scalable to boot.

~~~
anonyfox
1\. Oh, i personally start from top, too. But the people around me tend to
start from the bottom, because most of them are used to rails. You know,
choose a datastore and start modeling/scaffolding right away, it's the rails
way. That's why I inverted this in my post. I agree with you - the client is
the most important thing to think about. When all is said and done _only the
client experience matters_ for your customers.

2\. Of course, there are many solutions out there. I especially like Backbone
for it's minimalistic nature, forcing you to nothing else than using something
jQuery-ish thing. Since it's written by the same guys that wrote coffeescript
(i prefer over JS), i like the combination of both. subtile thingie.

3\. Yeah, of course it's not a real framework. But for some usecases, like
providing special APIs, pure node.js without express might be enough. If not,
you may pick express or anything on top of it. (most frameworks seem to be
built on top of express nowadays)

4\. Well both know that rails won't die the next years or even centuries.
Personally i am currently employed as a Rails developer and see the
mindshift... slowly but steady. Many developers are playing with it, don't
find it amazing first time ("nothing new to see here, i can do this too with
language XYZ"), but after some time passed, they realize what's different and
they're impressed more and more. Especially startups that built their first
release with a classic rails/mysql-stack and need to (often struggling to)
scale seem to be interested to switch over.

Finally, the most important point is: master JavaScript. This includes (!)
stuff like Coffeescript if you like it. And then look at the vast and emerging
ecosystem around it. If you don't need rocketscience-numbercrunching and/or
don't have the tight constraints of embedded systems, nearly everything is
possible. Take any other "server"-language, and you'll have to deal with tons
of Javascript anyways. Just remove the mental burden you'd have with
additional (fading?) ecosystems.

~~~
svermeulen
Thank you both for your fantastic answers. I now have a roadmap.

------
vaisakh
The current trend in the web industry is obviously ruby on rails and node.js.
You may stick with both these and also client side technologies as well.But
the basic thing you want to keep in mind that, "right tool for the right job"
is the key.If you want to do some serious web applications, you may go with
ror and node.js.Node is really handy and it is getting some respect as well.

Good luck :)

------
georgebonnr
Javascript in general is going to be a worthwhile language to spend time in,
since it is both client-side and server-side now. All the sides. Having a good
working knowledge of Rails I think would be a good complement to that as well.

------
ulisesrmzroche
Gaining traction, JS and everything in its ecosystem. In a very, very big way.
Forget Rails if you're starting out. Good chances are we're all going to be
writing JS in the near future.

------
yasoob
node.js is a server framework. You should consider learning foundation and
bootstrap. If you just want to go for jobs then php is the way to go otherwise
you should consider learning python or ruby for web development as there are a
lot of jobs for it in the field as well.

~~~
nanna
How comes this is the first response to mention python and php? Is the choice
really only between ruby and node.js?

\- earnest question.

~~~
anonyfox
Of course, there are jobs for quite everything, including COBOL and Fortran.

But mentioning the near future in web development or general "app" development
(typical stuff, not AAA Games and the like) in startups, there will be
probably only one question:

"why _not_ javascript?". I expect every other language/stack to fade away over
time, at least for startups. However, managing legacycode will last forever
and have it's jobs, too. See Cobol.

Of course, all the other coders of all the fascinating and interesting other
technologies out there are pissed off by that statements. They have valid
points about the ugly "design" of javascript, circumstances where it doesn't
shine, and so on, and they are right. But for the majority of all technology
decisions, this just won't matter.

------
slajax
Raw Javascript both client / server. Then learn basic HTML/CSS with the help
of bootstrap.

