Which Tech Stack Should You Learn First?

Which Tech Stack Should You Learn First?

If you’re just getting into the world of programming, deciding on which tech stack to pursue can be a challenge, especially with so many new frameworks popping up each day. At some point, you may even start to confuse programming languages with frameworks with tools. 

There are also many DIY ways to build a website, such as Squarespace and WordPress. These are great when you want to make a simple marketing website, and even experienced programmers take advantage of them to save time with responsive templates that already look good. However, for programming fundamentals, you’ve got to know how to build a fullstack app from scratch. 

A common debate in programming is whether new students should take the approach of learning one language and tech stack well, or whether they should get a more broad understanding of many. My take is that new developers should briefly check out various languages to broaden perspective, but the majority of time should be spent on getting very solid in one stack. 

Why just one stack? First of all, in interviews and on the job, no one competes over how many languages or frameworks you know. Core programming concepts are the same in each language, and because of this, good companies will allow you to interview in your preferred language. If someone is able to do a killer job with all of the coding challenges in C, it would be silly to dock them points for not knowing Node, since they can probably learn it within a week or two. 

Now, to cut to the chase: I recommend learning the MERN stack first. MERN stands for Mongo, Express, React, Node. The only programming language you need to know here is JavaScript. 

Mongo

Mongo is a non-relational database, which has certain drawbacks but is overall easier to learn than a relational, so is the best to start with. A non-relational database has fewer ties between the data, so you can start to read and write from your database without much of a “plan,” which makes it perfect for a starter app. In either case, you need to learn both relational and non-relational, so best to start with the more simple of the two.

Express

Express is a framework for your Node backend. It gives you a series of abstractions for Node and essentially makes your life easier when writing server-side code. It is by far the most popular framework for Node, which means it also has the most documentation online, so no reason not to use it.

React

React is the most popular frontend JavaScript framework, alongside Angular and Vue. When first learning, you may try and make a very simple app, while using JavaScript for your logic, but you will soon understand why virtually all apps use a framework. They give architectural structure to your app, data-binding between the controller and view, and life cycle loops which can trigger certain functions at certain points or can re-render portions of your app.

React is a bit more lightweight than Angular. It doesn’t have quite as many features, which means the learning curve is not so steep. React is also a bit more concise, and with the recent introduction of both React “hooks” and “context,” managing the data-flow within the app is a bit more straightforward than in Angular. Vue is just as lightweight as React, but React has been around for longer, so gets the slight edge for beginners because of more thorough documentation and a larger community.

*One thing to note is that the assumption here is that the developer is already comfortable with basic programming fundamentals, and can build a static website in CSS, HTML, and JavaScript. 

Node

Node is essentially just JavaScript built to run on the server/backend. It can serve your frontend code, and read and write from a database, just like any other backend coding language, but you do not need to learn a new syntax, and for this reason alone it defaults as a good go-to for your first backend “coding language.” 

One fair criticism of why the MERN stack might not be the best initial tech stack to learn is that it is so open-ended, it’s not very “opinionated.” It gives the developer plenty of freedom to choose how they want to structure the app, what they will use for routing, what they will use for service calls, etc. An “opinionated” example would be Ruby with Rails. There are plenty of areas where there is simply one “correct” way of doing something, and this is perfectly ok, especially for someone first learning.

However, you can always layer on another framework, which will add a more “opinionated” structure onto your MERN stacks, such as building with Meteor. This will set up the routing, file structure, and connection to your database. Furthermore, the process of searching Google and learning the different options for structuring your app is a good learning process: it may take longer and you may make a few suboptimal decisions, but that’s part of the learning process.