JavaScript is everywhere. If you are able to read this article or browse through your Facebook news feed, it is mostly due to this single technology.

What is Javascript? One of the most popular programming languages and a dominant web development technology, JavaScript has been around for over 20 years now. Being initially bound to front end engineering, the language has seen even more growth in popularity after an ability to use it on the server side was represented. Ever since there has been a heated discussion going on about the use of full stack JavaScript.

Being a full stack development company and having 7+ years of JavaScript engineering experience, we were able to form our own opinion on the topic, which we would like to share with you. In this article, we will discuss the pros and cons of JavaScript full stack development and its best areas of application. But first, let’s talk about the concept of being a full stack developer.

What Is Full Stack Development?

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.

LAMP Stack: Linux, Apache, MySQL, PHP

LAMP has been a popular choice for web development since 2000 due to its open-source nature and Linux’s friendliness towards developers. It includes Linux operating system, Apache web server, MySQL database, and PHP application software. Recently, LAMP stack has been slowly transforming into LEMP, with more and more developers replacing Apache web server with NGINX. Although Apache is used by the lion’s share of existing websites, it’s taking losses while NGINX is rapidly growing.

LAMP/LEMP stack is easily modified, traditional, secure, and free – a great choice for enterprise apps and prototypes that often require a high level of customization along with cost-effectiveness. With the full access to the source code and an ability to mix and match components of the stack, developers gain great flexibility and can make custom choices depending on each specific application.

The biggest argument against the LAMP stack comes from it’s fragmentary nature. The mastery of LAMP requires learning a few unrelated languages – the problem solved by the MEAN stack that’s running fully on JavaScript. We’ll talk about it further in the article.

MEAN Stack: MongoDB, Express, AngularJS, and Node.js

As a versatile stack running on a uniform language, MEAN is a preferred technology for startups, often called an evolved version of LAMP. Among the companies embracing the MEAN approach are Uber, Google, Netflix, and PayPal. We’ll talk more about the benefits and drawbacks of this stack and JavaScript development on the whole in the main section of the article.

Ruby on Rails: Ruby, SQLite, PHP

Often called just Rails, this web development framework uses Ruby as a programming language and its own default database called SQLite with various compatible web servers such as Apache, NGINX, Passenger, or WEBrick. According to GitHub’s year in review, Ruby is 4th most popular language of 2017, and Rails augments it and makes it possible to write a website on Ruby. Rails owes a part of its popularity to Ruby – the language’s clean syntax helps you build complex websites quickly and happily (at least, that’s how the Ruby’s creator would like developers to feel).

Rails is especially popular among startups due to various reasons. The abundance of shareable software libraries called RubyGem allows businesses to develop rapidly using free and existing components. Also, simplicity that lies in the foundation of Rails’ philosophy is expressed in such principles as Convention Over Configuration and Don’t Repeat Yourself that minimize your code and help you make less decisions.

Django Stack: Python, Django, MySQL

Instagram, Mozilla, Bitbucket, and the NASA’s website are all powered by this Python-driven environment. With the attention towards such technologies as machine learning and big data that majorly rely on Python, the language popularity is steadily growing, according to TIOBE and StackOverflow. Django follows the “batteries included” approach meaning that all of its functionality already comes with the framework and doesn’t require additional libraries. Thanks to this, Django relieves you from making many choices and makes it possible to create news, blogs, or eCommerce stores with its abundance of default tools. With its broad range of tutorials, a supportive community, and a clean and rapid development experience, Django is perfect for starting Python programmers. If you want something different from what this stack can offer, look into smaller packages such as Flask and Pyramid, each with its own level of flexibility and best use cases.

You may have noticed that the aforementioned stacks are not offering any default front-end solutions. The reason for that is that the frontend part of the system is much more versatile. Developers can use a variety of frameworks for front-end regardless of the chosen stack, each created for their own use cases in mind. You can consult our article on ReactJS and React Native and Angular for the deeper view of their pros and cons, and compare four more full stack JavaScript frameworks to make the best choice for your project. Aside from that, you can check out such tools as Bootstrap or Semantic-UI, created with a bunch of premade elements for quickly building responsive products.

Aside from choosing between the existing software packages, you can compose your own stack by looking at the technology used by popular websites and applications. If you want to build a new Yelp or Reddit, check out the portals like StackShare and TechStacks for the lists of all main technologies applied.

While to operate with the LAMP package a full stack engineer needs to know a few languages, it’s not always the case with full stack development. JavaScript alone can be used across all software layers. Therefore, a person who applies the language for both front end and back end programming is called JavaScript full stack developer. Taking into account the undisputed popularity of the programming language, such engineers are probably the most sought-after specialists in web development.

What Is Full Stack Javascript: One JavaScript, Different Technology Stacks

When talking about full stack JavaScript the first thing that comes to mind is the MEAN stack. It is a technology bundle that includes MongoDB, Express, AngularJS, and Node.js.

However, with the rapid growth of this approach, more alternative options for full stack JavaScript development are added. While server side JavaScript programming with Node.js and Express web framework is the most common technology choice, other Node.js-based tools, such as Meteor, Sails.js, Koa, restify, or Keystone.js, might be used as well.

The choice of possible frameworks for the front end JavaScript is even greater. Aside from traditional AngularJS or AngularJS 2.0 frameworks, numerous libraries, such as React, Vue.js, Knockout.js, or Backbone.js, are typically used, depending on the project specifics.

As for the database, almost any MongoDB alternative can be used: MySQL, PostgreSQL, Apache CouchDB or Apache Cassandra.

What is Full Stack JavaScript

The Pros of Full Stack JavaScript Development

The fact that companies like Groupon, Airbnb, Netflix, Medium and PayPal adopted the full stack JavaScript approach to build some of their products speaks for itself. However, small startups seem to enjoy using it as well. This is mostly due to the number of benefits full stack programming offers.

⊕ Common language, better team efficiency with less resources

Having all parts of your web application written in JavaScript allows for better understanding of the source code within the team. Therefore, there is no such thing as a gap between front and back end engineering that occurs when two teams are working separately using different technologies. Moreover, you can now work with only one team instead of two, for back and front end, which should significantly reduce the cost and effort of finding and retaining the right talent. Such a cross-functional team is a great asset when following Agile methodologies.

⊕ Extensive code reuse

With full stack JavaScript, you save time through code reuse and sharing. Following the “don’t repeat yourself” (DRY) principle, you might be able to reduce the effort by reusing the parts of the code (or sharing libraries, templates, and models) on both back and front end that are very close in terms of logic and implementation. In other words, you don’t need to think about the Javascript utility equivalents in Python or Ruby, you just use the same utility on the server and in the browser. Reducing the number of lines of code by up to 40 percent is also a valuable capability when refactoring and maintaining the source code.

⊕ High performance and speed

Node.js uses event-driven, non-blocking IO model that makes it lightweight and fast as compared to other commonly used back end technologies. To prove this, PayPal published a comprehensive report on the results they have seen in the process of migrating from Java to full stack JavaScript. The company was able to make the development almost 2 times faster while reducing the engineering personnel involved. Moreover, they have seen a dramatic improvement in performance, doubling the number of requests completed per second and decreasing the average response time by 35 percent for the same page. This means that the pages are served 200ms faster, which is definitely a noteworthy result.

To learn more about Node.js, consider checking our explainer video.

Node.js advantages and disadvantages explained

⊕ Huge talent pool

According to the Stack Overflow annual survey, JavaScript is the most-used programming language, used by 62.5 percent of the respondents, which makes almost 23,000 developers on the website alone. Taking into account the fact that the survey covered only about 0.4 percent out of more than 19 million developers worldwide, the total number of JavaScript engineers might be well over 10 million. Therefore, finding a skilled engineer is relatively easy.

⊕ Extensive knowledge base

Backed by giants like Facebook and Google, JavaScript has a powerful and fast-growing community. Based on the Stack Overflow survey from 2016 quoted above, the language tops the list of the most popular technologies on the website with 62,588 votes. The website currently lists 1,543,025 questions tagged “JavaScript”, which indicates the high activity of the developer community and the huge amount of valuable information that can be found there.

⊕ Free, open source toolset

Most of the full stack JavaScript development tools are free or open source projects. This means you don’t need to bear additional expenses for costly licenses or subscriptions. The tools that are open sourced are updated regularly and evolving fast due to the active community contributions. Instead of relying on a fixed set of technologies, you may use any of more than 475,000 tools (which have doubled since last year), hosted by the npm, the largest JavaScript modules registry in the world.

The Cons of Full Stack JavaScript Approach

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 computational 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

When compared with PHP or Java, server side JavaScript has been around for a shorter period of time. This results in a smaller knowledge base and limited integration capabilities. As an example, some developers cite the immaturity of the connections between Node.js and relational database tools, such as MySQL, Microsoft SQL Server, and PostgreSQL.

Θ Jack of all trades, master of none?

It is a common belief that a developer can truly master only one area of knowledge. With every other skill gained the quality of his/her expertise will decline. While syntax and grammar of JavaScript are mostly the same on client and server side, there are still many details to consider. Aside from being proficient in front end development, full stack JavaScript developers need to have an expertise in back end programming, such as HTTP protocol, asynchronous I/O, data storage fundamentals, cookies, etc. That is why some say that there are really no full stack engineers: Every one of them is either front or back end oriented. However, we have all the reasons to disagree, based on our own experience and strong JavaScript skills.

Θ 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.

The Use Cases

What is Javascript used for? Despite the fact that there are some drawbacks in going full stack with JavaScript, the approach already has a strong following and is evolving quickly. The number of active repositories on GitHub, is a compelling argument in favor of the language.

Due to its high scalability and speed, this approach is often used to build MVPs. Apart from that, there are a number of use cases for full stack JavaScript with Node.js. Based on the arguments listed above, we highly recommend using it within the following domains: