RoadMap of Coding for beginners.
Tags: python, javascript, datascience
Published: 2020-05-03 18:22:48

##Frequently asked questions of programming.
• Should I learn Python or JavaScript?
• Data Science vs Web Development vs App Development, which one should I choose?
• Why should I learn Web Development when there are popular Web Developing tools like Wix & WordPress?
• Is NodeJS better than Django(python)?
• All these points made me confused 😕 about what should I do?

So before starting with the questions Here's something about who I am and What makes me qualified to answer such questions?
I'm a gradiot (an idiot who did his graduation and who has wasted money and time getting zero skills from college while there's an actual opportunity to learn everything online for free) the word coined by Varun Maya (Founder and CEO -Avalon Labs). Yes, I am a CS graduate. I have a great desire to make things, you might know the feeling of IT'S ALIVE if you have developed anything. During my college years I came across multiple technologies from Arduino to Raspberry pi, from PHP to JavaScript, Python, flutter you name it. I tried to learn and understand various technologies not due to college curriculum, but due to my desire to learn more and google 😎. Throughout my journey I encountered many questions and here are some of the questions I think will help you guys. Hope You'll like it.


###Should I learn Python or JavaScript?

Before I start with why Python🐍 or JavaScript⚡. Let's talk about programming in general. Programming is a way of thinking and implementing the logic you create in a language that machines understand. Now there are styles or you can say structures of programming aka programming paradigms like Object-oriented programming (OOPs), Functional programming, procedural programming, etc. As a developer, you should at least know one of these paradigms. The more paradigms you know the broader choices you'll have for creating efficient and flexible code.

![Image of JS vs Python](https://dev-to-uploads.s3.amazonaws.com/i/r6zclhzspu5333ln1su8.jpg)

Back to the topic, Python and JavaScript both support OOPs and functional programming along with other paradigms.
JavaScript is considered as the king of web programming that is used to create highly functional and dynamic websites. It has a vast ecosystem of libraries and frameworks to choose from like ReactJS, Angular, and Vue for front-end and NodeJS for the backend. You can also create native Apps for phones using React Native in JavaScript. So, with JavaScript, you can develop full-fledged websites as well as mobile applications. Whereas, Python is Best-suited programming language for Machine learning and data science. It has multiple Libraries like Keras, TensorFlow, Scikit-learn, etc. Along with that, Python is easy to use and has large community support. You can also create websites in python using frameworks like Django and Flask. You can also create apps in python as well using Tkinter, kiwi, etc. Both languages have powerful rounding development.

TL;DR Here is my perspective on this topic. As a developer, everyone must know basic web development since Machine learning and Data Science is a service-based skill While Web and App Development is a product-based skill. Hence, Data Science and Machine learning people are called engineers and not developers. Notice the very subtle difference between an engineer and a developer. Also, you know Mark Zuckerberg, Elon Musk, well they started with web dev and created their products. Ask yourself what you want, define your goals, and then choose wisely and always bet on JavaScript.

###Data Science vs Web Development vs App Development Which one should I choose?

If you are reading this, you might be knowing very well the pay of a Data Science and ML engineers as compared to a Web Developer or an App Developer. All this huge burst about AI is the future and might very well draw you towards thinking that even I should learn Data Science for a huge package and a job opportunity. Here's the ugly truth, it's hard to get a job in Data Science since companies will prefer a person having the Domain knowledge and usually majoring in Mathematics and statistics, you should at least have Masters or Ph.D. for getting a job in this field. For Example- A fintech company will choose a CFA or Finance major rather than a CS engineer and teach them Data Science since python is easy and it's the efficiency that counts. So, the person with finance knowledge is well suited for the job. However, As I said It's hard to get a job, not impossible. Some CS grads have got into data science and are earning handful. All you need to learn is python and some libraries and mathematics. Now, As I said before, data science is a service-based skill you are not technically a developer you're an engineer who is figuring out solutions for a given problem. On the other hand, being a web or app developer means developing products. You can create applications and websites and release them to earn using ad revenue, selling them, or even creating and maintain them for companies that way you don't have to rely on companies to give your services. I suggest you to first, learn web development and then Data Science while earning through your web dev skills. That way you will have a decent skill set, portfolio, and a budget to start experimenting into the world of machine learning where processing power is everything.

 ![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/lems3ugbewwq1rqa04kv.png)
###Why should I learn Web Development when there is a popular Web Developing tool like Wix & WordPress?

WordPress and Wix are popular content management systems. They are best for creating small websites and blogs. Yes, they made it easy for anyone to create websites but that doesn't mean web developers' jobs are gone. You can't create Amazon, Netflix, Twitter, and large fully functional websites using them. So, if you are trying to be a low-level web developer, you can pretty much say goodbye to developing websites. You can google top trending tech skills in demand and you will find AngularJS, ReactJS, NodeJS developers in demand. Not only websites but you can also create native applications for android and iOS using React-native and games using ThreeJS a JavaScript library. Possibilities are endless, all you have to do is START. I'll suggest you start with MERN stack just my personal opinion but you can research and pick whichever stack you like.

![NodeJS vs Django](https://dev-to-uploads.s3.amazonaws.com/i/4h5b4o74hwr85t6io8l8.png)
###Is NodeJS better than Django?

Before comparing let's talk about what is NodeJS and Django.
Node JS is a JavaScript runtime taken out of the client-side browser environment which uses OS binding for I/O, and Django is a Python framework. So comparing both is like comparing apples with oranges. Though let's have these points clear.
When It comes to performance, Yes.
NodeJS is faster than Django or in general python since it's written in C++ and is a JS runtime. You ask why? because JavaScript is faster than python because it works on an asynchronous non-blocking object model.
When It comes to scalability, No.
Django or python, in general, is highly scalable as the caching of applications is quite easy. Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.
With the introduction of npm which stands for the Node Package Management system, the open-source community has been boomed towards NodeJS since managing packages and dependencies has never been that easy. Also, npm is far better than pip when it comes to package management, you can research about it.
Here are some of the big fishes and the backend tech they preferred for their development.
Uber, Twitter, eBay, Netflix, Duckduckgo, PayPal, LinkedIn, Trello, Mozilla, GoDaddy are some big names using Node JS as their backend technology.
Pinterest, Instagram, Eventbrite, Sentry, Zapier, Dropbox, Spotify, YouTube are also some big names using Django as their backend technology.
Notice the trend here, Uber, Twitter, and Netflix are some of the applications that priorities performance whereas Pinterest, Instagram, YouTube requires a lot of space and thus scalability is their priority.
So, the choice is upon you what you want scalability or performance. 

###All these points made me confused 😕 about what should I do?

First, ask yourself what do you enjoy doing. Do you like to create games, apps, websites? What intrigues you? What sparks your curiosity? I have listed some of the questions depending upon the choices you make.

• GAME Development – If you want to get into the game development industry, you will have to learn C# or C++ for hardcore game development. You can create web games using ThreeJS or any other library but you won't be exactly a game developer.

• App Development – You can create an application using JAVA for android or Swift for iOS. Further, you can use React-native or Flutter for creating apps that would run on both android and iOS. If you want web apps, you can use Ionic as well.

• Web Development – There are many stacks (a set of technologies that suits well with each other) you could choose to learn like MEAN stack, MERN stack, LAMP stack, etc. You can create a website from WordPress or Wix as well. Develop an interactive portfolio for yourself with the stack you find interesting.

• Data Science, ML, AI – Start with python and take courses on data science, mathematics, machine learning, from popular websites like Udemy or LinkedIn. Start competing on Kaggle and maintain your Kaggle profile.
Second, do yourself a favor and start learning algorithms and data structures in the language that fits your answer to the above question.
Third, Start applying for internships with some projects and try to make an exemplary portfolio. Maintain your GitHub, LeetCode or HackerRank or any other profiles which you can include on your resume.

I hope this might help you; I tried my best to answer some of the questions that I've faced throughout my journey as a gradiot. If you feel that I'm missing something or something is wrong please feel free to correct me in the comment section.
Also, check out [roadmap.sh](https://roadmap.sh/) and accompanied github repository.
Thank you for your valuable time.