Top Libraries + Tech to Learn in 2019 for Full Stack Developers
A full stack developer is a loaded term with nobody really agreeing on a clear definition. However, one thing is certain: there is huge demand for full stack developers in 2019, and in this article I want to outline for you the trends that are worth investing your time into.
In simple terms, a Full Stack Developer is someone that can build programs and applications fully. Understanding both front end and back end technologies, tooling and services, and combining all these skills to make something that works in production (mainly, but not exclusively on the web).
This is what the salary of a Full stack developer looks like going into 2019 (for USA):
Let’s not waste anymore time. Here is what you need to know going into 2019 if you want to stay current and be a top performing full stack developer.
The Basics
HTML, CSS and Javascript are something that you will need to know and that isn’t a surprise to anybody. However, you will also need to learn a front end framework/library like React, Vue, or Angular. But which one should you chose? Probably this one.
For a real full stack developer though, you can pick any of the three in 2019 and be successful.
React 16 updates
You will need to know the basics of React and its component based one way data flow architecture. However, this year we saw a lot of updates with the release of React 16 and a few upcoming minor releases scheduled in 2019.
- New lifecycle methods
- React 16.6 with Suspense for Code Splitting (already shipped)
- A minor 16.x release with React Hooks (~Q1 2019)
- A minor 16.x release with Concurrent Mode (~Q2 2019)
- A minor 16.x release with Suspense for Data Fetching (~mid 2019)
This means you should know how to use React.lazy()
with <React.Suspense>
for code splitting, React.memo
for optimization, and keeping an eye out on the new features when they come out especially React Hooks which may change things quite a bit in the React ecosystem.
We also have the standardized React Context API now which you should have a basic understanding of (more on this later).
React ecosystem will keep growing and evolving in 2019. Because of its architecture, this will not be only for the web. The ability to port and use React on different platforms like mobile, IoT and AR/VR will keep it relevant and ahead of the other 2 libraries in 2019.
Vue 3.0
Vue has continued to grow in the hearts of developers in 2018, and will keep growing in 2019… but will it be enough to surpass the other 2 big players? We will see.
The ecosystem is growing, and with the new Vue 3.0 coming up and the improved Vue CLI, the developer experience will be better than ever in 2019.
With Vue Native allowing cross platform development like React Native, we are getting close but still a ways away from React’s large ecosystem.
Vue has an interesting trend that will continue to grow in 2019: it is often used by Chinese giants such as Alibaba, Baidu, Tencent, Xiaomi and DJI instead of React or Angular (which were created by Facebook and Google). I expect the Chinese market to keep growing especially fast due to the fact that Vue is an open source independent library with no attachment to a big tech giant from the west.
Angular Ivy + Angular Elements
New rendering engine, Ivy, is really close to coming out which will be improving performance. Depending on when you read this, it may be out though. You can track its status here.
Ivy is going to be the third incarnation of Angular’s render engine. The goal: it’s going to be smaller, faster, and simpler compilation.
Angular Elements will give us the ability to use Angular components in other environments other than Angular. In plain english: You can build components that can be added to any HTML page without Angular… kind of like Web Components (Both were created by Google… if you’re curious why this may be in the interest of Google, I wrote about it here). Now I can create the best component in the world with Angular, and just give it to my friend to use it in her React app!
In 2019, Angular will continue to do what they are good at: providing a full featured framework for building rich applications on the web because Angular removes many of the decisions from the developers and instead ensures more common code patterns for large teams.
Angular, Vue, React — Smaller and Faster
Overall, 2019 will see similar things from these 3 front end libraries, and as mentioned before, if you master one of them you will be ready going into the new year. Expect to see minor changes in each one of these over the year with improvements in their rendering speed and making their library sizes smaller…but none of them will bring in any significant improvements to dominate the other.
CLI is all the rage
Gone are the days where you have to build your own starter project with babel, webpack, eslint, testing libraries, and other tools. I mean that is still an option, but developer friendly CLIs have really made this experience really nice and easy to get going with any sort of project (Remember how it was like 2+ years ago??) Make sure you are using these when starting a project and moving away from them only if it becomes an impediment:
In 2019, we will see more and more improved experience in the CLI but it should be your go to way of beginning any project.
State Management
- Vue will continue to use Vuex for state management.
- Angular will continue to mostly use RxJS.
- React had a bit of an identity crisis this year, with the new Context API coming out, and the popularity of GraphQL + Apollo gaining ground. For the first time in a long time, Redux finally seems like not the obvious choice for managing state. You should still learn Redux, and it also teaches some amazing computer science principles like Event Sourcing and CQRS so it is still the top choice going into 2019 (more on this below).
New Context API vs Redux vs GraphQL
Apollo has built-in offline first client cache that will make Apollo+GraphQL a serious alternative to Redux in 2019 (yes, technically you can use both of them together). New Context API came out and many people called it the death of Redux even though Context is something you previously had in React and it only got a makeover.
Going into 2019, you should be aware of all 3 and how they work, and what problems they solve, but Redux is still a great choice when it comes to employability. Context API is something you can learn in a day, and GraphQL is something we will discuss more of in the backend section of this article.
Server Side Rendering
Server Side Rendering is still not a solved issue in Javascript land. With Single Page Applications and Client Side Rendering, we learned that you can really bloat your projects and ship too much Javascript. It may also affect your SEO (but probably not as much as you think). There are workaround for its shortcomings like: PRPL Pattern, prerender.io, or just realizing that the google bot isn’t as bad as you think at crawling Single Page Applications.
For now, if you want to do Server Side Rendering, you should use:
- Next.js for React based SSR
- Nuxt.js for Vue based SSR
- Angular Universal for Angular based SSR
Oh, and static pages are coming back into fashion and you should take a look at JAM Stack. The main idea is this: pre built markup (static page) that becomes a dynamic single page application once on the client side by utilizing APIs for the server. This is something that can really change the course of server side rendering in 2019 and I predict more people using tools like GatsbyJS and not stressing out too much about building complicated server side rendering logic on their own.
Web Components
Web Components adoption by the browsers is finally getting close to what we want. Going into 2019, we are going to see more talk of Web Components but it still won’t hit a tipping point in 2019 (see last section). Keep an eye on them, but don’t spend your days and nights trying to master how to build Web Components just yet.
The promise of components that you can pass around React, Angular, Vue and plain old HTML is nice, but until we see some major adoption and significant benefits, it’s hard to say when it will take off.
Performance
Everyone likes talking about performance. Going into 2019, keep an eye on Code Splitting becoming a standard practice, newer optimized image formats coming more and more into play like WebP.
Everyone will still hate the idea of AMP by Google.
The major things that you should learn and be ready for 2019 are:
- Angular, React, Vue specific optimizations
- Code Splitting
- Tree Shaking
- Delivering only necessary Javascript code
- Being more mindful of what NPM libraries you are using and minimizing library boat.
- Having a performance budget
- Prioritizing assets better through use of CDNs and browser priority tools.
PWA
Progressive Web Apps are still going to be hot in 2019 (and could be part of the Performance section above) but it’s most complex features are probably not going to catch on (i.e. Push Notifications).
Most of the time you will be using HTTPS, App Shell and Service Workers for some extra offline features, security, and performance. You should learn how to build a PWA and test it with something like Lighthouse.
With Safari finally adding some support for PWA, it’s an easy win to implement progressive web app features to your project. At the end of the day though, all you need to really learn to get started is a combination of a manifest.json
file and utilizing service workers. Google is really trying to make this work, but don’t expect any major changes in 2019 from what we already saw this year. This goes well with the PRPL pattern mentioned a few sections back.
Don’t worry! The backend world isn’t as crazy and fast moving like the front end world in 2019 so let’s dive straight in:
HTTPS Everywhere
HTTPS is a must now for any website sending user entered data to a server. Google will penalize you if you don’t have it set up, and luckily it is really easy to get HTTPS with HTTPS Everywhere or something like Caddy.
REST vs GraphQL (But not really)
Don’t let anyone fool you. RESTful APIs aren’t going anywhere in 2019. You will need to learn best practices for implementing and designing these. You should be using Node.js and Express.js to create an API server and for 2019 these two combined will dominate.
GraphQL has a lot of hype right now, but this isn’t a winner take all market. Learn what problem GraphQL solves and how you can actually use it in a RESTful API for certain routes to optimize things. That will be the most important trend going into 2019: Not how to use GraphQL by itself, but how to optimize some RESTful API routes using GraphQL for those rare occasions (more on this in the last section).
HTTP2
HTTP2 is becoming more and more common and you should have an idea of how to use this protocol to optimize delivery of your content. Also, HTTP3 is in the works so keep an eye on it, but it won’t be something you need to worry too much about in 2019.
Infrastructure as a Service
Building and managing your own servers is becoming rarer and rarer. Here are the main options going into 2019:
- Digital Ocean — for simple servers.
- Heroku — for simple and integrated server and deployments
- Now — for super simple deployments.
- Firebase — for managed infrastructure and databases (especially for mobile apps)
- AWS — for pretty much anything you want so you never have to think about managing servers in your life (More on this in the “Other Trends” section)
You need to learn SQL
Database growth of managed infrastructure like Firebase, AWS, and others will continue being popular, but you need to learn SQL. Databases like PostgreSQL continue to grow moving into 2019 while NoSQL databases like MongoDB seem to have a bit of a decline. You should probably learn the pros and cons of each as there is no perfect solution for all problems when it comes to databases. It’s also a good idea to learn how to build relational databases in a scalable way.
Don’t forget about search
I almost didn’t include this here because it isn’t absolutely necessary, but search is a big part of the web, and it’s good to understand two of the best options available for full stack developers in 2019:
You should probably learn Redis
Learn about caching with Redis and how in-memory storage works. Caching and memory only storage is an important concept to learn and take advantage of in 2019 in order to optimize your system. Redis is a great starting point for understand these concepts.
Learn the 3 types
Many people debate this topic, but to simplify things, you can generally break tests down to 3 types:
- Unit Tests: Testing of individual functions or classes by giving them an input and testing the output.
- Integration Tests: Testing processes or components to behave as expected (including side effects).
- End to End (UI) Tests- testing actual behaviour of your user and going beyond just a simple function. Testing human actions and behaviours.
Keep it Simple Silly
There are many options, but here are the best two options going into 2019:
Think of Jest as an all in one test framework so you don’t have to add different tools and libraries like in the second options with Mocha. If you want simple, just use Jest. If you want more customizability and modularity, pick Mocha.
Bonus points if you learn about: Mocks, Spies, Stubs, and Snapshot Testing.
Maybe A Bit But Not Too Much of End to End
End to end tests cost a lot of money to implement for companies so depending on your situation, you may or may not encounter this in your career. In whichever case, here are your best options to learn, or at least know about in 2019:
- Cypress
- Nightwatch
- Protractor (for Angular lovers)
Bye Bye Mobile?
Mobile world is going to have a bit of a tough 2019. Apps just aren’t downloaded as much as they used to, and the top downloads are either game apps or apps owned by big tech companies. There will be more mobile web browsing in 2019 than native mobile app activity. Therefore, for full stack developers and mobile developers, more focus will go towards increasing engagement through web apps on mobile (Like using PWAs).
iOS along with Android are still important development skills that hiring managers look for but they have been declining over the last few years. There seems to be a strong shift from native mobile development to hybrid (or nearly native) led by React Native. If you look at the chart above, React Native has overtaken Swift, the primary programming language for native iOS development.
Here are the developments you should keep an eye on:
React Native had a bit of a setback in 2018 with a few blog posts coming out by some big companies saying they are ditching it. But all of these companies tried adding React Native to their existing iOS or Android codebase. If you are starting from scratch, this is still a great choice going into 2019 and it will continue to grow.
Flutter came into the scene in 2018 very hot. It is too early to tell where it will go in 2019 though. You should keep an eye out on it, but as of now, it doesn’t add significant benefits over React Native to really cause a massive disruption. (I did not include Flutter in the image above since their data points are still significantly smaller than others. As of now, there is more hype than job demand for it)
Ionic and NativeScript usage will be declining in 2019 and is something that you shouldn’t concern yourself with unless you are working with Angular.
So… stick to React Native for 2019. You can learn React Native here.
NPM packages you should use
- Prettier —focus on what you are writing instead of how you’re writing it
- eslint — keep things clean
- date-fns — lightweight alternative to moment.js
- lodash — for throttle() and debounce() functions mostly
- rambda — if you really love your functional programming
Javascript vs the World:
Javascript has to be one of the most heavily debated languages. With it being one of the most used languages in the world, I guess it comes with the territory. 2018 saw a big push towards static typing becoming popular in the innocent dynamic typing world of Javascript. The contenders?
- TypeScript: Superset of JavaScript that compiles to JavaScript.
- Flow: static type checker for JavaScript.
- Reason: Typed language that leverages the JavaScript & OCaml ecosystems
- PureScript: A strongly-typed language that compiles to Javascript, written in and inspired by Haskell
- Elm: Purely function language that compiles to Javascript.
Static vs Dynamic typed languages is a historical/philosophical debate that isn’t going to be settled anytime soon. None of the above will overtake Javascript as the main language of the web. However, with Angular and now Vue using Typescript and making it standard with their developer community, Typescript will probably continue to grow and dominate all of the other options above.
You should learn the basics of Typescript and how it works (and the benefits of static types), but don’t let it fool you that it is 100% the only way to write good code. For example: focus on writing good unit tests first.
Module Bundlers
Webpack 4 and Parcel are the dominant tools for this in 2019. Both of them are going in the direction of less complexity and more higher level “do it for me already” attitude that we are seeing a lot of (like in the front end library CLIs). Learn how these 2 work, but keep in mind that CLIs take out the initial 80% of complexity when you are starting out. Use Rollup if you are publishing NPM packages.
Data Structures + Algorithms ❤️
Not many articles talking about trends ever consider Computer Science Fundamentals. However, this is probably the most important topic, and one that I can confidently say with 99.99999% accuracy: CS fundamentals will be important if you want to excel as a full stack developer in 2019 and for future years. This is because these fundamentals don’t change and have been around for a very long time unlike a library that falls out of fashion as soon as something new comes along.
Takeaway: Learn about Data Structures and Algorithms. Also, learn some concepts around System Design and good architecture.
Containers and Serverless
Containers (popularized mainly by Docker) have given us a completely different architecture setup from a few years ago. One of the major ideas that has come out of it is Serverless. Serverless doesn’t mean no longer having servers as the name suggests, but instead, it means that somebody else is managing servers (infrastructure) for you so you can focus on your application logic and not worry about things like scaling.
The popularity for Serverless started in 2017 and continued onto 2018. 2019 will see some of the same with the most common use case being AWS API Gateway combined with AWS Lambda (functions as a service) to be used by your front end application code.
The offer of a way to increase performance at a reduced cost is a nice idea and if the cold start problem gets resolved in 2019, I can see it becoming more and more common practice. Learn the basics of using AWS Lambda to get an idea of the benefits.
Platform as a Service /Backend as a Service
Amazon, Google and Azure (and maybe a bit of IBM) will battle it out for the server market in 2019. Each one of them offering completely managed services.
AppSync, Amplify, App Services, App Engine and other services that do a lot for you out of the box will continue to evolve, but none of them will really take off since programmers have a hard time giving away so much control unless you are working on a small personal project.
In 2019, Azure will dominate the enterprise market, AWS the general developer market, and Google the machine learning specific market. Speaking of…
Machine Learning
In 2019 you should learn and understand how you can use Machine Learning models through APIs like the ones below:
More than Platform as a Service or Backend as a Service taking off in the above section, the machine learning APIs and models provided by these big companies will be a more important trend in 2019. You should learn how to use some of these for your future projects (don’t worry, they make it simple and it’s like using most other APIs).
In 2019 we should see a bigger trend in Machine Learning API usage on the web instead of building your own machine learning models or starting from scratch. Most people or companies don’t have the resources or the data to do machine learning properly unlike the big tech giants above.
Web Assembly
Web Assembly will continue to slowly improve but it will still be only used by a small portion of the developers that need it (i.e Gaming, Image processing). You will be fine just reading this article and knowing what it is at a basic level so you are ready for it when it becomes more mainstream in a few years time.
What you shouldn’t learn
- PHP (You can read this post by me if you want to learn why)
- jQuery
- Ember
- AngularJS (Angular 1)
- Bootstrap (more on this in my next post)
- Ruby
Don’t hate on me for the above. Remember that it is never a bad idea to learn something new. This is just my opinion, but I would love to see anyone give conclusive stats and data in the comments below telling me that these above items are not in decline in the overall job market. (Please share your thoughts in the comments kindly internet people)
Bold Predictions that are completely subjective and you may laugh at me at the end of the year for making them
- Vue will never reach the hight of Angular and React and will continue to play a small minority.
- GraphQL hype will never actually match the use cases. REST is still a great way to organize endpoints as GraphQL only solves problems when it comes to specific needs. combining GraphQL with REST for specific endpoints may be a better trend.
- Less and less configuration and tooling: Knowing webpack and tooling will become less important with better CLI tools.
- Web Components still doesn’t take off and catch on… it may never will and something new may come along.
- TypeScript growth slows down and stays popular only with Angular and large corporate companies.
Anything you disagree with? Anything I may have missed? Humans are notoriously terrible at predicting the future… So Let me know in the comments.
PS
I actually teach the above topics in my courses (how convenient right 😛) and I pride myself on selecting topics that won’t waste your time while teaching you skills that are relevant and growing in demand. I also keep all my content up to date. You can see my courses here.
Thank you for reading this far. If you enjoyed this post, please share, comment, and press that 👏 a few times (up to 50 times). . . Maybe it will help someone.
Follow me on Twitter and subscribe to my blog here if you’re interested in more in-depth and informative write-ups like these in the future! By the way, my full time job is to teach people how to code in the most efficient way possible. You can see my courses at zerotomastery.io/courses