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.
Our Favorite: React
- 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.
- 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
Unlike React, Angular isn’t a library but a full-featured open-source framework by Google suitable for complex projects with dynamic content. Born in 2010 as AngularJS, the tech stack underwent major changes in 2016 (Angular 2.0). It has been one of the most beloved and reliable frontend frameworks for building single-page applications ever since.
- 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.
- Data Binding Options: Angular supports both one-way and two-way data binding so frontend developers can pick the option that suits them most.
- 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.
Our Favorite: Node.js
- 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.
- 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 is a backend powerhouse that has been around since the early 1990s. It’s an interpreted high-level framework known for its dynamic semantics and the so-called “glue code” connecting large software components. Python is also one of the most fast-evolving languages out there. Software engineers admire Python for its simplicity and readable code.
- 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.
- 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.
Our Favorite: PostgreSQL
PostgreSQL (or simply Postgres) presents itself as “The World’s Most Advanced Open Source Relational Database”, and they have every right to hold this title. Initially released in 1996, nowadays this object-relational database is used by large fast-paced systems and is considered to be one of the most loved databases among Stack Overflow users.
- 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.
- 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
A relational database management system by Oracle, MySQL runs on a client-server model. It was born in 1995 and remains a popular database option for both tech giants and startups. It’s well-known for being fast, reliable and flexible. It can be used for various applications, from web databases to powerful e-commerce platforms.
- 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.
- 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.
Our Favorite: AWS
Amazon Web Services (AWS) launched in 2006 and has become the largest hosting provider in the world. It provides flexible and robust cloud infrastructure, has a stellar reputation and offers an impressive number of integrated products such as managed databases, servers, networking, IoT, machine learning, document management, etc. AWS is a powerful all-in-one combination of SaaS, PaaS and IaaS offerings.
- 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.
- 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
Microsoft Azure, another computing cloud service, is a native Microsoft product that was released in 2010. The platform offers hundreds of solutions for application building and managing. Azure is one of the fastest-growing cloud platforms and is the second largest provider of cloud services in the world. Just like AWS, Azure has SaaS, PaaS and IaaS offerings.
- 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.
- 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
We believe that the tech stacks we’ve selected are here to stay and will be great selections in both 2020 and beyond. Keeping an open mind and carefully researching your options can help you define the best technology for your project.
If you’d like to discuss the best tech stack for your company or product, please feel welcome to reach out!