My definition —
A tech stack is an assortment of tools that are used cooperatively to materialise your project ideas. Specifically to developers, this would refer to your choice of programming languages, frameworks and libraries.

Without further ado…

Intro

This post is based on my journey so it is specific to web development.

Web Dev Stacks

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.

Thats 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, 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.

Image for post
Image for post

You with me so far? Good because we’re moving on quickly
Now the frameworks in web stacks usually fit in to one of two categories.
Opinionated or minimalist… and this is referring to the backend section. You don’t have to worry about the frontend just yet.
Backends also need a database, which also has two common categories.
Relational or document-oriented (non-relational).

Lets dive in, 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 customisable 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 a 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 its 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

Image for post
Image for post

Name of 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

Image for post
Image for post

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

Image for post
Image for post

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

Image for post
Image for post

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 went back to JS for the third module yet I didn’t vibe with JS straight away. It took some breaking in to 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 MERN stack and at this time of writing, i’m currently 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

Other than that, I wish you luck on your journey :]

— Code in Peace

An inquisitive programmer with a strong passion for Music and Technology. Building creative and intuitive code that hopefully doesn’t destroy anything :]

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store