Frequently asked questions of programming.
• 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?
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?
Is NodeJS better than Django?
Before comparing let's talk about what is NodeJS and Django.
When It comes to performance, Yes.
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 (19)
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.
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
You are welcome.
Well written and very helpful roadmap.
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'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 💯😊
I'd like to bring some precisions:
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
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.
Just do both really, they are both easy. Helps you find more jobs too.
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.