How to Become a Web Developer in 2020

Ben Awad
11 followers
This is the approach I would take if I were to start over from scratch and learn to become a web developer. I go over the resources and technologies I would use.
----
Follow me online: https://voidpet.com/benawad
#benawad
In this video, I'm going to go over how I would start learning web development today
if I had to start from scratch and I had zero knowledge.
So I'm going to go over the resources I would use
and what things I would actually learn to get to where I am today.
So this is also kind of the advice I would give if a friend came up to me and asked me
how I could break into web development,
what should I start doing, or what are the things I should start learning.
So to start off with, assuming you have zero knowledge whatsoever of programming,
I would start with an introductory course.
Now there are a bunch of free ones that are from top-notch universities that are online.
So no matter where you are in the world, you can take advantage of these.
So one of them is called CS50.
This is by Harvard.
I've heard great things about this course.
I've also listened to some of the lectures and enjoyed them a lot.
Now this is not the only one available and really the only thing that matters
when you're picking these is are you interested in the lecture
and are you interested in the assignments and stuff they're giving you.
Because there's a bunch like this that you can take.
Another resource is Coursera and they have a ton of courses on here that are similar.
It doesn't really matter which programming language you start with.
Just pick one.
Pick one that you like actually working with at first
and switch things up if you're not enjoying the lecture or the assignments.
So after completing one of those courses,
you're going to have at least one programming language underneath your belt
and you're going to start thinking like a programmer.
And you'll also find out if you even like programming at all.
So assuming you do and you want to move on to the next step,
this is what I would recommend.
Go into Free Code Camp.
So this is a website where you can actually start learning
some of the web development technologies.
So it is a free online coding boot camp
and they have these different certificates that you can do.
Now personally, I would recommend actually starting with this one right here,
the JavaScript Algorithms and Data Structures Certification.
Because this is useful whether you,
no matter like what part of web development you actually want to do.
And we're going to talk about the decision you have to make in a second.
So the nice thing about this is it's going to teach you JavaScript,
which is a crucial language if you want to do web development
and build websites or do anything in this space.
And it also includes algorithms and data structures,
which I think is absolutely crucial
and is the difference between a basic programmer
and a software engineer who can actually start to design
and think about architecting solutions.
Now I would even recommend probably taking
a Algorithms and Data Structures course.
Personally, I took this one right here.
This is a Princeton's Algorithms course.
I thought it was pretty good.
And yep, you can take it for free on Coursera as well.
Once you finish the JavaScript certification,
then you're going to want to ask yourself,
do you like designing the UI or the styling at all of websites?
If that sounds like something that'd be interesting to you.
Because at this point, you can pick two types of development and web dev.
You can either pick front-end or back-end.
Front-end is designing the UI and what hover effects happen,
what happens when you click buttons and that sort of thing.
Whereas the back-end, you're handling the database
instead of the behind the scene things.
So if you have any inkling of design aspirations in your blood,
you're probably going to want to pick front-end at least to start with.
For me, I had zero interest whatsoever styling things or designing things.
So I actually started with back-end.
But we're going to start and pretend you want to do front-end.
Then we're talking about what you should do if you want to do back-end.
So assuming you're interested in styling the UI and building the UI doing front-end,
I would recommend from here starting with the responsive web design certification.
So here you're going to learn HTML and CSS,
and that is basically the structure of websites.
So after you do this, I would learn a front-end JavaScript framework.
Now, FreeCodeCamp has a certificate for this,
but I actually wouldn't recommend this because it includes Bootstrap,
jQuery, and Sass, which I don't think are very necessary to learn.
You may end up using them at some point, or you just may never use them.
Personally, I've never actually used Sass and jQuery, and I've been just fine.
Also, they do include React, which is a front-end JavaScript framework.
That's good.
But they also include Redux,
and this is not really something I think is necessary to learn with React these days.
I think in 2020, we are going to see less Redux in general.
Now, with that said, what do I recommend doing instead?
Well, I would either learn React, Angular, or Vue.js.
So these are the top three front-end frameworks right now,
and I don't think it really matters too much which one you actually pick right now.
A lot of people dwell on the pros and cons of each one.
I recommend just sticking to one, pick one,
see if you like it.
If you don't, switch to another one.
It's not really a big deal.
Personally, I've been using React.
I've been liking it, and I've stuck to it.
Now, each one of these has a tutorial on their website,
and I would just recommend starting there.
So take the tutorial for React, or Angular, or Vue, and start there.
Now, no matter what you actually end up picking for your front-end framework,
I would start building projects with it once you learn the general syntax of it.
And for that, one option is to go through the front-end library's projects
that they have for that certificate.
So this is a section I would recommend doing.
For this, you can actually just click on a project you want to do,
and they have details on ideas, and features, and user stories of what to actually build.
So that's what I would do if you wanted to be a front-end engineer.
And once you can actually start building some of these projects yourself
with one of these frameworks,
then you're ready to actually start getting a junior dev role.
Now let's talk about back-end engineers.
So once you go through this JavaScript course, or certificate,
this is where you have a small choice.
Because for back-end, you can actually do this with a number of different languages.
But personally, I would actually recommend starting with JavaScript on the back-end.
And the reason for that is, it's really handy to use it in the back-end
if you also want to use it in the front-end.
So if you ever want to do any kind of full-stack development,
which just means you do both front-end and back-end,
you build the UI and also handle the database and all that fun stuff,
then I think JavaScript is a no-brainer and the way to start.
So with that said, this is the course I would start with.
The APIs and Microservices Certification that FreeCodeCamp has.
And you'll learn Node.js and Express.
The only thing I don't like about this is they teach you MongoDB first.
I think MongoDB is helpful to know,
but I think more importantly, knowing SQL or SQL is important.
So after you do this, you'll learn how to build an API.
I would highly recommend learning a SQL database like PostgreSQL.
Now, unfortunately, I actually don't know any good courses for this.
I didn't actually do any myself.
I kind of just learned from a hodgepodge of Stack Overflow comments
and a little bit through university.
So I would just Google PostgreSQL tutorial and pick one of these.
Now, let me know in the comments below if there's a specific one you do recommend.
And once you learn PostgreSQL and SQL,
it would be a good exercise to actually go back
to some of the projects you built with Mongo
and now try integrating PostgreSQL in there
and seeing what some of the differences are for actually building it.
And once you feel confident building out an API
and one of these databases you feel strong in,
in my opinion, then you're ready for a back-end developer role.
So no matter whether you choose back-end or front-end,
here are a few other things that I recommend learning.
The first one is Git, which is a version control system.
Just a way to basically keep track of your code as you change it.
And then VS Code is a editor where you can actually type out code
that is very good and is very popular for web development.
Now, I also want to mention some things to avoid.
So these are buzzwords and popular things right now,
which I don't think are necessary to learn right away.
So the first one is TypeScript.
Microservices, GraphQL, Serverless, WebAssembly, and WebComponents.
So you may run across these technologies or hear people talk about it.
Like, I love me some good TypeScript or GraphQL.
I'm a big fan of them myself.
But when you're first starting out and becoming a front-end or back-end engineer,
I highly recommend staying away from these
because they are not necessary at first.
But once you become comfortable actually building stuff,
then you may want to explore some of these technologies.
So I asked on Twitter if anyone had any questions related to this topic.
And so I'm just going to go through and answer a couple of them now.
So the first one is how to choose which stack to master.
For this, what I like to do is I just start with technology and see if I like it.
So for example, I started with React.js.
I ended up liking it, so I just keep working with that.
And then I will branch out if I don't like it.
And basically, I do this for every aspect or every library that I'm using.
So for example, one library that I've used in React that I didn't like is Redux.
I started with Redux.
I tried it out because it was the most popular.
I used it for a little bit.
I didn't like it as much, so I transitioned and used something else.
And then I just rinse and repeat until I found a tool that I am happy with.
Then that becomes the stack that I am mastering, if you will.
Question two.
Would like to ask how do you stay motivated and have fresh ideas for projects?
I just finished a boot camp, and I'm in a bit of a block.
So I guess there's really two things that I do.
So the first one is I like automating things in my life
whenever I'm thinking of ideas for projects.
So for example, one of the first things that I did
was I made programs to automate my math homework for me so I didn't have to do it.
So I just look at places in my life where I don't like doing it
and then I build a tool to do it for me.
So that's how I think of fresh project ideas.
As for like, if you're getting into like a rut, this happens to me,
is usually I get into a rut when I'm not enjoying the technology that I'm working with.
So a lot of times I'll do is I'll just switch it up.
So for example, for a good amount of time, I was doing data science stuff
and I felt like I was a little bit of a rut.
I wasn't enjoying what I was doing.
So I just totally switched the direction I was going
and started trying out web development things.
I guess I'm kind of talking about web development stuff in this video.
So for example, if you feel like you're not enjoying React as much,
you feel like you're feeling like a little bit of a block with it,
switch it up, go try Vue, go try Angular, switch it up.
Question three, coding school or no coding school?
Where I stand on this is definitely first try to program yourself on your own
and then assuming you like it, then you can make this decision.
So assuming you do like it, what I do is I continue to try to learn on your own.
If you can learn on your own, then I don't think there's a big reason to go to a coding school.
Now, assuming you're having trouble with just motivation
and staying on the task of actually coding, then I would go to a coding school.
I think it helps have motivated and to work with a group of peers and that sort of thing.
Question four, how slash what you would learn at different time scales,
e.g. three months roadmap for six months roadmap?
I don't think I would really learn anything too differently.
The main thing is the frequency you'd have to learn.
In general, I think it's a really good idea to spread out your learning for programming.
So for example, I think it is better to program every day for an hour
than it is to spend one day programming for seven hours.
So I would spread out your learning like that.
And if you only have three months, maybe you do three hours every day.
And if you have six months, maybe you do half an hour each day or etc.
Okay, so the last question, assuming a non-scholastic track,
I often wonder how deep I should go into teaching CS concepts.
What matters? Where do I source it from?
And when in the curriculum do I introduce it?
In my opinion, I think the biggest bang for your buck is going to be
algorithm and data structures type topics.
And where to introduce it?
In my opinion, once you start learning JavaScript or other programming language,
once you have a good grip on the syntax and you start creating little projects with it,
after that, I think is a good time to start introducing some of these concepts.
And that's roughly what they do in university too.
And I think it's a good sequence.
After you do some introductory programming stuff,
you then can start doing some data structures type stuff.
Now, how much data structures should you do?
I think as a bare minimum, you should know how to deal with arrays, stacks, queues,
objects, slash dictionaries, hash sets, that sort of thing.
You should know what a set is.
You should be able to do stuff with binary trees as just a strict minimum.
I think where you stop is when you start getting into more niche CS topics,
which just come up less and less.
The algorithms, you just don't see it as much.
I think when you start getting into stuff like Dijkstra's,
it starts to get...
Although I think that's a really good one to learn.
I think once you get into that point,
you can only go so much further until it's getting a little too academic, in my opinion,
and just not helpful.
And where should you actually learn these things?
Like I said earlier in the video, I think the Coursera course that I took
from Princeton, that algorithms course is good.
But there are a ton of universities that have free online classes now
that teach those things.
So find one that suits your needs.
So that's how I would start learning web development.
I'll use this moment to plug my Twitter.
If you're not already following me, go follow me at twitter.com slash benawad.
And maybe next time I'll be answering one of your questions.
