Hacker News new | ask | show | jobs
by kailuowang 4728 days ago
I started to notice a similar mindset between the groups of people who advocate for Rails and Ember.js. They tend to be more opinionated and very proud of the technology choice they made. I have nothing against it, it's just intriguing.
1 comments

I've been building apps for a few years now. I started by taking established projects and making them fit a specific role. Later I started building them from scratch. Now I'm starting to delve into the higher level "theory" behind making stuff like this. I put theory in quotes because it's not really theory, it's just observations made over years of experience, approaching theory from the bottom rather than the top.

What I learned from doing it that way is that there's a level of process abstraction which is higher than "best practices" but lower than pure CS theory. It's the level at which documents like 12factor.net are. The best word I've found that describes it is "opinionated". You want software that's opinionated enough to drive design decisions but not so much that it dictates them.

People are very proud of this sort of understanding because it is hard-won. When you look at 12factor.net, if you haven't been developing for awhile, you might not understand just how useful a document it is. You might be thinking top-down rather than bottom-up. But if you're like me, you've seen lots of anti-patterns in the things you've built and long for a way to get them out of your apps.

That's where frameworks come in. They make decisions for you that cut back on those anti-patterns. Very useful if that's what you're looking for. When I first started building, I found Rails to be too much bloat, too complex, so I used Sinatra. Now I have a large project that I'm finishing up, and I wish now I'd used Rails. You can build an opinionated Sinatra app, but why when you could just use Rails?

You don't think you need someone else to make decisions for you, until you do.