0:00
I needed to figure out the fastest way to become a software developer, and this approach
0:03
needed to be laser focused. What's up, my name is James. I went from being an underwater construction worker to a self-taught senior software engineer
0:10
at a large multinational company. I'm going to share with you the exact strategies that I use to quickly learn how to become
0:17
a software developer, the programming language and tech stack you should learn in 2021, the
0:22
resources that I recommend, the things that you should avoid, as well as tips on how to
0:26
become more competitive and to get your first programming job. The key to success is to work smart, not hard
0:32
These are the tips I wish someone had told me. I'm only going to ask you to do one thing and it's not to subscribe or hit the like button
0:39
What I want you to do after you watch this video is to actually do something based on what you learn
0:43
Take the leap and see if programming can change your life like it did mine
0:47
And we're starting now. When I took the leap into programming, my first thought was to go back to school and
0:52
get another degree in computer science. But it just didn't really make sense
0:56
Computer science is going to be really expensive, take a lot of time. And I already had a family that I needed to be providing for
1:01
So I did what a lot of self-taught programmers do. And I went and looked at the curriculum for a computer science degree and started to map
1:07
out all the things that I needed to learn in order to be able to compete with computer science grads
1:11
That was a huge mistake for me. I was feeling so overwhelmed by the amount of information that I needed to learn that
1:16
I never finished actually writing out that plan. So I started by picking up a book on C sharp as well as a book on algorithms
1:23
But I quickly started spreading myself too thin. There's so many different complex things to learn that within a couple of weeks I closed
1:30
that book and I never opened it again. I had failed my first attempt at becoming a programmer
1:35
Fortunately, when I was doing underwater construction, the next couple of years really sucked
1:39
It was tight for me financially. I did not enjoy what I was doing at all
1:42
And it was taking a toll on me emotionally. So that prompted me to give programming another try
1:47
This time I would do things differently. I needed to figure out the fastest way to become a software developer and this approach
1:53
needed to be laser focused. So listen up, this is the very first key to success
1:58
Don't try to compete with computer science grads. There's a lot of them and they have the paper to back them up
2:03
Instead, you need to be focusing your efforts on some area where they are weak so that you
2:07
can have a competitive advantage. In a minute, I'll show you the exact programming language and tech stack that you should focus on
2:13
At this phase of your learning, it is super important to fight the gnawing feeling that you need to know everything about programming because that's just not true
2:20
Taking the jack of all trades approach will just mean that you're a mediocre dev without a degree
2:24
Imagine a situation where an employer is looking for someone with a very specific skill set
2:28
to solve a specific problem. If you have that skill, you stand a very good chance of beating out a computer science generalist
2:35
The second tip is to make sure that you focus on an area that is growing, has a lot of demand
2:40
Going laser focused into the areas that aren't saturated by computer science degrees is the
2:45
best way to break into this industry. Now let's look at the programming language and tech stack more specifically, and then
2:49
we're going to go even more narrow down into those with recommendations on what you should
2:54
focus on. You got to remember that with computer science students, most of them are going to be spending
2:58
a lot of their time learning languages like C, C++, Java, Python, Scala, and there's a
3:04
bunch of other programming languages that are often associated with the backend
3:08
What we don't want to do is focus on learning a language that you're going to be applying
3:12
to jobs directly against those graduates. So the language that I actually recommend is going to be JavaScript on the front end
3:21
Most computer science students just don't learn a lot about the front end. So it's a great place that meets that criteria of not having a lot of guys with degrees going
3:28
after it. It's in demand, there's a lot of growth, and there's not enough highly qualified software engineers
3:35
It's also cool because if you're not really big on math, then this is one area of programming
3:39
where you usually don't have to have really deep math skills to have a successful career
3:44
Front end development is such a huge area with so much to learn that it's still not focused enough
3:48
We want to go even more laser focused, and to do that, we're going to pick a framework
3:52
to specialize in. What is a framework? Well, as a programmer, when we're using any given programming language, there's some things
3:57
that we do over and over again that could be very complex or semi-complex
4:03
And a framework is a tool that does all that stuff for you behind the scenes, and it just
4:08
provides a simpler way for you to do that bit of functionality
4:12
So my recommendation is that you become a specialist and that you focus 100% on learning
4:17
a framework called React. It is a framework that is really, really popular right now
4:22
When I got started, it was AngularJS was the thing, and by focusing on a popular framework
4:28
that was huge in helping me to break into the industry, get my first interview, and
4:33
get my first job. To be successful with React, you're going to have to learn JavaScript, HTML, and CSS
4:38
You can think of HTML as kind of like Lego blocks. They're the building blocks that provide structure to a webpage or application
4:44
The CSS is going to be the rules that kind of define the look and feel of those blocks
4:49
you know, like how big they are, what color they are, where they're positioned
4:53
JavaScript is going to be the glue that holds everything together. It is the programming language of the front end
4:58
It's what handles getting data, and it's what handles the interactions on the page
5:02
Learning HTML is pretty straightforward and easy to do, but with CSS, there's a lot of
5:06
quirks and just weird behavior stuff that you end up having to deal with, and a lot
5:10
of browser compatibility issues. If you end up working at more of like a website mill or a marketing type site that makes a
5:15
lot of smaller websites for companies, then you definitely will probably be getting into
5:19
some of the more advanced CSS stuff early on. But fortunately, you do not have to be a CSS wizard to get started
5:26
In fact, at a lot of companies, especially bigger companies, oftentimes there will be
5:31
libraries, component libraries that the software developers have built already for that company
5:37
that provides most of the components that you're going to need, and then you will just
5:41
be supplementing that with some of the more basic CSS. And because of that, I'm only going to want you to focus on certain parts of CSS
5:48
JavaScript is huge as well. There's so much that you can learn and so much you can do with it that it's easy to
5:53
get lost in the weeds. One of my biggest regrets was that I was reading several JavaScript books from cover to cover
6:00
and I forgot so much stuff that I read. We don't want to do that. We want to stay focused on the most essential things that are going to help you get up and
6:07
running and building applications, and you can learn that other stuff later on
6:11
I call that just-in-time learning, where you learn it when you need it. I also don't want you spending a lot of time working on learning backend stuff
6:18
There are services out there like Firebase that will provide all the backend stuff for you to integrate with and will handle it so you don't have to worry about it
6:25
That way you can stay focused on learning how to do things on the front end and becoming
6:29
an expert at the front end. So that you can avoid wasting time, I'm going to talk about some of the courses that I recommend
6:36
But just a word of caution when it comes to picking courses. There are courses out there that are the everything you need to know about XYZ, and those are
6:43
courses that, like the books, you just want to avoid those because you'll get off into
6:48
the weeds and it'll be distracting and you're going to forget most of it. But the most important thing you should do here when we talk about these courses is you
6:55
should actually do the projects and you should attempt to do them before looking at the provided
7:00
examples so that you're actually getting some real world experience trying to think through
7:05
and solve problems because that is going to be the best way that you can learn how to
7:09
write code. And I don't want this video to get really long, so we're going to be moving through this section fairly quickly with a lot of information
7:15
So definitely you'll want to re-watch the section, take notes, and I'll leave links
7:20
in the description below to these different projects. All right, the first place we're going to go to is the odinproject.com, and here they
7:26
have a bunch of different kind of courses that you can take to learn different parts of programming
7:30
We're going to be focusing on HTML, CSS, the JavaScript section, and also part of the Git section
7:37
So for the HTML and CSS, we really want to focus on learning and mastering the basics here
7:44
So definitely take the basic page structure, work through the displaying and inputting data
7:48
This is probably going to be the most challenging part of HTML is learning like forms and tables
7:53
CSS, as we mentioned, is styling. You definitely want to be learning this stuff, including like Flexbox and Grid is also a
7:59
more recent thing, but is more widely accepted now. So work through this section here
8:04
Learn some of the design and UX principles that will be helpful with responsive design
8:08
That's where you're learning to build websites and applications that look good on devices
8:13
at different sizes. A common problem is that when people are starting out, they might just focus on building something
8:18
that looks good on their laptop. But then if you try to open it up on a phone, it's going to be a horrible user experience
8:24
and not look that great. In the advanced CSS section, it's okay to get some familiarity with animations and some
8:31
of these stuff. I wouldn't necessarily deep dive into that until you actually have a need or you're working
8:35
on an application yourself and you want to learn more about it
8:38
CSS preprocessors are tools that are used to make your CSS more reusable and allow you
8:44
to use variables and things inside of that. Different companies have different preferences
8:49
So I would understand what they are, but don't feel like you have the master one in particular
8:54
Jumping over to the JavaScript, you're definitely going to want to again, work through the basics
8:59
getting it set up. You can learn about linting, which is how your code should be formatted and stuff
9:06
I would skip the section four on Webpack, which is a tool that is for helping to build
9:11
your software applications on the front end. What you're going to find is that when you're setting up an application, you usually set
9:18
it up once and sometimes you don't even need to really dive into Webpack because there's
9:22
tools out there. You can use starter tools like create React app. Asynchronous stuff is really important JavaScript
9:28
The JSON refers to kind of the structure of the data that is passed to and from the back end
9:34
So this is super useful and important to know. You're going to want to do this React JS section on testing JavaScript
9:40
I would get a little bit familiar with kind of how tests work, but save that until you're
9:45
more comfortable with JavaScript. Try and learn testing right out the gate because it's just a bunch of more tools and
9:51
frameworks and stuff that you have to learn. We aren't going to be worrying about JavaScript on the back end
9:55
The other thing to look into is Git, which that is something called version control
10:00
So anytime you make a change to a code base, you want to have a way to track who changed
10:04
what and when they changed and what those changes were. And that's what Git does
10:08
So you want to get familiar with it and learn like the basic code. You don't need to become an expert at Git
10:13
So let's jump over to freecodecamp.org. And here you're going to be doing some stuff that is going to be kind of repetitive to
10:19
what you've already worked through. But that's good because it's going to help you to solidify your skills
10:24
So you can go through the basic HTML, HTML5 stuff, the CSS stuff
10:30
You want to go through those basics. Accessibility is something that's becoming more and more important
10:36
So if people are colorblind or they have problems seeing and they need to have a screen reader
10:42
and stuff like that, that's about accessibility. You don't necessarily need to start with this, but as you have time later on, definitely
10:49
you want to become familiar with accessibility. Responsive web design principles and Flexbox
10:55
Those as I mentioned are really important. So I'd go through those. Let's jump over to the JavaScript and algorithms and data structures section here
11:03
Do the basic JavaScript stuff again. The ES6, which is the newer JavaScript
11:09
Regular expressions. It's helpful to know what they are in case you need to look into them to work with them later
11:14
I would not spend a lot of time in this section becoming good at this because regular expressions
11:18
can get really complex and they aren't necessarily something that you're using all that often
11:23
Debugging is going to be a huge part of front end development. So spend some time there
11:27
The basic data structures of JavaScript is super useful. The basic algorithms and scripting
11:33
This is where you're going to get a lot of things that you aren't going to be doing on
11:37
a day to day basis, but are questions that could come up in some of your interviews
11:41
So for example, on this list, truncating a string is going to be something that you might
11:45
do regularly or, you know, title casing a sentence. Slicing and splicing
11:50
But a lot of the stuff you really aren't going to use. And it's my opinion, especially if you're getting your first job, you're better off
11:55
to spend a lot of time building out projects that you can put into your portfolio than
12:00
to be spending a ton of time learning all these different algorithms and stuff
12:04
Don't get too distracted by this stuff too early. Object-oriented programming is one of the two main approaches to writing code and how
12:11
you structure your JavaScript. You will end up encountering this when you're looking at React and ES6 and like when you
12:19
start seeing like the classes. The functional approach is actually what I would recommend working through as you were
12:23
learning how to write React. You'll tend to find that software engineers who come from back end tend to favor the object-oriented
12:32
approach more. But I would start with functional and then you can start filling in the gaps as needed
12:36
in here. Now it does mention some stuff here like the immediately invoked function expressions
12:41
That is important to learn and to learn about closures in JavaScript
12:45
For the intermediate algorithm scripting, this goes back to what I was saying about
12:49
learning all these algorithm stuff. I would not worry about learning this until you actually encounter something in the applications
12:54
you're building where you actually need to learn it. Now let's jump over to front end development libraries
12:59
Here is Bootstrap that is a component library where they've already done the CSS and they provide components that you can use to help speed up building an application
13:06
You may not be using Bootstrap when you're working for a company. They might have built out their own library, but learning how to use component libraries
13:12
and stuff like that is helpful. jQuery was really, really popular for doing a bunch of stuff with JavaScript
13:20
I wouldn't deep dive into jQuery at this point. Sass is one of the CSS preprocessors
13:25
Another one is Less. Just become familiar with the concept or the idea of it, but not necessarily deep dive
13:30
Do take the React course and work through that. Redux is also important
13:36
It's a very popular tool for managing your state within your application that is very
13:41
commonly used with React. In fact, you'll see down here is another course that's React and Redux
13:46
I would take the time to become familiar with these. Once you've hit that point where you feel like you are comfortable trying to start your
13:51
own project, do it, but maybe work through a couple of these initially
13:56
Then when you're ready to sharpen some of your skills and prepare for your next interviews, you can come to Code Wars and do something here in JavaScript and pass their first little test
14:09
Once you've developed your specialized skill set and you're ready to start looking for a job, one of the best ways that you can compete with computer science graduates and with bootcamp
14:15
graduates is by having a really nice portfolio of quality projects that you've done
14:20
You don't want to just fill it up with a bunch of super simplistic projects. A bunch of medium difficulty, high quality projects are going to be much better than
14:28
a single mediocre large project. Having just one project is going to scream newbie
14:35
Start small and build up from there. Each project, pick something that's a little harder and a little harder
14:39
Things to build that are going to solve problems that are related specifically to your own
14:43
hobbies and interests. This is going to be important because that's going to differentiate you from the computer
14:48
science grads and from the bootcamp grads who are oftentimes going to have portfolios
14:53
and resumes that look very similar to each other. Not to mention that the fastest way to really grow and develop your skills is by working
14:59
on actual real world problems. When you start applying for jobs, don't be idle
15:03
You want to take that time waiting for calls for interviews and build websites for family members
15:09
Maybe try some freelancing or even build applications for your current employer, even if they aren't
15:14
asking for it. For your first job, don't set your heart on Fang companies, your Facebook, Amazon, Apple
15:19
Google, those kinds of companies, because your chances of getting in there is not likely
15:23
to happen. Instead, focus on getting your foot in the door, wherever you can into the industry
15:28
and then spend that next year to 18 months working at that company before moving on to
15:32
another company so that you can actually get a better pay bump and be working on harder
15:37
and more challenging projects. You just don't want to get stuck at that first company for very long
15:41
On your resume, sell yourself as being proficient in those specialized areas
15:45
Don't pretend to know everything out there, but stay focused, be confident in your ability
15:49
to learn, be patient and persistent, and you are going to find success
15:53
You definitely want to create a LinkedIn profile and have that polished and start working
15:57
with recruiters, but it's important to remember that it's 10 times more effective to actually
16:02
get your resume into the hands of a hiring manager directly than it is to submit an application
16:07
through LinkedIn or through some other website. And then when you're in an interview and you get a question that you get stuck on, don't
16:12
be afraid to acknowledge that you don't know that thing, but don't just stand there like a deer in the headlights
16:16
One of the things that I've found is really successful is that when you encounter something you don't know, but you might have insights into the rest of the problem or ideas on how
16:23
you'd solve things, stop focusing on the aspect you don't know and just start talking
16:27
about all the things you do know, the things you would do, the ideas you have, how you'd
16:32
approach it and what you do to actually figure out the piece that is missing. That way you're giving more context about how much you do know and it shows that, hey
16:39
you might not know that one thing, but you actually understand the big picture
16:43
Use every opportunity you have to focus on the stuff that you do know
16:47
I'm excited for you and look forward to your success. P.S. My first interview was really weird
16:51
I'll leave a link up here and down in the comments below if you want to see that and
16:55
I'll see you in the next one. Laters