From a complete beginner to a Full Stack Developer in 2018-2019 : Part 2



Related image

First of all, I was overwhelmed by the response that you guys gave on Part 1, which motivated me to complete part 2 as soon as possible. So, thank you so much for that. I have been focusing more on this blog in recent times and write stuff I am passionate about on this blog whenever I get some free time so stay tuned for some awesome content. Also, please suggest in comments about what you would like to read next, that helps me build content as per User preferences.

So I introduced the path for Front end in my first post. Please check that out before continuing to this post for gaining the maximum out of the 2 posts. In this part, I will be covering more things that you should learn in order to be a Full Stack Developer.

Again, I encourage you to go with this only when you have time as this will also be a long post and there's a lot to cover. I will be telling you almost all the options you have for backend development and briefing about most of them. Further, you need to research and then choose which one you should pick for yourself because trust me, there's a lot out there to learn about. I will try to cover about as many as I know. So without further due, let's get started.

1. Node.js along with Express
Image result for node.js


First, let me clear a misconception that a lot of people have. Node.js is NOT a Programming language, it is NOT a framework and it is NOT a library. It is a JavaScript runtime. Being a core Node.js developer, I can tell you that it is one of the best choices you can choose for backend development. The biggest reason being(apart from all the other awesome features it packs) that you do not need to learn any additional programming language. Yes, Node.js allows you to use JavaScript on the backend. You already know JavaScript if you come from a front end background right. So, extend that and learn Node.js, as simple as that.

Usually, most of the times,you will be using Node.js along with something called as Express.js, a Node.js framework which helps you with a lot of stuff and makes things easier for you. Express should be your first choice when learning a Node.js framework. I will be covering other frameworks further in this post but learning Express is pretty much mandatory if you want to shine well with Node.js

I did not cover a lot of essentials about Node, remember this is NOT a Node.js post or tutorial. I do have a post covering basics of Node and Express. Check that out if you are interested. You can find a lot of articles explaining why you should use Node.js. Feel free to browse through them. As I covered in my first post, you must learn about package managers before diving into Node.js, namely NPM and Yarn.

Node 10 was just released 1 month before and it brings in a lot of good and new features to the existing version of Node. Maybe I will write a post about it in near future. Till then you can check a lot of other blog posts on the internet about what's new in Node 10.

2. PHP 

Image result for php vs node

Now again this has been a topic of debate and a lot of people fight over PHP vs Node. This isn't a PHP vs Node article, maybe let's keep it for some other time but yeah learning PHP is easy and you should give it a try. You will still find a lot of jobs which demand PHP Skills and PHP frameworks knowledge. Also, you find a lot of jobs on Content Management systems like Wordpress, which run entirely on PHP. So, without a doubt, it's a must know skill for you, especially if you are looking for some quick freelancing cash. Just like Node has NPM, PHP has its own Package manager called Composer so check that out if you decide to be in long term with PHP. Also, I will go over the PHP Frameworks ahead in this post.

3. A Basic understanding of the MVC Pattern

Image result for MVC pattern

You need to have a basic understanding of the Model, View and Controller architecture because you will find many frameworks using this and it is important to understand this. You will find frameworks ranging from Ruby on Rails to Swift using it and many more including certain PHP frameworks such as CodeIgniter. So, do make sure you know the basics at least.

4. Python

Image result for python

Another very popular option for a backend is to learn Python frameworks. Python is a really popular and powerful language which has a lot of scope apart from web development as well. Basically, you will categorize Python frameworks in 2 categories :
1. Synchronous: These include some of the most popular frameworks which are namely Django and Flask. There's another one called Pyramid but I haven't used it so cannot say anything about it.

Django is for sure a very powerful Python framework for your backend and is really powerful when it comes to quick prototyping. You will very frequently hear the phrase "Do things the Django way". A lot of stuff such as Authentication comes out of the box in Django,so this makes it really powerful.

Flask is another popular framework, although a little less than Django but definitely worth checking out.

2. Asynchronous: You have frameworks such as Sanic and Tornado in this domain. I haven't really used these frameworks. So, feel free to dive deeper once you know about them.

As far as managing packages with Python, we have the very popular pip, which is the default package manager for python. Consider it as equivalent of npm in Node.js.

Testing in python can be handled using a variety of frameworks, the most popular ones being pyUnit and py.test.

So definitely, Python is a strong and concrete choice for your backend so its worth learning plus you have a very strong community which is always ready to help.

5. Ruby

                                   Image result for ruby on rails

Ruby is also another popular choice for backend and has a similar syntax to Python. One of the primary objectives of Ruby was to improve code's readability, similar to Python. Coming to web development, you have one popular framework which you might have heard of, i.e., Ruby on Rails.

Another choice of framework is Sinatra, but I haven't used it before so cannot comment about it.

For managing dependencies, you have the RubyGems package manager, which can be considered equivalent of pip in python and npm in Node.js.

For testing, you have RSpec to test Ruby code.

You can look at the image above for major companies that still use Ruby in their tech stack. Although Ruby has lost popularity in recent times but still has a strong community and is not very hard to learn so definitely it is a nice option to checkout.

6. C#

Another popular choice for your backend is C#. Microsoft's most popular framework .NET uses the MVC architecture and  is used by quite a many organizations for their choice of backend. The popularity has gone down but still it's worth checking out as we are exploring all the options here. I haven't used this much so cannot say much about this but yeah, this was another choice that you can go for.

7. Java

No doubt Java is one of the most popular languages used in almost every programming domain and web development is no exception. The most popular choice of frameworks that you will see here are Spring and Hibernate. These do have further classifications so dive further if you happen to be a Java Programmer and want to use Java for your next back-end project. Java applications are undoubtedly very secure and therefore Java is a popular choice when security is a priority in any web application.

8. Go

Image result for GOlang

Go is gaining popularity these days and is a nice choice for writing REST APIs. The community is growing fast and it is definitely used in areas other than web development as well. Go is a wonderful language for writing web services, because of its lightweight threads, modularity, and excellent integration with other services.
Here's a nice post covering the basics of Go for a beginner.


9. Other Node.js frameworks/Authentication :


Image result for loopback

I mentioned Express earlier in this article at the beginning. Learning Express is pretty much mandatory if you want to make a career as a Node.js developer. However, there are a lot of other options available to you when choosing a Node.js framework. Some other popular choice worth checking are :
  • Loopback : Trust me this makes it so easy for you to develop a RESTful API in minutes with all the dirty stuff taken care by the framework itself.
  • Hapi.js
  • Koa.js
  • Sails.js
  • Passport.js : Handles all the authentication related stuff for your application
I employ you to check all these out sincerely if Node.js is what you want to work with for the rest of your backend career because these will make a lot of stuff so easy for you.

Also, do learn about JWT Authentication and OAuth(Passport.js is your choice for Authentication).

This by no means was an exhaustive list and there are many more available out there but these were the most popular and useful ones in my opinion.



10. Testing with Node.js :

Testing is an important part of development and again, if you plan to be a Node.js engineer, be well versed with any one of these testing frameworks and know the basics of others as well :
  • Jest
  • Mocha
  • Enzyme
  • Chai
  • Jasmine
This is again not a complete list. There are others out there but these are the most popular ones.



11. PHP frameworks and testing in PHP :

Image result for laravel

I did not cover PHP frameworks earlier in this post so here they are. PHP is in great demand and every organization using PHP for their backend use some PHP framework behind the scenes so it is important to learn about them if you plan to be a PHP developer. There are a lot of choices but the most popular ones are the following :

  • CodeIgniter
  • Laravel
  • Symfony
  • CakePHP
Laravel is the most popular choice amongst PHP developers and organizations these days because it provides really quick prototyping. The other two are also nice choices and CakePHP is used to deal with a lot of authentication stuff. Dive deeper into these if you plan to be a PHP developer.

For testing purposes, the most popular choice is PHPUnit.


Let's talk about Databases now!!

Image result for databases

Databases are the backbone of any web application. Therefore, it is very important for you as a Full Stack Developer to understand databases and be able to work with them.

Basically, on a broad level you will classify databases in 2 types :

1. Relational/SQL Databases
2. Non Relational/NoSQL Databases

You can refer this post to get a nice beginner friendly introduction that will make things a lot clear for you before you proceed further.

Relational Databases :

Every thing is arranged in the form of tables. Learn more about them, there are a lot of resources available. I will tell you what all to learn :

  • MySQL
  • PostgreSQL
  • OracleDB
  • MariaDB
MySQL is the most popular choice in the community and organizations. MariaDB and MySQL are very much similar. After MySQL, you can go with PostgreSQL and others if you organization uses one of them.

Non-Relational Databases :

The equivalent of a table here is a document. Please refer to that post. It will help you a lot in understanding Non-Relational/NoSQL databases. The most popular choices here are :
  • MongoDB
  • Redis
  • Cassandra
Definitely start with MongoDB and master it first. You will find more about these databases in that post so you can check that out.

Other Important Stuff!!

Image result for graphql
Apart from all that I stated above, if you want to level up your game, it is really important that you learn more about these :

  • GraphQL : A query language for databases and it is considered as the replacement of RESTful APIs in the near future. I cannot explain it all here because this is really deep. Do check this out necessarily.
  • Docker
  • Regular Expressions
  • Learn about Search Engines and how they work
  • Learn about Elastic Search and Kibana, trust me it's really awesome technology.
  • Architectures and Stacks : MEAN Stack, MERN Stack(Even MEVN Stack), LAMP Stack and a lot of more architectures other than MVC.
  • Web Servers :
    • Nginx
    • Apache
It's getting pretty long and I will probably stop here. I know this could have been too much to digest and you might have been overwhelmed with all of this but trust me, this is something you need to understand seriously that there is so much to learn out there.

I tried to cover as much as I knew and what was possible to cover here. Exploring all of these options sure gives you a hint of what you should learn and what you shouldn't. Again, a big thanks for reading this until the end and hopefully it helped you in some way. 

You can check me out on GitHub and hopefully find some projects that might be useful to you. So once again, thank you folks. See you next time. Till then, keep coding, keep developing, keep learning, stay healthy and stay productive.

Comments

Post a Comment

Popular Posts