Transcripts
1. Class Intro: Hello and welcome. So you've decided you
want to learn to code. Let me tell you
that it's probably the best decision that you've
ever made in your life. Coding is one of the most
amazing skills in the world. Not only can you build
projects to improve your life, automate boring
tasks, whether at home or at the
workplace, best of all, learning to code and build new and amazing career that
is not only well-paid, but also gives you
great work-life balance and lots of extremely interesting
challenges to tackle. But most people who try to run the code, unfortunately,
never succeed. Coding is a very
particular skill and it's not easy to do. That's why I made
this class will teach you everything I wish I knew before I started teaching
myself to code online. This class is perfect for you. If number one, you haven't
properly started learning to code and you don't know
what star or number two, if you have already started, but you don't feel
like you're making progress and you feel like, you know, properly retaining all the stuff that
you're learning. This is not a programming
class per se, but this is the complete
guide to learning to code in line that you
should have a width you during your coding journey. In the first part of the course, we will address the
four main factors that you need to keep
in mind when you're learning anything in
order to learn in the most effective way of talking about how
to stay motivated, how to stop procrastinating,
and most importantly, how to enjoy the journey along
the way to keep you going. The second part of the course,
we will delve deeper into the specific languages I recommend you start
with as a beginner, as well as my reviews of
the best resources and courses that you
should start with and how to use them effectively. And lastly, we'll talk
about how to build a really cool portfolio
projects to finally get a job. I made this class because I see so many people wanting
to learn to code, wanting all the amazing benefits
that coating can offer, but simply doing
the wrong things which leads them to
get demotivated. And so they end up quitting
before they get there. So let's learn to code together. I'll be excited to see
you in the first lesson.
2. Am I Smart Enough to Learn to Code?: Welcome. You might still be having some doubts because
there's a beginner. I know that programming
can seem pretty scary nowadays whenever
I tell my friends that I've taught myself
to code and all this, they always assume
that I must be really smart because I was
able to teach myself to code. And while that's flattering, that is just something that's not true at all to larger code. You don't actually
need to be smart. Most people think
that coating involves some very high-level
complicated math. And it's like so hard
that you need to have this like crazy math wizard
mind to be able to do it. And that's really not
true at all. That's it. Coating is actually not
about maths at all. Well, we first need
to understand is the difference
between programming, Computer Science and by the way, programming and coding
are pretty much the same thing we will be using those two terms interchangeably, a programming is simply giving it a computer
logical instructions. None of this actually involves
a complicated math at all. The part where you do need
to be pretty smart in the domain of very
theoretical computer science, where you're thinking about the theory of algorithms
and maybe you're getting into like AI or
machine learning to do that. Sure, You need to have
a good math background, but simply to write programs, to code, all you need is some very basic
logical thinking. So which will naturally
learn as you go through this class and you're
beginner resources. So if you say I have any fear about whether you're
smart enough, whether you will be
able to learn to code. You need to stop because
anyone can learn to code. I'm not a genius at all. I'm literally the most
normal guy in the world. We just figured out
the right things to do at the right times. And hence I was able to do it. And if I did do it, you
can do it too. Okay. So now that we've gotten over the fear of, am I smart enough? It is still true that coding
is not easy to learn, but it's not hard in the sense that you need to
be really smart. It's just hardly
the sense they can take a lot of time and you need to really understand
how to learn it properly. It is really different to
learning many other skills. That is why the next
slides we will get into the proper learning
techniques of what you need to know
during your journey. So I'll see you there.
3. The Learning to Code Equation: Let's talk about the
learning to code equation. For this, we'll be using
an analogy of a ship is sailing through the
dangerous waters of pitfalls and mistakes that you can make when learning
to code towards the destination of becoming a competent programmer to sales of this destination
successfully, you need four main factors. First of all, is that the y, which is the king of the
ship that sets the purpose and the reason why you are trying to get
to your destination. The first mistake
that people always make when they're
learning code is that they never stopped to think why they're actually doing it. And I believe this is one
of the biggest reasons why people end up getting the
motivated and quitting. The second step is discipline, which in our example here, he's like the actual ship. This is the core that is needed to keep you going through
those hard moments. Or he will think
that in order to learn something, you
need motivation. But the fact is that you're not always going to be
motivated to what you really need is discipline over section
where we talk about this. We'll talk about
exactly how to build. Next you have the
methods purging this metaphor is like
the captain of the ship, while the y is the grant mission that the king who commissioned
the ship has given you. The captain is the one. Whereas to actually think about the practical things of how do you actually achieve
this purpose of getting your destination? And the way you do that is by
adopting the right habits, the right strategy, and the right method of studying those. Actually, in the brief section
where we talk about this, I'll be teaching you
how to do exactly that. Lastly, is the practice, the actual coding and
how to do that, right? And in this metaphor, these are like the work
hours of the ship, the ones who do the day-to-day
work, the grunt work, to actually make the ship
move towards the target. And you're, when
you're learning to code the actual practice, the actual doing
it is what makes these concepts ingrained
into your brain. But talk about a couple
of learning techniques that really emphasizes
and really allow you to start practicing rather than later is one of
the biggest mistakes people make is that they don't start applying the things that
they're learning early enough. But then this is the problem
of people not knowing how to do that. So
that is the plan. And in the next four sections, we will be delving deeper
into each of these part in building your learning equation
and your learning plan. And after that, we will get into the specific coding resources,
project, and languages. But you will then be utilizing
this plan going forward. But I think these next
four sections are probably the most important
part of this course. And something that you
need to have along the way wherever you end
up designing afterwards. So make sure you pay attention.
4. Start with Why: He's right here is probably
the most crucial factor that will determine
whether you will end up sticking to learn to
code and succeeding or quitting after two weeks,
like most people do. And it is the why, why do you want to
learn to go Seriously? Stop there for a moment. Stop this video and think, Why do you actually
want to let the code, you really need to
think for yourself, what is the purpose? What is the grand goal that you are going towards
with the scale? I can tell you example from
my previous life when I was trying to learn a bunch
of different scales, e.g. at one point in my
life, I was trying to learn Chinese like with most
girls in the beginning, I was really excited to learn Chinese, but after
a couple of weeks, I simply got demotivated and
I really, and keep going. But it really just,
I just couldn't figure out why that was because normally I
am a very discipline and a very motivated person, but we Chinese it
just simply wasn't working at the
conclusion I came to. Is that the reason why I wasn't
able to stick to learn in Chinese is because I didn't
have a strong enough purpose. Some of the reasons to learn
a human language could be that you want to
live in China or you want to communicate with your Chinese co-workers
and maybe you want to learn some
books in Chinese. But none of these really
excited me at all. So at the end of it,
whenever I needed to start learning Chinese, when I didn't feel like it, I just couldn't get
myself to do it because there wasn't a
strong enough reason, the strong enough purpose
to keep me going. That is why, when you're
learning to code, if you don't figure out
the purpose, the reason, the mission, before you start, you really don't even
know where you're going. Because the ship example, you can probably see that
if you don't actually decide where we want
the ship to go, you'll just end up
sort of floating there and not really
going anywhere. So really stopped to
think about the why, the reason over
the first part of the class project, I
want to just stop, take a piece of paper and
write down the reason or reasons why you want to learn the color coding
is not easy to learn. If you don't do this, you will not be able to have
to motivation and discipline to push through
those hard moments because it will get hot. So write down your why and then throughout the rest
of your journey, whenever you don't feel
like putting in the work, open this page and look at your reasons are just
remember them in your mind. And I promise you you'll
be able to get work done. So if you figured out
your wife already ahead of a lot of
different people, but there's still a
lot of things you need to do about figuring out how to actually push through
when things get hard. So in the next section,
we'll delve deeper into the discipline factor of the learning equation
and how to be able to do the hard work even when
you don't feel like it.
5. How to Be Motivated to Learn to Code: Motivation is the
thing that most people wait for before they
take any action. Most general thing
that motivation is good is something that
you want to achieve. Something for motivation
is actually bad. Who's, What is motivation? Motivation is essentially
just an emotion. It is one part of your
brain that is telling you what it wants you to do
at any given moment. But the problem here is the side of your brain has control. This emotional of motivation
is not telling you to do the things that you
should actually be doing for your
long-term benefit. The way I think about
this is that you are here and over here
are your goals. And in-between,
there is a bunch of actions that needs to be
done for you to get there. Let's say for the sake of
this example that you need to take 10,000 actions, whatever that means to reach, please go to bridge this gap. But if you wait for motivation, you're actually only
end up doing pretty like 20 per cent of
all of these actions. Because the fact is that you are never going to
always be motivated. You're probably only
going to be motivated like 20% of the time, which leads to the fact that
you only end up taking like 20 per cent of the actions that you need to take to what
we need to figure out. Is there a way for us to do
the rest of this action, the rest of these 8,000 actions, even when you're not motivated, we need to essentially run to bypass is emotion of motivation. The best way to think
about is that as soon as two sides of
your brain, on one hand, there's this sort of the brain which we'll be talking about, is controlled by motivation, that's controlled by emotion. And this side of the
brain in sort of evil and pleasure seeking. And it always is just telling you to do the things that will give you most pleasure at
that particular moment. So it's a very short-term
focused part of your brain. And for most people,
this is the side of the brain that controls
pretty much all your oxygen, which is not very good for you. But then you've got this
other side of the brain, which is really thinks
about the long-term, is really like the rational, responsible guy who's
telling you what you should actually be doing rather than what you want to be doing. But unfortunately,
most people's brain, it is this emotional, short-term brain that is lot more powerful
because they have a very potent weapon
called dopamine. Dopamine is this hormone
essentially gives you pleasure whenever you
feel motivated to something, wherever you want
to do something, it is because you think that that action is going to
be giving you dopamine. Dopamine is all about
the short-term, e.g. eating sugar, maybe
listening to music, all of these things
give you dopamine in the moment and your
brain is addicted, dopamine, it once
more, dopamine. So whenever this short-term
side of your brand can tell you that doing something we'll
give you dopamine. You're always more
inclined to do that. Now, sometimes the right things will give you dopamine as well. Like doing work also gives you a dopamine and also
it makes you feel good. But most of the time they
won't because most of the time you always
have some things, some actions you can
take that will give you more pleasure in the moment. But these actions are
almost never the actions that will actually lead to
you reaching your goals, reaching your purpose, and
getting long-term benefits. So that is why you
need to stop listening to these motivational
side of your brain. The most important
thing you need to learn is to stop seeking short-term gratification
and instead start seeking long-term
gratification. If you learn to code, if
you're doing successfully, your life will be
so much better. In the long term, you're going to have so much more fulfillment
when you've mastered this really hard
skill and you can do all the cool things that
you can do with it. And probably you will also
have a really great career which will generally improve
your life in the long term. But to get here,
you first need to do the hard work
and to adopt this, to have a discipline
which essentially just means listening to this
rational side of the brain, always thinking, what is
the long-term best thing for me to do right now? And if you can't do this
by sheer willpower, there's a couple of tricks
that you can do to try to cheat this pleasure
seeker short-term brain into thinking that what your
long-term brain is telling you is actually what will give you more short-term
pleasure as well. First of these is
that you're going to try to make the action
more pleasurable. E.g. when you're
learning to code, listening to some really
good music that you enjoy, and then also give you a lot
of pleasure in the moment, which makes the
motivational side of your brain look forward
to the action more, which will make you more likely to actually start doing it. The second idea is gamify
the system somehow, if you're someone who enjoys video games like I used
to when I was younger. Thing of the goals
that you're trying to reach in your
programming journey. Sort of like game achievements, like trophies that
you're trying to pursue. The last thing is to
shorten the feedback loop, which means doing things in
such a way that you're seeing the fruits of your
learning much sooner. Wandering mic coating or learning and skills
is that given, take a very long time
for you to actually see the results of your
hard work as well. One of the things that I emphasize the most on
my YouTube channel e.g. is building projects that
are actually useful for you. So as soon as you can start applying your learning style, building practices, projects, and think about
problems you might actually want to
solve recoding, e.g. a lot of my automation
projects try to solve this exact problem. And we'll also be talking
about these kinds of projects later on in
the course so that you can show them the
feedback loop gives you this reward of your
hard work much earlier. So it doesn't so much things
you can do to sort of trick your short-term
brain into thinking that you should be
learning to code and therefore giving
the motivation. But most of the time, what you specifically
need to do is not even think about
motivation at all. To forget motivation, simply do the hard work even when
you don't feel like it. That is how you will build
a strong ship that will take you through
all the pitfalls that most people will fall into, like quitting because
they're not motivated.
6. How to Stop Wasting Time: So this Thursday, this
first part of the course, we'll discuss how to build the right habits and
the right system, as well as the right
schedule for you to learn in the
most optimal way. The first and probably the
most important idea that you need to understand
about learning effectively. It's only called Deep Work. The way most people work
is using shallow work, which means just
very distracted work where you have
your phone around, you're probably somewhere
over here and you're getting notifications or
someone messaged me and let me check this out. Then you put it away and you
try to get back to work. But this is actually
an extremely ineffective way of learning. I think that if you're just
checking your message for like 5 s and you'll get back to work that this
is actually fine. But the way this actually works, this dark if you are distracted for even 5 s from your work, is sort of reset your brain in such a way that
it's gonna take you up to 15 to 20 min to
get back into focus. And there's actual
research on this. So that's why it's
critically important, is that when you're working, you're only focusing
on your work. You're not allowing any
distractions for any reason. You're closing your door,
no longer speak to you. Putting on some headphones
for someone like white noise. If there's noise around you, whatever you can to set
these sort of one-to-two, our Deep Work box into your calendar where you're only allowed to
focus on your work. If you do this during
this 1 h two hour blocks, actually achieve more than what someone else might
be able to achieve. Who's doing 6 h or some very
ineffective, shallow work. That was a book that I
recommend you read about this. It's called Deep
Work by Cal Newport. And the author of this book is actually a computer
scientist himself. But that's sort of
where this whole idea of deep work started from. One of the things that are
the most successful people, the people who actually master very hard skills,
very fast master. And the other great
thing about Deep Work is that it actually
requires you to spend a lot less hours
working than you think. You might think that to learn
to go in like six months, you need to spend like six
to 8 h every single day. You've seen all these
YouTube videos that go like, oh, how I studied
for 12 h a day. But if you're actually
studying effectively, It's actually pretty
impossible to do six or eight or 12 h. Because
when you do deep work, research has shown that the limit for especially something
cognitively demanding, like learning to code, it's
only something like 4 h. So if you have the time doing it to two hour blocks of deep work, that will get you up to 4 h is pretty much the maximum
that you can do. And beyond that,
trying to do even more can even be counterproductive to figure out a system for
yourself where you can place these deep hour blocks is religious, depends
on your schedule. I like to get at least
2 h in the morning. Maren first wake up
because when you wake up, especially if you've
got good sleep, which is really important, you're going to be
allowed energies for me, this is the most
optimal time to learn, but you need to figure
out for yourself, when do you feel
you're the most alert? When do you feel like you're most able to
get things done? And so definitely experiment
with trying to study at different times of the day and figure out what is the
best time for you. And it's super important. Take breaks in
between and actually let your brain and
recharge and recover. Your most important weapon when studying effectively is focus. And focus is sort
of like a muscle and it works the
same way as training your actual muscles
that if you tried to do like 100 reps of bench press, you probably know that
does not even the most effective way to do it, the most effective
way training muscles, it will do just enough
to induce a response and then use the rest of
the time to just rest, recharge for the next session. And that is exactly
how you also need to think about your focus muscle. And so while we've
covered so far, is first of all, you need to
start adopting deep work. And secondly, using a
calendar to schedule in these deeper accessions
in the time that it makes most sense for you and
for your schedule for me, 2 h in the morning than 2 h after lunch and
then after dinner, if I still have energy, I can try to do a bit more, but at this point is
pretty shallow work and somebody that's not
even that effective. And so a lot of the
time I literally just rest or the rest of the day and then make this even
more effective. The other habit they
usually try to adopt is every morning instead
of daily goals of what you want to achieve that
day because you have a problems have to complete for the course that you're
doing in the morning. Right down on your notes that today your goal is to
finish that problem set so that when you get
into these deeper access and you know exactly
what you need to do. So you don't need
to use this deep work energy so to speak, to figure out what to do. And you can simply just
do what you need to do. And the other as to
what you actually do during your study hours. There's a lot of
ideas about learning effectively that most people
don't quite understand. E.g. one of the most
common ways of studying is highlighting a bunch of
texts on your textbook. But if you actually
look into it, you'll find that this is
a very ineffective way to study in other things
that people usually do, but that's actually
not effective. Is it rereading stuff or just passively re-watching
some tutorial, e.g. these are all things
that make you feel like you're
being productive, but you're actually
not because the way your brain actually
learn something is true retrieval through actively trying to retrieve information
out of your brain. So what this means in
practice is that you need to practicing what you're
learning at all times. Whenever you learn something, tried to apply yourself without
looking at the tutorial, you can use tutorials
for inspiration. You obviously need
to learn the theory, learn the syntax of languages before you start
building something. But as soon as you
can, apply them, as soon as you write
the simplest thing that you can possibly right? Where the things that
you've just learned. Because when you're actively retrieving this information
out of your brain, that is what actually
makes your brain understand that
this is important, and therefore, it makes it create these connections
automatically. This stuff is ingrained in your brain and you actually
know how to use it. And this is how you
actually solve the problem that most people have
of just studying, studying, studying,
but never feeling like they actually
learned something. So those are the most
important habits then you need to adopt when
you're learning to code. And so what I want you to
do as the third part of the class project is to
write down for yourself, what is the schedule
that you want to stick to a total how much
time you have during the day, get two to 4 h of coding time that you need
to do every single day. So thinking about what
makes no sense for you, write down 123 deep
work sessions that you will be completing everyday and when you want to
be completing them.
7. How your Brain Actually Learns: Most schools actually
teach things in completely the wrong order. Because the way schools
stage things is that they go through
the theory and then all the offer that they
apply the theory into something practical,
which seems reasonable. But in a lot of cases, especially when it
comes to coding and existing VM very
bad way the study. And it can lead to
demotivation and difficulties in actually internalizing the concepts that
you're studying. But the key idea here is that the way you actually learned
something in the way learning actually
happens is when you retrieve something
out of your brain, when you actively use some
piece of information. Because when humans evolved, our brain evolved in such a way that it sort of trying to hold on to the information that
is most important to it. Even if your brain
things that some piece of information is not important, it's going to actively
fight against using neurons to like
hold it in your brain. So to actually learn to code,
we need to make our brain think that coating and
the coating concepts that you're learning are extremely important
and important enough for your brain to expand resources to retain
the information. So how do we do that? Let's say you're
studying a course on the theory of algorithms. We first learned about
the theory of algorithms. It's already going to be very difficult for you to actually see where these are used and
why these are important. And this is the biggest
mistake people make when they're learning the
goal for the theory first. And because your
brain can't grasp on where and how
practically you can use this information is not
going to be able to retain the way it usually to actually approach
learning to code. If a yes, read about
it, which is drawing, then immediately think about
how you're going to play. You think about what sort of problem and you're
going to apply this rule because then your
brain will actually go, oh, this guy is actively trying to retrieve this information
and accidentally trying do them actively trying to solve a
problem for themselves, this information
must be important. Therefore, we should hold
onto it as hard as we can. So that is how you
actually retain these concepts and most
courses and a lot of the courses that
we'll talk about in the second section to obviously give you problems
and projects to work on. That, that's great,
but a lot of people do and even I was doing
in the beginning is skipping through a lot of these practices projects because it can seem way too
easy in the moment. A lot of the time when you just learn something, it
might go like, oh, I don't need to actually
write this code myself because I'm just
learning I know how to do this. There's actually not the
right way to go obese. If you don't actually actively
write the code yourself, you will not stay in your brain. So the right way
to learn to code is unsurprisingly actually just code a lot and not just
what other people call it. The way I think about
it is that whenever you watch some
tutorial and watch some other person doing
something or maybe you read something like
concept of theory, a concept that's being placed
in your short-term memory. And that's no, you're learning. But that is an opportunity for
you to learn that there is an opportunity where
you now you have this concept in your
short-term memory. You can extract it from there to apply it to some
particular problem. But unless you do that, you will eventually
disappear from your short-term memory
and then you'll have to re-learn
it in the future. And this is the reason why
most people learn things. They have to keep rereading,
re-learning things. And things just
can't seem to stick. But if you adopt this
practice or generally always applying as soon as you can
doing those practice project, figuring out problems
for yourself that you might be able to
solve with these things that you're learning
that will actually take this information from
the short-term memory and ingraining into long
term storage of your brain. And that is exactly
what you want. And when you do
these, you won't have to keep trying to remember
stuff because you will just naturally
understand them and naturally know how to use them. Because you've gone
through the practice of ingraining these things into the long-term storage
of your brain. This is the actual
work ship analogy, the actual workers that
will actually make your ship go forward and actually build this
base of knowledge, this base of knowing
how to code to get you towards the goal
of being a great program. Because what a great program, it is not someone with a
ridiculous memory which just memorized all these concepts or these data structures and algorithms. What a
great program is. Someone who just naturally
understands these things and naturally knows how to use them the right way in
the right times. And it's this top-down
learning approach, which is this practice first
and learning approach. We will actually get you that, that is fourth part of
the practice project in the spirit of practicing
and solving problems. When they write down
a couple of problems, you imagine that right now, you knew everything
about coding, you knew everything
about programming. What are the problems that you would actually
want to solve? What are the applications
that you would like to build? And while the programs that you would actually like to go here, I need to write anything about
like how you would do it. But if you imagine that
you could do anything, we code what are the
sorts of programs and the sorts of apps
that you'd like to build. And then later on in the course, we will actually revisit this list and think
about more practically, how you might go
about doing that, how you might go about
building these projects. This will also give you motivation and it can be
a part of the why that we talked about before that
will keep you going and going towards some goal of being
able to build these things.
8. Part 2 Intro: Welcome to the second
part of this course. So now that we have
figured out ourselves a learning system that utilizes the science of learning and all the principles
that are going to keep you disciplined and keep you going
throughout the way. We can now get into
the fun stuff, which is what is the best step-by-step system that you can build yourself to learn to
code not only effectively, but also as quickly as possible. Because the last thing I
want you to do is waste time doing something that you
could be doing much faster. First, we will talk about what is the best language
to start with. And we're also going to
discuss exactly why in these languages
are the ones that are probably the best
for most beginners. Or that we're gonna get into a step-by-step system of the
resources that I recommend. You first start
with the ones that I recommend you go
into once you become a slightly more
intermediate and then also some more advanced
stuff throughout the way, I'm gonna be giving
you a full checklist of all the concepts and items that you
should be trying to master at each stage
of your learning. Again, this is not
a coding course, so we're not actually going
to be going over them because I believe there are
so many great resources, most of which are
completely free for you to do out there already
on the Internet. The purpose of this class
is essentially a review. A lot of the more popular ones see which ones might be for you, which might not be for you, so that you know exactly
where to go first. You're also going to talk
about the steps that you need to take off the you
got into a decent level. We coding to actually get hired at a company saves
you a lot of people prioritizing the wrong things where I sort of over-complicate
in the process, when the actual
process of getting a job is actually quite simple. That's not to say
that it's easy, but as this very simple
framework that you can follow, that is going to give
you a very good choice. Well, with that, let's get into the first lesson of
the second part, which is which language
should you start with?
9. 9. Which Programming Language Should I Learn?: What is the best programming
language for beginners? For most people, I recommend
either Python or JavaScript. Essentially as a beginner, the criteria that you should look for in a language or
the ease of learning, the amount of job opportunities, as well as the kind of things that you can
build with them and how fast you can build up an
ability with these criteria, Python and JavaScript, other two languages that meet
them, the best, Python and JavaScript
are what are known as high-level languages. And what this means
basically is that the way computers actually
work in the very, very low-level is that computers don't even understand
programming languages. All that computers understand, or zeros and ones and an even lower level,
the physical level, you just have electricity going through all
these transistors in a very complicated way
to produce some output. Reason why we have
programming languages in the first place is because
writing this for humans, just writing is
zeros and ones and remembering all this
sequence of zeros and one is equivalent to multiplication or something like that can be very difficult. So we have designed programming languages that
are very similar to English. They're very easy for us humans to understand
and to write. And then we have britain
different programs called compilers, which then take these
high-level programs in programming
languages and convert them automatically into the
computer readable binary code actually create some results. So this leads to
the question of, why do we even need different
programming languages if all of them are just going to be translating machine code, every programming
language can probably write any program that
you want to write. Anyway, why do different programming
languages even exist? Well, that different types of applications we
will want to build different types of purposes. And for different purposes, different sorts of
language syntax and different language features
are most appropriate. One spectrum that
you can put a lot of language and in high level and a low-level language means that essentially the language is quite close to the actual
hardware of the language. So you need to worry about very low-level details
like memory management, like actually dealing
with how bits are actually stored in
the computer's memory. We've also constructed
these high-level languages like Python and JavaScript, essentially hide a lot
of this detail for you. They do a lot of these low-level details for you without you needing
to worry about it. As a beginner, these
high-level languages are in my opinion better because they allow
you to focus on the things that matters
the most as a beginner, which is learning
programming fundamentals, learning basic coding
principles like loops, variables, functions today is the first reason why
Python and JavaScript shy. Second reason is that because
most applications nowadays don't actually require you to work with very
low-level optimization. Python and JavaScript
are also some of the more popular
languages in the world. If you look at job
opportunities by programming languages
python and JavaScript, I usually at the top. So that's the second reason. And then the third
and fourth reasons are that simply because it's very fast and very easy to write code in
both of these languages. You can build a ton
of stuff with them. Essentially, if you want to
go into web development, e.g. you're gonna build any website in JavaScript because
the front end of pretty much every website in the world is written
in JavaScript. That is the sort of the
defacto language of the web of a Python scripting
application. So if you're interested in
machine learning or AI, all of that is done in Python. These two languages have
the most applications out of any programming language. And this combined with
the fact that they are very easy and fast and right. These are the five
that you can build portfolio project Foster. And lastly, because of
all of these reasons, these two languages have
the most resources online, most of the most popular free online resources
to teach you stuff the code are usually
based in either Python or JavaScript because these
languages are so popular. And so out of these languages, which one should you pick them? I would personally pick Python. Python is sort of
know for a fact. The Python syntax is extremely easy and extremely
like, English-like, and there's very easy
to understand and write even more so
than JavaScript is why most people
usually recommend Python as the first language. And it's the most
common language for people to start with, using very good for learning programming fundamentals of
the Yolanda fundamentals, you need to make a
decision if you're specifically interested
in web development, as in you want to learn
to make websites, then it usually probably steer towards JavaScript
because JavaScript is essentially known as the language of the
web era website. You have the front end
and you have the bucket. Every front end of
every website is written in HTML,
CSS, and JavaScript. If you want to go
there and you need to learn not only JavaScript, but also CSS and HTML. But the thing is you don't
really have a choice. Those are simply the languages that are used for the formula. For the back-end, you have
a lot of different options. You can use Python, you can use JavaScript, you can use, I don't know, PHP if you want to be crazy. If you want to be a
back-end developer, you can go with either one. But ideally, if you want
to understand Bride, the front-end and back-end, JavaScript is really
the best choice because you can simply focus on mastering JavaScript
without having to learn multiple languages
at the same time, if you're into web development, you should steer towards mastering JavaScript rather
than mastering python. Whereas if you're
more interested in scripting type of
applications and you want to build web scrapers or bots to automate random stuff like I've built like bots for Tinder or to automate
like my finances. All of those sort
of hacky type of applications I usually
done in Python. And in another area where
it shines is data science, AI, and machine learning. Big buzzwords nowadays,
if that's the area that you see yourself
eventually wanted to go into, then Python is definitely
the best choice because it is simply the defacto
language of those areas. So in summary, choose either
JavaScript or Python. You want me to recommend one
language just start with, I will start with Python. Similarly for the
programming fundamentals, unless you know for sure that you want to specifically
become a web developer. In which case, I will just start with JavaScript
and focus on JavaScript fundamentals
in its ask yourself, which area of programming
do I want to start learning first and then decide the language
based on that? And then obviously if
you're interested in a more niche applications like let's say you
want to build games. I think the language
that they use, C plus plus or C Sharp, you want to build a
mobile application, specifically iOS application, you should go with Swift
because that's simply the language that they use
to essentially the language that you end up
meaning throughout your career just depends on the application and the area of programming that you
want to specialize in. As a completely beginning, you probably don't even know what you want to specialize in. Otherwise voyage starting with a different JavaScript or Python is just a very easy and
safe choice to make. And then later on if you
decided yet actually, I want to become
a game developer. You can go and learn
a C-sharp instead. So I hope this video helps. Next, let's get in to the
step-by-step path that I would personally take
if I were starting to teach myself to code today. It's a class project
of this lesson. I want you to go online and research different
areas of programming. Go on YouTube, go online
just to sort of get you introduced to the
different areas that exist within the
programming industry. There's so much out there. Then write down the top three
areas that interests you, and then also look up what languages are most
used in those areas.
10. Which Coding Courses Should I Choose?: Okay, so you decided which language do you
want to start with? Where should you actually
start and what are the things that you should focus on at
each stage of your learning? For the purposes of this video, we are going to use
Python and JavaScript as the examples because those are the languages that I recommend. But at the very first step, you should simply look up a very basic tutorial slash and very basic cause or
that language Python. The course that I recommend
most people start with is a course on Coursera called
Python for everybody. It's one of the most popular
Python courses in the world, is probably one of the most popular programming
courses in the world. And it's also the course that
I personally started with when I was first starting
out teaching myself to code. By the way, all of these
causes are gonna be linked down below in
the course description. When you find the
course on Coursera, you can click on audit
for free so that you don't have to pay for the certificate
because honestly, Coursera certificates
are not important. What's important is the
material for JavaScript. There are a lot of options. E.g. free code camp
focuses a lot on JavaScript and there's
also something called the Odeon project, which is a very sort of
elaborate resource for you to go from zero to
becoming a web developer. This is a resource that I
recommend you start with. If you know specifically
that you want to go into web development is
going to teach you the basics of
JavaScript programming, as well as the basics
of CSS and HTML. Then all of those languages
in more intermediate level, including a lot of practice projects along the
way, as well as also the, all of the most popular web development frameworks
like React, NodeJS for back-end,
and a lot of other stuff isn't very long
and elaborate resource. But if you just look at the
stages of learning from basic to intermediate to
advanced in a very basic level, you just focus on the
following concepts, variables, datatypes, control flow, ie,
if statements and conditional statements
for and while loops, object oriented programming and creating classes and
objects and how they work. Then lastly, functions
and methods. And what is the difference
between functions and methods? What I would do is
take out a notebook. Does those are gonna be
part of the class project of these lessons and write down these six concepts
once you know what all of these mean
and how to use them. And hopefully you've used them in a bunch of practice
projects that you would do during your basic coding
resources that you know, that you've got the basics down. And once you've got this
programming fundamentals down, what I recommend many
people do is also learn some a computer
science fundamentals because there's a
lot of stuff here. Maybe not the most important, the very beginning, especially if you just want
to build websites. If you want to get a job, you're going to eventually have to master something called data
structures and algorithms. For this is very useful for
you to actually understand how computers work at
a low level of LacY, the absolute best course, the absolute best
resourced I recommend everyone does is a
course called CS5. This introduction to computer
science and programming by Harvard University is a
completely free online course. I think it's the
first course that actual Howard computer
science students take during their degree. But Howard have made it available for everyone
to do online. You can find it on Add x and a lot of
different platforms. Essentially, we want to avoid paying for the certificate on ethics and simply find
the CSP platform, which I'm going to link down below in the course description. Once you do it, you don't
have to pay for anything. Many of you will think
that you have to pay for the certificate. That is not true. If you do all the assignments, if you watch all the lectures and you're doing
a final project, you're gonna get a
free certificate from a CS5 for your
completion job. Just to put that out there, don't have to pay for it at all. I have a full review of his
course on my YouTube channel, which I'm also going
to link down below, but it's essentially going to
give you a very high level, but also at very
comprehensive understanding of what computers are, what programming you would
compute the actually means how the computer memory
works at a high level. It's also going to give
you an introduction. Data structures and algorithms. Rosanna, absolutely crucial
concept for you to master. If you eventually actually want to get a job as
a software engineer, you're gonna get some
exposure to a lot of the low-level
details which you've been ignoring up
until this point. And just a note, you could
also completely skip the Python for Everybody course and simply start with CS 50. If you feel like
you want to go into the computer science fundamentals
tools head-on first. That also works
after this stage, you are going to be at
the intermediate level. You're going to know how to build a more intermediate
level programs. And you're going to have some very crucial
computer science fundamentals under your belt. What I did is I did CS 50 is follow-up course specifically on web development is
a very difficult, but a very comprehensive
course that's going to go very deep into
web development, is going to have some very complex projects for you to build along the way. But if you complete CS5, these follow-up course
on web development, you're going to have a
lot of portfolio projects for you to put on
your portfolio and even then start applying
for jobs width. Or alternatively, you
can continue on with the audit project if you started with the
audience project order, I recommend you do things, is that you first do
their foundations path, then go to CSAT, and
then off of that, either continue with their more advanced
JavaScript path or CSF, these web development course. If instead, you don't wanna go into web development at all and you just want to focus on
learning Python or this point, you might also want to start looking into
what are actually the areas of programming that you're interested
in if you're into AR, if you want to,
machine learning, we'll take up again CSF, these AI course
just are thinking about where you
actually want to go. And specifically you
want to start thinking about a more complex sort of a bigger project
that you might want to build with your
programming skills. If you did any of these courses, you sort of already
going to have more complex projects to
put on your portfolio. Again, because the courses include a lot of very
complex practice project, but these are also very important for you to
figure out a project that you can build from
scratch on your own. And in the next
video we're going to talk a bit more in detail about the kinds of projects
that you want to build for your
resume to get a job.
11. What Coding Projects Should I Build?: You've learned the basics
of programming as well as got some fundamentals
computer science concepts, as well as more intermediate coding concepts under your belt. This is the stage where a
lot of people get stuck. Because while a
lot of people do, is they just keep on doing
more and more courses. They keep on watching more and
more tutorials on YouTube. But actually at this point, you should stop doing that
at least for a while. If you actually want to
become a good programmer, it's absolutely crucial
that you start building, as we discussed before, the way your brain actually
learns things is by applying them to actual
problems as well. There are two types of projects you'll be building throughout
your learning process. First of all, we've
got beginner projects and I'm not gonna
spend too much time talking about this
because during your basic and intermediate
coding resources, like the ones that we
discussed in the last video, you are going to be building a whole bunch
of these projects. And by the way, you
should absolutely not be skipping this, even if you feel like you already know how
loops work, e.g. you shouldn't skip doing the basic project where
they tell you to apply it. I made this mistake time and time again in my
own learning path. I thought I knew something
and I skip the project. But then when it came
down to actually applying this in an
actual real project, I suddenly didn't remember
how to do it anymore. So don't skip those
practice projects. What you specifically built here doesn't even
read about that. But the real goal of all
of these projects in general is just to
apply the things that you've learned and
to actually code up the stuff that you've
seen in tutorial, e.g. pretty much as soon as you
learn any concepts for, let's say you learn
how while loops work to figure out how
to actually code up. It can be the simplest
thing in the world. Just code up something when you're solving an
actual problem and figuring out an actual use case where while loops are used. If you want some ideas on
these beginner projects, just getting you to practice
these very fundamental, basic principles that you've
been learning before. I made a YouTube video as
very popular on my channel about basic Python project and I plan to make similar
videos on JavaScript. Those will also be linked down below in the
course description. But now what's really
important to discuss is how to approach building
more complex sort of intermediate slash
advanced projects that you can then actually put on your software engineer resume. And the questions
that people often ask here is, first of all, what kinds of products should
I build and then how to go about building these
projects efficiently? Because a lot of people, myself included
when I was starting out against stuck here. When you're choosing a project, there's three main criteria
that you want to look for. First of all, it
needs to be a project that you are actually
excited about. And this relates
to all the things we said about having a Y. So once you've figured out the project that you
actually want to solve the next criteria
that you want to have. Ideally, it needs to showcase
a lot of different skills. So at this point that
you've got a lot of intermediate skills is figure
out a project where you can challenge yourself as
much as possible and use as much of the things that
you'll learn as possible. Because the more you can show, the more convinced your
employer is going to be that this person is not
just one-dimensional, he just knows how to write
Python automation projects. You actually understand a lot of different things and how to
make them work together. Third, criteria is
something that is easy for the interviewer
to understand. So that's not too niche where no matter what background
interviewer has, they can understand it. So a couple of good
examples of projects that incorporate all of these
different criteria is e.g. this sorting algorithm visualize it that I built for myself. E.g. I. Got this idea from the climate me hi
Alaska YouTube channel. He has a full tutorial on this. I think it's an
awesome project and he actually used the same project
we will get into Google. I'm gonna put his tutorial for this project down below
in the description. And I've also built
this for myself. And this is actually one of
the projects that I have in my own software engineer resume in other option
that's very popular, that's been recommended
online is something called a bug tracker and then
built this myself. But essentially it's a perfect resume project
because it's something that especially someone in the
software engineering industry can easily understand because
it's actually a tracker, tracking bugs in the software
development process. The additional benefit
showcasing that you understand the software
development process then yes, this means that you have
to do research into this, but that's also a good thing. In addition, it requires you to build a lot
of complex features. You're going to have to
understand the front end, the back end, how to make
it look visually appealing. There's a lot of different
elements that go into it too, especially if you want
to be a web developer. This is a great
project to build. A third example is something that you will actually build as your final project in CS5 is
a mock stock trading app. This is also something
that I have in my own portfolio is a
great project because it requires you to build
a front-end and back-end requires you
to implement APIs. It requires you to
implement login features. So a lot of different
features in one, exactly what employers
want to see it as. Just three examples. But essentially, if you don't
find any of these exciting, just go on Google, figure out some
inspiration from ideas. And out of those, you're probably going to
start coming up with some ideas that might actually be exciting
for you to build. And once you've
chosen a project, the way you want to go
about it is through these sort of iterative
projects building process where essentially the
first thing you do is you focus on building
an MVP and what is an MVB stands for Minimum
Viable Product where the very first instance, you focus on building the simplest version
of the project that you possibly can that has the minimum amount
of features for Work if that makes sense. But e.g. if you're building the algorithm visualizer, first, you just focus on implementing the sorting algorithms in
code on the command line, not even worrying about
the visualization first, I don't know if you've
gotten that down, then you can move on
to the next stage of the next layer of features that your project is going to need in
order of importance, which is maybe building a very simple version
of the front end, sort of a mock version of how you envision the
visuals to look like. And then the third
stage will be to then combine your
algorithms that you've implemented into
the visualization and to actually make them appear visually in the front end to any approach building project in this sort of iterative process, going from the most
important coffee juice into the next stage. And then the very last is very
niche or of optimizations. And by analyzing it, It's
a lot easier to keep yourself motivated and discipline
to actually finish it, especially for your
first project, probably like 95 per cent
of the things that you do, you're actually not going to
know how to do straightaway. You've done those courses, whatever specific
thing you tried to do, always, just Google things. So maybe you don't know
how to do something. Have you are looking at the sorting algorithm
visualization. You're going like,
well, I could never do that. Don't think that way. Don't just stop and not do it because you don't
know how to do it. The whole point here
is that you learn how to do it and how do
you learn how to do it? Well, you just Google
things, you start thinking, you stop and think, what
are the things that I would need to build
for this project? Build a list of features
that you're going to have to learn to
figure out how to build. Maybe you identified
ten things that you will need to build
for this project work. And maybe only two of them, you will know how to build
off the top of your head. Each eight of these, you put
them in order of priority in terms of what is most important for the project to function. And then you just start
going through them one-by-one and googling
every question that you don't know the answer, the articles on StackOverflow. So whatever, whatever problem you're trying to solve
in your project, it is possible to solve it. You just need to have the
tenacity and the discipline to go through with it and
to keep finding out things. Whenever you get error, you
just Google the error code. That is how building coding
projects actually work. You might think that programmers
who learned to code, they just didn't know how
to build everything and they just cut up without
looking at anything up, but that is not how it works
even as a professional, the difference
between experience and inexperienced programmers is that they experienced ones know how to
Google things better. So I literally, I cannot
stress enough how important it is to
have the mindset of being humble enough to admit when you don't know
something and then just asking Google for the answer and the ability to actually go out there and find things out on the Internet is you
simply adopt this mindset. If you typically do this with anything that
you're building, you're literally going to
be able to build anything because anything that is humanly possible to
be able to decode, you can build, you
can do it if you just spend enough time on Google
asking the right questions. So that is how you build projects and have you
build a couple of days, maybe two or three good
complex portfolio project. It's much better to build
two or three complex ones than like ten very simple ones. So going on two or
three, then you're going to put on your resume. And after that, you
can really start thinking about
applying for jobs. Because at this point,
you know how to code, you are good enough
to get a job. So that is exactly what we're going to talk about
in the next video.
12. How to Get a Job: So you've learned
programming basics, you've learned
intermediate programming as well as some computer
science fundamentals. And you've built a couple of interesting and complex
portfolio projects. You are ready to get into
the advanced stage and really start thinking about how you're going to get a job. This people over-complicate
the literal process for getting a job as a software engineer is just a
couple of steps. First, learned to code. And we'll just discuss
how to do that to build a couple of portfolio
projects for your resume. Especially if you don't have any internship experience
or anything like that, maybe just discussed
how to do that. The only thing that now
stands between you and the job is getting an interview
and parsing an interview. And if you've done all the steps up until this point
correctly as a new figured out a
proper learning system that allows you to keep going, to stay disciplined
and learn to code, as well as then use those skills that you've learned to build
some interesting projects. You should be able to get
jobs as long as you apply, as long as you then
figure out how to build your resume correctly. Which for that, I also have a video down below
in the description, as long as you just apply to enough places in whatever
location you're in, start getting
interviews before long. And at this stage now that
you've got interviews, the only thing that
stands between you and the job is the coding interview. At least most
programming jobs have a very similar structured
according interviews. At least at the top companies, where they asked data structure and algorithm type questions. And I want to stress
at this point, the only thing that matters
for you getting a job even at the top companies is your performance
in the interview. And this point after you've
passed the resume stage, if you perform well
in the interview, you are going to get the job before your interviews
and before you apply, the only thing that you
really want to be focused on them and the most important thing that
you need to learn, data structures and algorithms and
practicing, practicing, practicing to solo that the kinds of problems that they are going to ask
you in the interview, if you just do this for
long and I've introduced this approach it
like studying for an exam at school or university. Eventually, you're
going to learn it and you're going to be really good
at solving these problems, but you need to know
what you're doing. So specifically, you want to pick a basic data structures and algorithms wars or
resource to teach you the theory or the while applying
it as much as possible. And after you grind
lead code until you essentially are
really good at solving these problems is a
very simple process, but it is a grind. The course that I
personally did to teach myself data
structures and algorithms. What's the most of
the coding interview data structures plus
algorithms on the zero to mosques recording
course platform zero to mastery is essentially
a platform full of coding courses
that you can all access for one
simple description. And yes, this one
will cost money, but I think it's a very
reasonable investment to make it a very
engaging course that's going to teach you
everything that you need to know from someone
who actually did it. That's the one that
I did on, that. I also completed the
algorithms specialization on Coursera by Stanford
University as well as algorithms by Robin Sedgwick
textbook to really go deeper into the theory because it's a very
theoretical resources. And while it probably goes even deeper into the theory that
you even need to know, I'm of the opinion, He's never harmful to
know more and you want to earn the side of knowing more rather
than knowing less. So these are just some
possibilities of resources that you might want
to take and it might be boring as some points. You might be feel
like this is very, very hard and very theoretical. Just take your time
with a focus on understanding why
these algorithms and why these data
structures that exist, why we even have different
data structures and then just practice
implementing yourself. The crucial step here, those are priced properly, is to implement these
data structures and algorithms yourself and
do it multiple times. If you just do this, if you
just apply all of them, if you implement all
the data structures, if you implement
all the algorithms, do a couple of times, folks on understanding what
they do, why they exist, what they're running times are, eventually they aren't going to be ingrained into your brain. And then whatever problem
you sold me you need to utilize these is going
to be a lot easier. What most people do, which is this going in and trying to memorize as many
problems as possible. That's really not a strategy
that you'll want to follow. That there is this website
called elite code. I just have the free version. You don't even need the premium. They have problems that
are exactly the kinds of problems that you will be
asked in coding interview. That's how these
websites programs are designed to how many
problems you feel like you can reasonably do in a day is every day
you keep grinding. You start from the easy ones. Once you've got like these
ones are too easy for you. You want to move
into medium and then eventually to heart
from what I know, to pass and junior
level interviews, you can comfortably complete the medium level
lead code problems. You are probably going
to be good enough to attempt underpass interview. Obviously, the more time you put into it, the
more you practice, the higher the
chance that you're going to be able to
pass the interview. That is how you tackle
the coding interview. A lot of them also have
a behavioral interview, essentially just Google a lot of questions that
they're going to ask in interviews based on the company that
you're applying for. Usually, if you're just
excited about coding, you just genuinely interested
and you can genuinely show them that you really want to learn a
lot about coding. Those are the kinds of people
that they want to hire. If you're able to
show your passion, show your motivation. The show that you are a
hard worker, a team player. Then you are the type of person that they will want to hire. You want to just practice
answering this question, maybe do a mock interview
with a friend or something. Then again, the
more you practice, the more comfortable
you are going to get at sort of
explaining your story, explaining your motivation for this field and the company
that you're applying for. And obviously, when it
comes to the interview, just come very prepared. At this point,
you're going to have a very strong understanding
of not only coding, but also data structures
and algorithms. There's just go into it
with confidence so that in all its simplicity is how you approach the job
hunting process.
13. THANK YOU - The Next Step in Your Coding Journey: You've successfully watched this class all the
way to the end. Congratulations, you are now ready to embark on your journey. Or if you already
embarked on your journey, I really hope that a lot of
things that you learned, first about the actual
learning process and second about the
step-by-step path. I'm going from a beginner
programmer to Job Ready were helpful to you if any of these was helpful
to you at all, I would really appreciate a five-star review
of this course. I would really appreciate that. And lastly, I just want
to leave you with this. Coding is one of the
most exciting skills in this modern day and age. It's also one of the most
valuable skills you can learn. But the tech industry
is all about embracing learning and constantly learning more and never being satisfied. Even after you get a job, you never want to stop learning. You always want to
be learning skills obviously related
to your actual job, but also adjacent skills. Never shy away from
taking more courses on Coursera or watching
more tutorials or figuring out new areas of the industry use the tech
industry is just so rich with all different things
that you could literally spend a lifetime
learning this really, to me, the most amazing
thing about it. And along with this,
never stopped building. As a software engineer, you're
going to be coding a lot. But to me, one of the most
exciting things about coding, being able to build
things for myself, built things that I want
to be able to solve. Problems, that I want
to solve a code that is really what makes coding
so exciting for me. And I hope that you can as well become just as excited about
this amazing skill as I am. Good. I hope you enjoyed
this short class. If you want to see more for me, my YouTube channel,
internet may coder. It's going to be down
below in the description. I talk a lot specifically about the learning process, too. Hacks and techniques
that I use myself to learn things fast and
efficiently and properly. And all the things
that I learned about my own journey of going from absolutely zero with no knowledge about
coding whatsoever, to working full-time as
a software engineer. I also make tutorials, specifically a lot of Python tutorials about
automation projects, just the types of things that I personally like to build myself. Now, I'm also working full
time as a software engineer. I also make a lot of content about the daily life of
being a software engineer. And with that, I have
a lot more classes and courses planned that I want
to make regarding coding. So stay tuned for all of that. But I wish you a very
fruitful coding journey. I wish you all the success and I'm sure we will meet again. Thank you.