Our Favorite Tech Stacks for Web Development in 2020

Image for post
Image for post

Picking a tech stack for your project is an important up-front decision that has long-term consequences. It will impact your ability to recruit developers, the speed at which you build and the long-term scalability of your platform. The decision should be made while before you start building, and ideally before you even recruit your team. With so many options available, this can be a difficult choice.

To help you navigate through the newest trends, we’ve shortlisted some of our favorite tech stacks to use for web development in 2020.

Note: When we talk about “web development” we are referring to web-based products and platforms, not “websites”. The frameworks discussed below are recommended for large and complex products, but not recommended for standard websites (for which you’re better with either a CMS, such as Webflow or Wordpress, or with raw HTML/CSS/JavaScript).

Front End

Our Favorite: React

React Pros:

  • Recruiting: React is the most popular front-end framework, making it easier to find qualified staff that can build and maintain your product.
  • Reusable Components: Instead of templates, React employs a component-based architecture. Frontend developers can build each component separately and then put them together to build complex UIs.
  • Virtual DOM: A “reflection” of the actual DOM, the virtual DOM helps frontend developers find the best way to introduce changes to the real DOM, either separately or in bulk.
  • One-Way Data Binding: With the data flowing in one direction, debugging gets easier and developers have more control over the data they’re working with.
  • React Hooks: React Hooks break components into smaller functions and reuse stateful logic without changing the state itself.
  • React Native: This platform spares businesses the trouble of hiring new developers as React Native helps build native mobile products by reusing web app codes.
  • Statement Management: Libraries such as Redux make state management in React significantly easier.

React Cons:

  • View-Oriented: At the end of the day, React is a view-oriented library, not a full-blown solution.
  • Poor Documentation: Official React documentation leaves room for improvement and can be confusing for junior developers.

Strong Contender: Angular

Angular Pros:

  • TypeScript: TypeScript helps detect errors on time thus accelerating the development and often resulting in cleaner code.
  • Reusable Components: Similar to React, Angular 2.0 boasts of a component-based architecture where each component is independent and can be easily implemented in other apps.
  • Dependency Injection: This feature “injects” a service as a dependency into a component helping the latter access the service class. As a result, the code becomes more readable.
  • Ahead-Of-Time Compilation: The ahead-of-time compiler converts HTML and TypeScript code into Javascript even before the browser loads the application.
  • Data Binding Options: Angular supports both one-way and two-way data binding so frontend developers can pick the option that suits them most.

Angular Cons:

  • Steep Learning Curve: Even with detailed Angular documentation, learning this framework can be hard.
  • Real DOM Only: All the operations in Angular go through the actual DOM. For this reason, Angular may perform slower than its frontend counterpart.

Both React and Angular are good choices and the decision typically comes down to your team’s preference. If you have a CTO that prefers one of the other, you can’t go wrong either way. That said, here’s our high-level recommendation:

  • If your team is primarily experienced developers, choose React. It provides more freedom and has a larger user base.
  • If your team is more junior and prone to mistakes, consider Angular. It helps developers catch typing errors more quickly and is also widely supported.

Back End

Our Favorite: Node.js

Node.js Pros:

  • Fullstack JS: With Node.js, your frontend JavaScript developers can more easily manage the entire tech stack, saving businesses the need of separately hiring frontend and backend developers.
  • Speed of Development: Node.js is a high-level language that makes writing code significantly faster than lower-level languages such as Java, C++, etc.).
  • Asynchronous Programming: Asynchronous programming allows the service to process multiple requests simultaneously.
  • Simplicity: Node.js runs on Javascript, the most popular programming language, so most developers will find it easy to grasp.
  • JSON Support: Node.js provides developers with smooth JSON data exchange by using Javascript.

Node.js Cons:

  • Young Ecosystem: There is a scarcity of clear coding standards for Node.js — and that leaves a lot of room for inconsistency.
  • No CPU-Intensive Apps: Node.js isn’t always efficient enough for CPU-intensive web applications. If you expect to run your platform at extreme scale (e.g. millions of concurrent users), consider a lower-level language.

Strong Contender: Python

Python Pros:

  • Less Coding: At the heart of Python lies the concept “Do more, code less”. This means developers can build prototypes faster than in other programming languages.
  • Versatility: Python can be used for a broad range of software applications, from web to machine learning and robotics.
  • Dynamically Typed: The dynamic type system means you don’t have to declare the variable’s type. This feature allows you to develop simpler and faster.
  • Interpreted Language: Python doesn’t compile code. Instead, the framework executes it directly on any system. The feature enables developers to check the impact of the changes made straight away.
  • Simple Integration: Python can be integrated with other libraries and frameworks.

Python Cons:

  • Speed: Python runs slower than other frameworks due to being an interpreted language.
  • Not Native For Mobile Development: In mobile computing, Python is weaker than other tech stacks since it isn’t supported by IOS and Android.

Database

Our Favorite: PostgreSQL

PostgreSQL Pros:

  • SQL: PostgreSQL can be queried by anyone who understands SQL.
  • ACID Compliant: The database is fully ACID compliant making PostgreSQL a reliable choice.
  • JSON Support: In comparison to older SQL databases, PostgreSQL offers native JSON support enabling developers to use it as a “NoSQL” database. Another big advantage is storing JSON as “binary JSON”.
  • High Performance: PostgreSQL has many features that have a positive impact on its performance, such as query parallelism, asynchronous replication, etc.
  • Geographic Objects: PostgreSQL can be easily used for various location services.

PostgreSQL Cons:

  • Limited Support: PostgreSQL is open-source and isn’t owned by anyone. As a result, it is sometimes difficult to receive the support you need.
  • Speed: Some developers find PostgreSQL slower than its competitor MySQL.

Strong Contender: MySQL

MySQL Pros:

  • Compatibility: MySQL is cross-compatible. It’s also able to work with other databases like DB2.
  • Simplicity: To get started with MySQL, you need only basic SQL knowledge, and it’s simpler to grasp than PostgreSQL.
  • Speed: According to numerous tests, MySQL beats Postgres at being more nimble.
  • Scalability: The multi-thread support and the ability to handle big amounts of data make MySQL a scalable solution.
  • Materialized Views: The database supports materialized views as well as temporary tables.

MySQL Cons:

  • Partially ACID Compliant: MySQL is ACID-compliant only when using NDB and InnoDB cluster engines.
  • Vague Error Descriptions: MySQL often fails to provide users with detailed information about syntax errors.

Hosting

Our Favorite: AWS

AWS Pros:

  • Simplicity: It takes a couple of clicks to sign up for the platform, and the AWS Management Console is simple enough to navigate. They provide multiple products of varying complexities for a single purpose, allowing users to make their own tradeoffs between control and cost.
  • Speed: AWS is fast to get started with. The platform also provides users with a package of tools that help them spend their time on a task more efficiently (AWS Auto Scaling, Elastic Load Balancing).
  • Documentation: AWS has very good documentation for all of their products.
  • Flexibility: With AWS, you can pick the services you need and configure the platform to better fit your preferences.
  • Capacity: AWS allows you to choose the capacity you need as well as upgrade it over time or return to your original capacity plan.
  • Tools and Services Package: AWS boasts of a vibrant and extensive package of various products in analytics, blockchain, business applications, developer tools, etc.

AWS Cons:

  • Billing System: AWS is known for the so-called “bill shock” — a rather confusing billing system. The issue can be fixed by enabling account monitoring.
  • Regional Limits: Depending on your whereabouts, AWS imposes limitations on the number of resources. However, you can request a resource increase.

Strong Contender: Microsoft Azure

Azure Pros:

  • Better for Microsoft Products: If you actively make use of other Microsoft products, you can expect seamless integration with Azure.
  • Hybrid Cloud: The platform provides users with hybrid and multicloud products enabling businesses to manage distributed environments like a single one.
  • Capacity: Aside from convenient capacity packages, Azure helps you manage your capacity with TrueSight Capacity Optimization.
  • Tools and Services Package: There are more than 600 products available in Azure for app and cloud services and Virtual Machines.

Azure Cons:

  • Regional Limits: Like AWS, Azure has regional restrictions when it comes to credit offers. Some regions are also known to have speed issues with data access.
  • Incomplete Management Tooling: Azure needs managing expertise to be used effectively.

The Bottom Line

If you’d like to discuss the best tech stack for your company or product, please feel welcome to reach out!

Written by

Satellite builds dedicated offshore development teams for startups and tech-enabled companies. Learn more at www.satelliteinnovations.io

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