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.
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.
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.
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 and accompanied github repository.
Thank you for your valuable time.
Top comments (18)
Check out Roadmp.sh and the accompained GitHub repository:
kamranahmedse / developer-roadmap
Roadmap to becoming a web developer in 2020
Below you find a set of charts demonstrating the paths that you can take and the technologies that you would want to adopt in order to become a frontend, backend or a devops. I made these charts for an old professor of mine who wanted something to share with his college students to give them a perspective; sharing them here to help the community.
Special Announcement:
We now have a YouTube Channel
I plan on covering the roadmaps and put more content there
Subscribe to the channel.
Purpose of these Roadmaps
Edit: To include the original comment I made elsewhere rather than embedding it.
Thank you so much
Much appreciated
You are welcome.
I'm pleased that you liked it. Just learn any one of them ur choice ... Get a job in that and then try different techs for fun... I'm not a senior developer but choices of stacks or major decisions are decided by leads.. so don't bother bout that just learn what you like.
If you have to deploy a site on a shared server (let's say because the client wants the cheapest hosting available) and you know that the web app is a small and for a few employees, then often you will have to rely on PHP. There's some nice frameworks for PHP like Slim, Lumen, or CakePHP that can help you set up traditional web apps or REST APIs.
Thanks for adding that... Much appreciated 💯😊
Well written and very helpful roadmap.
In my experience, it took me quite some time to learn about all that jazz: learning javascript, python, using rest apis and surpassing the need to use wordpress.
A roadmap is very valuable and I think the lesson I learned is to build one each time I want to start a project.
"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."
Both could be engineers - just because you're designing a product, you can still be an engineer of course. I'm not even sure if software engineering even exists, but it really depends on how you are approaching the notion of engineering. See my comment here, I think I'm going to expand on this in the future in a post. :)
"Is NodeJS better than Django"
You said you're a CS graduate, trying to educate beginners. Why are you comparing apples and oranges then, which is totally confusing?
NodeJS is a JS runtime engine with some OS bindings to do I/O. Django is a Python framework.
This whole comparison sounds so confusing and useless on the topic.
You can just replace "Django" with "Python"... or actually take a JS full-stack framework like Sails or Nest and compare them with actual Django which could also make sense.
"Django is highly scalable as the caching of applications is quite easy and can be done using tools like MemCache."
You don't scale Django. You scale the Python processes. Memcached (I guess you are referring to that) can cache anything, you can cache pages served by Node as well, as long as you specify the cache lifetime for your responses (e.g.. API responses or SSR web pages). There's a memcached client for Node.
You are giving out some nice "getting started" advice here... just please be precise because otherwise you'll just add to the confusion that people experience when starting out as a developer.
Thanks for the insights... I'll update it
I'd like to bring some precisions:
You can't "learn" a paradigm. OOP is a way of thinking and organizing your code. The implementation of a paradigm can be very different from one language to another. Take Python, JavaScript and Golang for instance. Even if they can have keywords in common, the implementation. Hence, knowing "OOP" or "Functional" or whatever doesn't mean... much.
Twitter use mainly Ruby on Rail, mixed with other languages for their backend, not NodeJs. Paypal use mainly Python. And so on. Anyway, these companies use a whole stack of technologies, not only NodeJS or Python or whatever.
Other than that, you make a lot of assumptions in there. It's not because "major" companies use this or that tech that you should, too, especially if you're not as big.
Language choices is mostly based on the library and tooling they have; most languages are Turing-complete, which means you can implement whatever algorithm you want with them.
My next blog will be about Dunning Kruger effect and imposter syndrome among developers it will answer few of your questions.
It was really an informative read!
Thank you brother
Just do both really, they are both easy. Helps you find more jobs too.
I don't think it "easy". It's easy to make it work, maybe, but it's not that easy to maintain on large codebase. JavaScript has a pretty... weird type system, too. If you work with them in big corporations with big codebase, you won't call that easy, I suppose.
In that context, yes, large codebases are pretty hard to manage, but I could say that about any language if the code isn't adhering to a standard architecture like MVC or something similar. I was just talking about syntax and ease of use.
According to your Venn diagram if someone is writing python, they are not "software engineer"
Thanks for clearing this out
Lol I know that's quite biased 😂😂
Python devs are software engineers indeed. No offense.
Great portfolio man.