Tattoo Shops Near Me: Frameworks Galore

By Blake Dillon

Welcome back to another dev blog where I try and communicate why I made the choices I did and hopefully justify them to future generations. Today I want to talk about why I chose to go with the MERN stack (MongoDB, Express, React, Nodejs) and what challenges that has brought upon myself and my kin. At least the React part, because covering all the parts in one blog would be a lot to read!

Why React?

Is a question I have gotten, and it's a fair question. I could say that it was because I am most familiar with React and it would be true, sorta. But that would ignore the more interesting parts of the reasoning I used (and cut the word count down a lot too!) so I'll expand on it a bit. I chose React because of it's maturity, it's flexibility, and it's large selection of packages that can cut down on a lot of work at the expense of module size. But that itself is an entire topic for a later dev blog.

I ruled out Angular due to the amount of extra work in initially setting up a project as well as it's very opinionated style. It is very good for building things if you want to build the things the way Angular wants you to build them. If you don't, then it's gonna hurt a bit. On top of that Angular just doesn't have the same community resources that React has which can sometimes mean you don't have the same support or niche packages that could shave time off of development.

I also ruled out Vue, Ember, Svelte, etc. for many of the same reasons. But largely because they don't offer any major benefits for this type of project that React doesn't already provide.

But React isn't even a framework!

That is true, it is a library. And though some people may point to that as a weakness I think that is one of React's greatest strengths. It doesn't provide you with much more than the basic tools to make a simple application out of the box. Which means you can add what you need, and ignore what you don't. Sure it can cause problems if you don't understand what you are doing or don't have very organized code. But that is a developer problem more than a React problem and I don't think you should build your tools around the idea that you're going to have poor code quality and bad standard enforcement. Though some Typescript enjoyers might disagree. (They're wrong, fight me)

The way I like to explain it is that while other options give you exactly the amount of rope they think you need in order to keep you safe, React gives you all the rope you want and expects you to make sure you don't hang yourself. Which isn't really all that hard as long as you follow some sort of standard and keep everything modular. At least in my opinion.

This seems a little biased....

That's because it is! I have a bit of experience in web development and I've had the pleasure(?) of working with almost all of the modern frameworks and libraries at one point or another and for all their differences they are all very similar. I guess you could say it's an evolutionary convergence of sorts as the industry finds out what works and what doesn't. It solves most of the problems with developing complex web applications and still keeps it pretty easy to make simple ones. Plus it has been very good about not breaking everything with each new version that some frameworks (Angular) have been notoriously bad at. So you can more or less count on your application being capable of weathering a major version update or 2.

I think a good dev should be a bit biased when choosing the tools they use. A lot of the time a teams familiarity with a tool or language can outweigh the supposed benefits gained from learning the newest fad. This is especially true in the field of Front-end development since we seem to get a new framework/library that promises to make everything better every 6 months. If I tried to learn and use every one that came out I'd never get anything done and my projects would be unmaintainable.

What about next.js?

Well... what about it? See all of the above for why I chose not to use it. Sure it's got some cool stuff, but that's just it. It has a lot of stuff. And like Angular it is quite opinionated about how it wants to be used. If I find myself needing the tools it has baked in for my next project I may just use it. However so far all of the issues it solves have been less than impossible to solve without it so /shrug.

In conclusion

At the end of the day I could have created the app in just about any other framework, library, or even in plain HTML and Javascript. There is nothing special about React that I absolutely needed. But it does make the whole experience better! (For me at least)

Until next time, Be Good

-Blake

Back To Articles