My definition — A tech stack is an assortment of tools that are used cooperatively to materialize your project ideas. Specifically to developers, this would refer to your choice of programming languages, frameworks, and libraries.Without further ado…
Introduction
When you first dig your teeth into programming, it’s very easy to feel overwhelmed with the vast amount of resources and information you have available to you. Thankfully the majority of them are free, yet that only makes it harder to choose where to start or even what type of programming you want to learn.Even when you’ve become a more seasoned programmer, you still may have doubts about what to specialize in, so hopefully, a breakdown of stacks can help make that decision easier for you.This post is based on my journey, so it is specific to web development.
Web Dev Stacks
Web development has come a long way since HTML had first been invented back in 1989. Over time, more and more improvements were added to make the language more stable, and eventually, CSS was invented to complement the structure of a web page with styling options. Nowadays, you can make full-scale single-page applications, whereas before, we were limited to a collection of web pages held together by URIs and routes.A basic web stack in the early days would have been a basic HTML and CSS Frontend with most likely a Ruby or Java backend section. This has now evolved to allow for fully independent UI frontends and backends that are now possible with most programming languages. Even Javascript is now capable of hosting a server, whereas before, it was only capable of client-side scripting.
That's enough history. Let me explain frontend and backend just in case you don’t know. The ‘Frontend’ or the ‘Client-side’ is the face of the application and amounts to what the user can see as well as interact with.
The ‘Backend’ or ‘Server-side’ is the kitchen and storage for the application.
This is where all the data is stored, handled, and manipulated. Users shouldn’t have direct access to the backend, as it’s the frontend’s role to facilitate that.
With that in mind, a full stack developer is someone who works with both frontend and backend sections.
You with me so far? Good, because we’re moving quickly.
Now, the frameworks in web stacks usually fit into one of two categories.
Opinionated or minimalist… and this is referring to the backend section. You don’t have to worry about the front end just yet.
Backends also need a database, which also has two common categories. Relational or document-oriented (non-relational).Opinionated frameworks are essentially an application in and of itself, they do a lot of the heavy lifting for the programmer, but the code has to be exactly what the framework expects. What that means is you have to follow a certain convention but in doing so, you are guaranteed consistent results.These types of frameworks are simple to follow and cleaner to work with because they are written specifically to have a similar makeup even when comparing different applications.They are most likely to have relational databases, which are data stores structured to efficiently reference links between models and attributes.Minimalist frameworks are the complete opposite. Providing you with a bare-bones template and requiring most of the lifting to be done by the developer.These frameworks expect every feature you write to be appropriately declared and defined. There’s no guesswork here. This makes for a more flexible and customizable approach to programming your application, but that doesn’t mean convention can be ignored.Code still needs to be clean and consistent.Minimalist types are more likely to have document-oriented databases, they have the free-form structure that suits the minimal approach.Just before we move on, it’s very important that you factor in your main language(s) when you choose your stack. Learning a new language can be a lengthy process so it's best to start with a stack that covers the language you already know and instead pick up new languages/stacks at a later stage.
Examples
1. Name of the stack: LAMP
Made up of:
- Linux (Operating System)
- Apache (Web Server)
- MySQL (Relational Database)
- PHP (Scripting) can also replace with Python or Perl
Type of Stack: Backend
2. Name of Stack: MEAN / MERN
Made up of:
- MongoDB (Document-oriented database)
- Express JS (Minimalist backend framework)
- Angular JS/ React JS (frontend UI library)
- Node JS (Server)
Type of Stack: Full
3. Name of Stack: Ruby on Rails
Made up of:
- Ruby (Scripting)
- Rails (Opinionated ruby backend framework)
- MySQL / SQLite / PostGreSQL (relational database)
Type of Stack: Backend
4. Name of Stack: Django
Made up of:
- Python (Scripting)
- Django (Opinionated backend framework)
- Integrated Relational database (ORM) can also replace with SQL
Type of Stack: Backend
My Journey
I started learning HTML, CSS, and JS on an Udemy course at the beginning of my programming adventure. This course was moving its way towards the MERN stack, although I never reached the frameworks section as I was starting a course at Flatiron before I could finish.Flatiron prepped me to be well versed in Ruby, so it was a given to eventually move to Rails. I generally found Ruby to be a very inviting language, and once I understood the conventions, I became familiar with Rails quickly.I went back to JS for the third module, yet I didn’t vibe with JS straight away. It took some breaking into, but eventually, it became my preferred language. Something about its quirks gives the language a bit of personality, and I was starting to get tired of the hand-holding nature of Ruby.
This, in time, reignited my curiosity towards the MERN stack, and at the time of writing this, I’m transitioning from Rails towards MERN.
I’m also interested in branching out to mobile development. I believe there is a smooth path between web and mobile, so I also intend to add Flutter to my repertoire as it facilitates development for both iOS and Android.
Conclusion
The decision of what stack you go with is fundamentally down to you. Remember to consider the factors that may affect your working relationship with a stack, such as the programming language, the structural category of the framework or database, and so forth.Also, consider what jobs are available and what they want as there is little point in learning a stack that no company works with unless it's for your personal projects.Other than that, I wish you luck on your journey :]
— Code in Peace
Also published .