DEV Community

Cover image for Modern Full-Stack Developer Tech Stack 2021
Andrew Baisden
Andrew Baisden

Posted on

Modern Full-Stack Developer Tech Stack 2021

The developer technology landscape changes all the time as new tools and technologies are introduced. After having lots of interviews and reading through countless job descriptions on job boards I think this is a great modern tech stack for JavaScript developers in 2021. My framework of choice is React however you can swap it out for Vue, Angular or Svelte.

There are countless tools out there so I will only be covering a selection which when combined can be used in either personal projects or in a company. Of course many other project management tools exist out there for example like Jira, confluence, Trello and Asana to name a few. This is based on user experience and preference so feel free to make slight adjustments and personal changes to suit your own tastes.

It is much simpler to concentrate on a refined set of tools instead of getting overwhelmed with the plethora of choices out there which makes it hard for aspiring developers to choose a starting point.

Project Management

  • Notion - For overall project management, documentation, notes and wikis
  • Clubhouse / Monday - Clubhouse or Monday to manage the development process itself. Both can be Incorporated into a CI/CD workflow so builds are done automatically and changes are reflected in the staging and production CI/CD branches
  • Slack / Discord - For communication between teams

Design

  • Figma - Figma is a modern cross platform design tool with sharing and collaboration built in
  • Photoshop / Canva - Photoshop is the industry standard for doing graphic design work and Canva is a great image editing tool

Back-End

  • Node.js - A popular modern back-end framework
  • PostgreSQL - A popular SQL Database
  • MongoDB - A popular NoSQL Database
  • HarperDB - A popular hybrid NoSQL/SQL Database

Front-End

  • NextJS / Create React App / Redux - NextJS for generating a static website or Create React App for building a standard React website with Redux for state management
  • Tailwind - Tailwind for writing the CSS, as its a modern popular framework basically allowing you to avoid writing your own custom CSS from scratch leading to faster development workflows
  • CSS/SASS / styled-components - This can be used as a different option to Tailwind, giving you more customization options for the components in React
  • Storybook - This is the main build process for creating the components because it allows for modularity. With Storybook components are created in isolation inside of a dynamic library that can be updated and shared across the business
  • Jest and Enzyme, React Testing Library and Cypress - TDD using unit tests for the code and components before they are sent to production and Cypress for end to end testing
  • Sanity / Strapi - Sanity and Strapi are headless CMS, and are used to publish the content with the use of a GUI (optional tools)
  • Vercel / Netlify / AWS - The CI/CD provider combined with GitHub, it makes it easy to review and promote changes as they're developed

Mobile

  • React Native / Redux - React Native for creating cross platform mobile apps and Redux for state management
  • Flutter/Dart - Flutter and Dart for creating cross platform mobile apps

Latest comments (106)

Collapse
 
Sloan, the sloth mascot
Comment deleted
Collapse
 
ismaelfi profile image
Ismael f.

Thank you, for this post.
For me there is no modern stack. I'm happy with my magical tech stack.
dev.to/ismaelfi/my-tech-stack-as-a...

Collapse
 
cubiclesocial profile image
cubiclesocial

The backends listed are extremely limited and not actually part of reality.

Whether or not anyone wants to admit it, market share is an important factor in deciding what is "modern." Relevant reality check: kinsta.com/php-market-share/

Modern software/web development should be ultra-light on system resources. Partly because it saves money but also because it saves the environment from needless waste. NodeJS is a massive memory and resource hog - about 150MB RAM per instance + many, many seconds of CPU and disk I/O to spin up and that's before it does anything vs PHP which is about 13MB RAM per PHP FPM invocation and most of that in shared libraries and starts instantly. NodeJS is 10x as heavy on critical system resources compared to PHP so you need approximately 10 times the amount of hardware and therefore 10 times the cost. Your local bean counter in Finance would look at the strict cost numbers and tell you to write PHP whether you like it or not. Facebook runs on a modified version of PHP known as HHVM - if NodeJS were better, they'd be using it...but their engineers know better. Firing up a Javascript engine is expensive and that software doesn't run as well as you think it does. V8 is pretty efficient for Javascript, but it's still Javascript - a not great language.

On the database side of things, MySQL/MariaDB are still relevant and powerful relational database backends. However, even SQLite is more than good enough for most websites. SQLite paired with a custom-built arbitration TCP/IP server in PHP can vastly outperform a more traditional LAMP/LIMP stack (I've done that myself to significant effect). And for sheer performance, nothing beats ANSI C/C++ or even Assembly language. Although in a web environment, writing C/C++ is probably a bad idea at best, so Rust comes in handy to offer at least a seatbelt between you and the windshield.

On a related note and to show that I know what I'm talking about with regards to language performance: I wrote a C++ program about 3 years ago that took live dispatches from the local fire department from an attached radio, recorded and generated MP3 files of each audio snippet, and shoved the result out onto a web server...because even PHP and Python weren't fast enough to process the incoming audio data - on a Raspberry Pi 3. That is, even the smallest loop in the fastest scripting languages were still too slow to handle basic analysis of the incoming realtime audio data feed! In addition, the C++ program ran at a nice cool 1% CPU (spiking to about 5% when processing detected dispatches) while PHP and Python where chugging 100% CPU the entire time and literally unable to keep up with the data feed. I can't even imagine what a NodeJS version would have looked like. It probably wouldn't have even started running in a reasonable amount of time and therefore missed entire dispatches let alone keep up with PHP, which had slightly better throughput compared to Python. Granted, the Raspberry Pi is seriously underpowered hardware, but the point is that no scripting language in existence can handle super basic realtime audio processing on the Pi and, for anyone reading this, that knowledge and reality scales up to production environments. Sometimes you need to pull out a compiled language or write specialized software for a specific task but, apart from that, we as devs should be responsible with system resources as we write software. I'm NOT saying everyone should give up on scripting languages. They have obvious benefits like having defenses against a garden variety of attacks built into them. But scripting languages don't perform as well as you might think and the decision to use a NodeJS backend (and Docker too) requires either a lot of prior bad decisions or at least a distinct lack of knowledge of how computer systems are designed.

Collapse
 
bl1133 profile image
Bryan Lee

Very cool. This is mostly the stack I'm interested in. The only problem is I have no idea what to build with it

Collapse
 
andrewbaisden profile image
Andrew Baisden • Edited

I have an article for that too! 50 Cool Web And Mobile Project Ideas for 2021

Collapse
 
luiz0x29a profile image
Real AI

Backend choose whats popular, oh you are going to have a good wakening when it starts needing to scale.

Collapse
 
heyimtiaz profile image
Heyimtiaz

WOW

Collapse
 
blackr1234 profile image
blackr1234

Still prefer using Java + Spring for the back-end haha~

 
pictor13 profile image
Igor Pellegrini

How would it be reasonable to expect it from Laravel, when Front-end is JS?
Of course a car can't fly and should get an airplane if that's what you need.

 
pictor13 profile image
Igor Pellegrini • Edited

is not a good suggestion for 2021 WebDev

You are implying it is bad. There is no other reason to dismiss a language that does its job, that has a consistent ecosystem, that powers a lot of modern apps (yes, with JS frontend side of course).
One uses the tools that are necessary; sectorial mindset won't help the career in the long run.
Sure you mentioned what's "trendy" in 2021 (for reasons, of course), like in the OP's text; but popular and widespread is not an objective indicator (it counts for JS and PHP too).
PHP, for how much flawed or imperfect or still catching up with "modernity", is a consistent part of the market, in 2021 (and no: not just legacy project).
You dismissed it too easily, and it sounds (partially) biased. Hence, the critics in the comments.
Even JS is not the solution to everything and has its drawbacks. I'm not saying is "bad".
You can't even say that JS is "the best option", following your same reasoning.

Depending on mindset, style, educational path, project, requirements, one stack can be better than another.

You need more strict typing validation? You choose PHP (or Java), not Typescript. Need strong productivity? Again PHP (or Python or Ruby). You need flexibility? Probably JS is the right one. Governative project? Then use JS as less as you can and rely on as much other web tech standards as possible. Startup? Embrace all the new shit an JS as you want. Serverless? Again, JS is a better choice.

But you just can't rule out PHP "in 2021". It's just a choice as the others. In web development it's imperative to learn multiple technologies: it's one of the things that actually the "full-stack" in the title implies.
Nowadays there's the choice to have JS for either BE and FE; cool, good for some! (people, projects, requirements, etc.)

However I believe the whole issue is with the post's title; probably should have written "JS full-stack developer", to not be misleading people in this discussion (especially the lazy ones like me that scroll fast and just skim); cause nothing else is considered or mentioned by the author.

Collapse
 
riobrewster profile image
RioBrewster

Actually Graphic Designers use Illustrator much more than Photoshop. Photoshop is great for editing photos and adding effects, but Illustrator lends itself to SVG much better.

Collapse
 
riobrewster profile image
RioBrewster

Actually Graphic Designers use Illustrator much more than Photoshop. Photoshop is great for editing photos and adding effects, but Illustrator lends itself to SVG much better.

Collapse
 
siddmohanty profile image
Siddharth Mohanty

Loved this comprehensive yet concise list

Collapse
 
siddmohanty profile image
Siddharth Mohanty

Loved this comprehensive yet concise list 💙

 
alifarhad profile image
Farhad Ali

laravel is 10000x easier & simpler to work work than react. you can't deny that, no matter what else you say.

Thread Thread
 
Sloan, the sloth mascot
Comment deleted
 
ozzythegiant profile image
Oziel Perez

Compared to PHP, yeah, although there are some work around but PHP sucks at real time data. However, I would say Go and Java are fairly decent for that too. I've heard they use those languages for some game servers

Some comments may only be visible to logged-in visitors. Sign in to view all comments.