Transcripts
1. Introudaction: Have you been stuck in the
endless cycle of tutorial? After tutorial, we're trying
to learn how to code, but not making any
real progress. I, for one have been there. I first started to learn how
to code over ten years ago. I spent years trying online
courses and watching YouTube videos that wasn't
making any real progress. If you're looking to
learn how to code, know that it doesn't
need to be this way. So in this video, I'm going
to share how I would go about learning to code if I could
do it all over again. So step one, we need to set
goals and expectations. Why are you trying
to learn to code? Do you want to make a website
for your family business? Do you want to develop some app? You've always been thinking
about where do you want to land a job as a
software engineer? Don't worry too much if these
goals change over time. But I think it's
important to start out by deciding what it is
that you actually want. Additionally, tried to set reasonable expectations
for yourself. You're not going
to go from writing your first line of code to getting a software engineering
job and just a month, it just won't happen that way. You might be able to build a website or an
app and that time. But just like any
other skill mastering software development is going
to take a lot of effort. Most developers either
went to boot camp, which take about three
months of full-time study, or they have university
computer science degrees, which of course take
years to get to realistically to compete with these people on the job market, you'll likely need
a similar amount of experience and time
spent learning.
2. Coding & computer science: Step to understand
what coding really is. I know that sounds
cliche, but hear me out. Most of my wasted time
when I tried to learn, was spent on trying to
understand coding syntax. I would search for things
like Javascript, tutorial, and then I would try to follow along and do learn JavaScript. This sounds simple enough and to some extent I did
learn some JavaScript. But what could I do
with that JavaScript? Absolutely nothing. I didn't even know what
JavaScript it was four. And this is just such an
overlooked but key point. Coating is just a
means to an end. It is a tool used by developers to develop software
as an analogy, if you wanted to build
a house, you want it. Go look up tutorials and how to use tools like jackhammers. You would need to
first understand the fundamentals of
designing a house. And then down the line, you will eventually need to
learn how to use those tools. The analogy isn't perfect, but hopefully it gets
the idea across. Coding is just the process of telling the
computer what to do. But software development is a larger process of
building out software. The major component of this process is
going to be coding, but there are
plenty of other key components to this process. But you won't learn if all
you do is learn how to code. Step three, learn
the fundamentals. I get asked all the time, what programming language
should I start with? Don't worry, we'll get
there in a moment. But the reality is that all programming
languages stemmed from these same basic ideas and we should start by
learning those ideas. A great place to start
here is going to be CS5, which is the first computer science course
offered at Harvard. This is an incredible resource
because it's actually completely free online
and it has topnotch. This course will give you a fundamental overview of
computer science principles. You'll learn everything
in this class, from binary notation to
coding and C and Python to building out full-stack
web applications with HTML, CSS, and JavaScript. Of course, you won't leave this class as an expert
in pretty much anything. However, you will leave with an understanding of the
context of coding and how it fits into this bigger picture
of software development and computer science step for deep dive into a single
programming language. At this point, you've
been introduced to a variety of
different languages. And one thing you'll
notice is that in reality they're all very
similar to each other. They might have slightly
different syntax. But one thing you'll learn
is that once you learn one, you can very easily
pick up more languages. So if you're unsure of
which language depict, note that it doesn't
really matter that much, but I would usually
say to default to either Python, Java
or JavaScript. Python is a great all around programming language with
incredibly simple syntax. It's particularly good for data science and
machine learning, but it also gets used in
plenty of other places, such as backend web development. Java is another general
purpose programming language that can be used
just about anywhere. One of its big benefits is that it comes with static typing, meaning that you have
to explicitly define the types of every
variable you create. This is great, especially
for learning because it forces you to really think
through the code you write. That said, it's also
worth noting that the Java syntax is a lot more
verbose than Python syntax, so it can be a little
bit harder to get going. On the other hand, JavaScript is the primary programming language of the front-end
of the Internet. And in my opinion, this
actually makes it one of the easiest languages
to learn because of the fact that
the code you write is oftentimes easier to see and understand since you
can interact with the output and a web browser
instead of a terminal. That said, if you do
choose to go this route, you'll also need to
learn HTML and CSS, which are the markup
languages used for describing the content
and style of webpages. Once you choose a language, you also need to find somewhere
to actually learn it. There are tons of amazing
courses out there, but here's a few that
I would recommend. First on the free side is free code camp as
well as Code Academy. Both of these have free courses that tend to be
very high-quality, and you can
supplement these with videos on YouTube if you find that the courses are
lacking in any areas, if you are interested
in paid courses, I really loved
programming expert. I of course, need to
address my bias and the fact that I worked
for algo expert, the company that created
programming expert. But don't worry too much. I have no financial incentive towards you buying
the product ended. This isn't sponsored
by them in any way. I just really think it's
a high-quality product, particularly if you're
looking to learn Python. There are also plenty
of courses out there on Udemy and Coursera. I haven't gone
through these though, so I can't really recommend
one specifically, but I'm sure some of
them are pretty good just to make sure to watch
the free content first, to get an idea and maybe read the reviews as well as
the smallest side here, you should also take
some time to choose a code editor at
this point and to get familiar with its features. The most popular editors out there right now is
Visual Studio Code. So that's probably a
good place to start, but which one you choose
isn't too important. However, what is important
is getting used to editing code on your local
computer in a code editor, I remember doing most of my learning with
online tutorials, and I felt lost when I tried to take what I learned online to this local editor to avoid
that confusion down line, just get used to using
a local editor from the start and it's going to
make everything a lot easier.
3. Coding skills and preparing for interview: Step five, learn, practice, repeat as you are learning, make sure you are
actually practicing. This all comes back to that
initial idea of context. If you just to learn
the syntax of coding, you're learning
anything useful as you learn more and try creating
some simple projects. Don't get over your head with
anything too complicated, but just try to make sure you
are applying your knowledge outside of doing exactly what
some tutorial says to do. This is really the only way to confirm that you're
actually learning. As you do this, you'll find yourself Googling
things all the time. And this is perfectly okay. In fact, over ten years later, I still Google something just
about every time I code. However, make sure
that you aren't just copy pasting solutions. Your goal is to learn. So make sure that you actually understand any code
that you copy. A good way to do this is
to find the solution and then come back after some time and
re-implement it yourself. This way you confirm that you actually understood what
you had to look up. Step six, learn non-coding
software development skills. Like I said, software
engineering is not just coding. There are plenty of
other things to learn, many of which will be incredibly important for most
Developer jobs. First of all, you
need to get used to using a terminal if
you haven't already. You don't need to be
an expert on Bash, but you should be
able to quickly navigate through
directories and edit files. Additionally, learn the Git
version control system. This is how software
engineers and industry keep track
of their work. You can think of it like
Google Docs history. But for code, both get n to the terminal in general are actually pretty
straightforward to learn. So if another course you've
used teaches it, then great. Just follow along with that. Otherwise you can probably learn it through some YouTube videos. And of course, just
practicing on your own. From here, try to
start developing a basic knowledge of different aspects of
software engineering. You don't need to be
an expert in them, but it can be helpful
to understand a bit of how the cloud
works and potentially even how to use a
cloud provider like AWS or Google Cloud Platform. Another area to explore would be networking and system design. This essentially
answers questions like, how does the internet
actually work and how do we design
large-scale applications? You could also start exploring some more niche areas like game development,
mobile development, different front-end frameworks
or machine-learning, but which you choose, if any, is going to depend on your
interests and your goals. Step seven, learn
more advanced coding. There are a few aspects
of coding worth exploring beyond just the
syntax of a language. First, I would learn the
different data structures. Particularly I would
focus on arrays, Sets, Maps, stacks, queues,
trees, and graphs. This might sound like a lot, but you will likely
encounter most of these things while
you're learning your chosen
programming language. Anyways, additionally,
you will want to learn some
algorithms which are essentially just known highly efficient programs
for specific tasks. So in particular,
you want to know some sorting algorithms
such as merge sort. You want to learn some
searching algorithms such as binary search. And you want to know some
graph traversal algorithms such as BFS and DFS. In addition to that, I would
also recommend you learn how to write code in
C or C plus, plus. These languages aren't nearly as user-friendly as
languages like Python, so they don't make great
first programming languages. However, they give you
much more direct control over your computer's memory. This is something that's
usually abstracted away from you with
more modern languages. But I think getting
an understanding of how it all works and just to make you a better
overall programmer, step eight, prepare for
technical interviews. Assuming you want to get a
job as a software engineer, it's pretty likely
that you have to pass it some
technical interviews. Thanks for watching and I'll
see you in the next video.