This is in follow up to the blog post I have written last year about being a Full Stack Engineer in 2019.
I have since joined an amazing company and picked up a few more skills on being a full stack engineer. I have tried to be as concise as possible, yet exhaustive is the skills to be learnt.
Starting from the front-end.
Well, nothing can be done on web without a basic understanding of HTML and CSS. Developers have long moved on from writing actual HTML, CSS with advent of UI libraries but still one should learn the basic building blocks of web.
- Mozilla Developer Network is the best resource out there for anything related to web (mostly!). https://developer.mozilla.org/en-US/docs/Web/HTML
- Freecodecamp offers might be the best learning roadmap for HTML, CSS out there is: https://www.freecodecamp.org/learn/
Next we dive into the UI libraries that one must learn. There is a still debate on which is more popular React or Angular, but since more and more companies are adopting React, let's go with it.
Kent C Dodds has an excellent video tutorial for React Beginners on egghead.io
Also, its recommended to go through the Official docs for more advanced topics.
State management is a major problem when designing component based web applications. Each one of Redux/Mobx/Context/Recoil solves the problem in their own way and having an idea on atleast one of them is imperative.
We make tons of API calls daily and a majority of them are powered by REST. It only makes sense to understand the basic principles behind REST and the corresponding HTTP error codes.
Introduction to RESTful APIs
Node.js is the server side runtime for JS which enables you to build APIs and host them using servers. Having to code in same language on both browser and server speeds up the developer velocity.
Intro to Node.js
There are certain limitations to what a Nodejs application can achieve and so for such use-cases we use another OO language like Golang or Java. Java is the most popular one but Golang is fast rising
There are two types of Databases, SQL and NoSQL. The differences between them both should be learnt and only then we can decide when to use which type of Database.
SQL: There are several popular SQL databases. We have Oracle, MySQL etc, but I will go with Postgres simply because of its rise and performance.
NoSQL: NoSQL databases are used when there is not many inter dependencies among your tables ( putting it very very simply, you should go read the differences ). Both MongoDB and Cassandra are good candidates.
More often that not, you end up using Cache to store data that is needed frequently from the database.
Apart from this, a Full stack engineer should know the basics of Cloud ( Azure, AWS or Google Cloud) and Web design
There are a few options I deliberately skipped from this list such as Typescript and Deno etc to not confuse new engineers entering into the realm.
Let me know if you see anything amiss or you want to know about any particular tech.