It is almost impossible to create a full-fledged software product using only one technology. This usually involves complete tech stacks – Standard combinations of tools and programming languages. As all software products consist of the client side and a server, there are usually two separate stacks that cover each of the layers. However, there are approaches that can be used to build web or mobile application from A to Z. These are called full stack development.
Accordingly, a generalist that has broad skills across all aspects of product engineering is usually called a full stack developer.
Being considered unicorns due to their rare expertise and versatility, they are in high demand for large companies and startups alike, from Facebook and eBay to Munchery, Betterment or Tinder.
As an idea of a person equally proficient at HTML/CSS, Python, and SQL has become more of a myth, the approach towards acquiring new skills and learning quickly has led to the appearance of specialists strong in one particular stack. Let’s see what the most popular stacks are and how they’re used.
As for the database, almost any MongoDB alternative can be used: MySQL, PostgreSQL, Apache CouchDB or Apache Cassandra.
Common language, better team efficiency with less resources
(*) Extensive code reuse
(*) High performance and speed
(*) Extensive knowledge base
(*) Free & open source toolset
Yet, no technology is perfect. Despite all the benefits the full stack approach offers, there is always some drawbacks to be aware of.
(*) Insufficiency with computation-heavy back end
When it comes to heavy computation and data processing on the server side, Node.js is not the best option. There are lots of far better technologies to handle projects like machine learning, algorithms, or heavy mathematical calculations. Having a single CPU core and only one thread, that processes one request at a time, it might be easily blocked by a single computationally intensive task. While the thread is busy processing the numbers, your application won’t be able to work with other requests, which might result in serious delays. Yet, there are numerous ways to overcome this limitation. By simply creating child processes or breaking complex tasks into smaller independent microservices, that use more suitable technologies and communicate with your back end, you can handle complex computational tasks in Node.js.
Relatively young technologies
(*) Jack of all trades, master of none?
Drawbacks of every separate tool in the stack combined
As every technology stack, MEAN combines the weak sides of all 4 its elements. Most of them are minor technical limitations, which appear under certain circumstance. However, in order to use the stack, it’s important to realize possible bottlenecks of every tool and adjust your development strategy accordingly.