Ask HN: Which Framework? Why?

12 points by edshadi ↗ HN
My friend and I were chatting yesterday about how many people start projects on Ruby on Rails just because it's familiar. Also, Ruby on Rails is popular enough that it's easier to find engineers to work/collaborate on your project.

Although generic and I understand that each application has its own requirements and therefore technologies will vary, please help me answer the following questions:

- If you're building a new web app today, which frameworks, platforms, technologies, etc. would you use? why?

- Would you choose a familiar framework that allows you to develop faster (because you're comfortable with it) even though it's not necessarily 100% 'right' for the job?

- Would you push your own limit and think outside the box to find a better solution even though introducing new technology to the team could be costly (and possibly unpopular)?

10 comments

[ 5.6 ms ] story [ 32.7 ms ] thread
- If you're building a new web app today, which frameworks, platforms, technologies, etc. would you use? why?

Backend:

NodeJS - It's nice to have javascript on both the frontend and backend. And NodeJS is FAST.

MongoDB + PostgresSQL - MongoDB for stuff that needs to be fast / fast to build. PostgresSQL for stuff that doesnt fit the document model.

Frontend:

AngularJS - It's either AngularJS or Ember.js, I prefer AngularJS. http://stackoverflow.com/questions/14395887/what-are-benefit...

Yeoman - Generate boilerplate code

Grunt - Compile LESS, Run tests, CSS minification

Bower - Javascript dependencies management

- Would you choose a familiar framework that allows you to develop faster (because you're comfortable with it) even though it's not necessarily 100% 'right' for the job?

I'd rather choose a new framework, at least if it's a project that I will put serious effort into.

- Would you push your own limit and think outside the box to find a better solution even though introducing new technology to the team could be costly (and possibly unpopular)?

Yes, I would definitely do it.

That's actually what I'm currently doing at a startup. We're refactoring the current frontend-javascript codebase which is 30 000 lines of code and it's completely unmaintainable, so we're rewriting it in AngularJS

"It's either AngularJS or Ember.js" is Backone out of the question for you? how come?
First of all, I wouldn't call Backbone a framework. It's more like a library. It's only about 1500 lines of code with lot's of comments.

If you use Backbone, you'll have to reimplement/include other libraries to use the right design-patterns. And this takes time. AngularJS and Ember.js makes these decisions for you which saves alot of time.

I wouldn't call it a framework either, was just curious about your opinion on it.
I don't understand why people (not just you) don't mention which web framework they're running on top of Node. Is everyone really rolling their own backend, perhaps using Express? Express is much less featureful than a full web framework in the style of Django or Rails.
It doesn't matter, they're all fine. You aren't going to succeed or fail based on the framework choice. Just use whatever you know. The only non agnostic advice is for you to use to use Postgres. Don't use something like Mongo, it's trying to solve problems you don't even have.
Pick the right tools for the job. If you're doing an MVP web app, NodeJS, Rails, PHP, Django, ColdFusion (N other frameworks here) will all get it done.

Yes, I said ColdFusion. That thing that was hot the 90's.

This post reminds me that customers don't care what stack you use, as long as it solves their problem: http://pud.com/post/9582597828/why-must-you-laugh-at-my-back...

The main point behind this post was to get a sense of what folks are curious about and opinions on different web technologies. I've built production code using various frameworks and platforms and have my own opinions about them. I would love to hear yours. Why did you choose a specific direction on a recent project for example?
My web work these days are personal projects, volunteer work, or small freelance projects; so I am answering from that perspective.

For paid work, generally I stick to what I know -- a LAMP stack and whatever MVC/CMS framework fits the job.

My personal side projects are where I push borders and try to research new solutions. These side projects give me the breadth of knowledge to then be able to say, "hey, X technology will work really well" for work that is more important.

If you're asking for opinions on technologies and frameworks --

- I did a survey of php frameworks a few years ago and arrived at Kohana. It met my criteria of (1) a lightweight MVC framework, (2) code that is clean/easy to work with (aka not too much "voodoo" going on), (3) useful library of utilities (pagination, etc.), and (4) very configurable URL routing/validation. Developed one small and one medium sized kohana web apps since then and it is a pleasure to work with.

- When I was still doing web work under salary, we used an internal Zend-like framework which was forced upon all devs. The learning curve was high, it was very convoluted, and kept getting in my way of trying to develop my application. After I got used to the way it worked, it was more bearable, but I wouldn't go back there again. You'd have to modify dozens of files to make the simplest of changes.

- Very rarely do I write my own libraries or frameworks. There's almost always someone else out there who has already solved at least part of your problem.

- For simple CMS websites, I use wordpress. I started using wp back when textpattern was still a thing and haven't found any compelling CMS alternatives in php. It does seem to have gotten bloated in recent years. I tried Joomla once and decided I wouldn't go there again. It's very confusing, bloated, and the administration pages are unintuitive.

I'm open to suggestions for alternatives!

It doesn't matter. Don't get caught up in the "what's best" HN hype. Don't use technologies that you're not familiar with. Go with what you know or switching costs will be high for your team. Go with a language that has a large supportive community so you can find answers to questions without jumping though hoops.