Ask HN: What web technologies should I learn before entering the field?
I haven'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/html5 app, etc.<p>I assume I'll need to know jQuery for client side stuff, and I'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/disadvantages that I have a hard time figuring out where to start!
12 comments
[ 5.3 ms ] story [ 38.3 ms ] threadGood luck :)
- earnest question.
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.
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 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/ .
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.
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.
That being said, I personally learned node.js by starting with raw node (and the http module).