The Good and the Bad of JavaScript Full Stack Development
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.
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.
Full Stack JavaScript
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.
web technologies
⊕ 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.
microservices architecture
Θ 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.[Source]-https://www.altexsoft.com/blog/engineering/the-good-and-the-bad-of-javascript-full-stack-development/
62 Hours Mean Stack Training includes MongoDB, JavaScript, A62 angularJS
Training, MongoDB, Node JS and live Project Development. Demo Mean Stack
Training available.
Comments
Post a Comment