Frameworks With Strong Opinions
Tags: frameworks, rails, angular
Published: 2018-11-05 22:08:37

---
title: Frameworks With Strong Opinions
published: true
description: Why you should consider the opinions of your frameworks
tags: frameworks, ruby on rails, angular
---

![some people are strongly opinionated.](https://thepracticaldev.s3.amazonaws.com/i/jheb01e4an0wurhqrhxx.jpg)

The first framework I ever learned was Ruby on Rails. I learned it in high school and moving forward, I compared everything else that I learned to Rails. And I often came away distraught and unhappy. Other frameworks just weren't like Rails. I couldn't get a project going easily. How did people work with this? I couldn't figure the patterns out. 

Why was it easier for me with Rails? Because Rails is an Opinionated Framework. 

Rails has a specific set of guidelines to follow when developing within it: you use MVC. You structure your files and folders in a certain way. You use the `routes.rb` file for routing. Et cetera.

Later, when I left Rails-world and started working with Javascript-centric frameworks, I realized that other frameworks weren't so opinionated. With `package.json`, I could include just about anything in my project. That doesn't mean that it would work, but to me, it meant that I had to figure out the structure for myself. And that [turned out](https://github.com/skwh/podcastr) [to be hard](https://github.com/skwh/TypeScriptEGI).

I then latched on to Angular for this reason as well: its projects had a well-defined structure. The framework clearly had ideas about how you were supposed to write its applications, which files were required, where you put them, and what the output looked like. 

Something that I also struggled with was the distinction between customizability and reliability. When it comes to things like customizability, most frameworks can be tweaked to the stars; the strength of their opinion matters because it changes how difficult it might be to make those tweaks. 

But a strongly opinionated framework can also be more reliable, because it only takes a few steps to create a working application or project. The more steps you take away from that initial project, the more unstable the application will be. Unless you really know what you're doing, creating an incredibly solid application from the bare minimum might not be the direction you want to take.

Ultimately, the strength of a framework's opinion is something that one should think about when embarking on learning that framework, or working on a project with it. 

How comfortable are you with making your own project structure? Will you be able to consider all of the different structural and opinion factors that you have put into your project when bugs and major changes crop up?

If the answer to these questions is no, you might consider a more opinionated framework. It means that developing a project is easier simply because the programmer doesn't need to consistently worry about those things. It means that bug fixing and Stack Overflow questions become easier, because everyone has a shared knowledge of every Rails application, or every Angular application.

If the answer to these questions is yes, then you can work on your own terms. This style works great for small projects, because you don't have to manage the overhead of the extra files and structure. You can put your code just about wherever, and in just about whatever structure you'd like. 

Anyways, you can probably find a Webpack module that will hack it back together.