Full stack developer role and skills
It is almost impossible to create a full-fledged software product using only one technology. This usually involves so-called tech stacks – combinations of programming languages, frameworks, libraries, databases, templates, and other tools.
As all software products consist of the client side and the server side, there are usually two separate stacks that cover each of the layers. However, in the case of full stack development, web or mobile applications can be built from A to Z, covering both front end and back end sides of the project with one technology stack. Accordingly, a specialist that has broad skills across all aspects of product engineering is usually called a full stack developer.
Full stack developer skills
Being considered unicorns due to their rare expertise and versatility, they are in high demand for startups and large companies alike, from Facebook and eBay to Munchery, Betterment, or Tinder.
To learn more about Node.js, consider checking our explainer video.
Node.js advantages and disadvantages explained
Database. As for this part, MongoDB or almost any alternative can be utilized, i.e., MySQL, PostgreSQL, Apache CouchDB, or Apache Cassandra. Check our detailed comparison of most-used database management systems to get a complete picture.
Express.js is a back end web application framework package that runs on top of Node.js. Simply put, it’s a set of tools that manage the workflow between the client side and the data model, ensuring data transferring. Express is used to create APIs, manage HTTP requests, and render basic routing.
Angular is a popular front end framework to create dynamic user interfaces. Its main distinguishing feature is the ability to interact with the web application without reloading the page, reducing site bandwidth and improving performance. For more information, check out our video on YouTube.
MERN is very similar to MEAN with one exception -- Angular is exchanged with React whose popularity has steadily grown over the last few years. React is a front end, open source library for building dynamic UI.
Popularity of React vs other frameworks, source: npm trends
The pros and cons of MERN stack vs MEAN stack are solely related to the difference between React and Angular. In short, React has an easier learning curve, ensures better performance due to its virtual DOM implementation, and provides bigger flexibility in tool usage. However, the latter might be considered a drawback since Angular is a complete framework and has everything you need to start developing right out of the box, while with React you’ll have to find and choose additional libraries yourself.
Another member of the full stack JS family worth mentioning is MEVN -- with VueJS being the alternative framework for front end development. It’s less commonly used than the previous two due to the lower popularity of the VueJS itself.
However, there is an opinion that VueJS learned from the mistakes of Angular and React and took the best from both. As a result, this newer framework is lightweight, flexible, easy to learn and use, and quite self-sufficient, already having a lot of its own libraries.
As of today, VueJS already has 182k stars on GitHub, compared to React’s 167k and Angular’s 72.6k. So, if you consider that a sign of user interest, VueJS has all the chances to grow big soon -- boosting the MEVN stack along with it.
Full stacks front end layer compared: Angular vs React vs VueJS
⊕ Common language, better team efficiency with fewer resources
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
⊕ High performance and speed
⊕ Large talent pool
Most popular technologies in 2020, source: Stack Overflow
⊕ Extensive knowledge base
⊕ Free, open source toolset
Yet, no technology is perfect. Despite all the benefits the full stack approach offers, there are 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.
Monolithic architecture vs Microservices
Θ Jack of all trades, master of none?
Θ Drawbacks of every separate tool in the stack combined
As any technology stack, MEAN/MERN/MEVN combines the weak sides of all 4 of its elements. Most of them are minor technical limitations, which appear under certain circumstances. However, in order to use the stack, it’s important to realize possible bottlenecks of every tool and adjust your development strategy accordingly.
Alternative stacks: LAMP, Rails, Django, and others
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, the LAMP stack has slowly morphed 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 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 application.
The biggest argument against the LAMP stack comes from its fragmentary nature since the mastery of LAMP requires learning several unrelated languages.
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. 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 Ruby’s creator would like developers to feel). Such well-known apps as GitHub, Shopify, and Airbnb were built with Ruby on Rails.
Rails is especially popular among startups for various reasons. The abundance of shareable software libraries called RubyGems allows businesses to develop rapidly using free and existing components. Also, the 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 fewer decisions.
Django stack: Python, Django, MySQL
Instagram, Mozilla, Bitbucket, and NASA's website are all powered by this Python-driven environment. With 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 Stack Overflow, now ranked the 4th most used programming language.
Django follows the “batteries included” approach meaning that all of its functionality comes with the framework and doesn’t require additional libraries. Thanks to this, Django relieves you from making lots of 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 rookie 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 do not offer any default front end solutions. The reason for that is that the front end 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 with their own use cases in mind.
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 portals like StackShare and TechStacks for the lists of all main technologies applied.