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.
HTML, CSS
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
- https://www.w3schools.com/html/
- Freecodecamp offers might be the best learning roadmap for HTML, CSS out there is: https://www.freecodecamp.org/learn/
Javascript
Javascript is probably the most important skill a web developer or a full stack engineer can have just because of the varied applications of the language. It can be used on the browser and also server-side.
Freecodecamp track also covers Javascript, but my favorite way of learning JS would be to read @getify 's "You don't know JS" series. He even recently launches "You don't know JS yet" series.
React
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.
Redux/Mobx/Context/Recoil
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.
Redux : Getting Started with Redux
Mobx: Intro to Mobx
Context: This is natively supported state management in React - What is React Context
Recoil: What is Recoil
REST
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
GraphQL
GraphQL is a latest contender for REST but has its own applications. Knowing when to use REST vs GraphQL is important for optimising the application performance.
Learn GraphQL
How to GraphQL
Node.js
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
Golang/Java
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
Java: Java Intro
Golang: A Tour of Go
Databases
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.
Cache
More often that not, you end up using Cache to store data that is needed frequently from the database.
Again, noting down the popular ones: Redis & Memcached
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.
Top comments (1)
althrough OOP as a concept is very vague but I dont think golang classifies as OOP language golang.org/doc/faq#Is_Go_an_object...