What's it like to think like a programmer?

Why is HTML and CSS a breeze compared to JavaScript?

And why the heck is JavaScript so hard?

Well, we were thrilled when Kyle (aka Web Dev Simplified) agreed to sit down to answer these questions and talk with us about his developer journey. He shares how he fell in love with JavaScript and how he became a full time web development instructor.

This post contains affiliate links. I may receive compensation if you buy something. Read my disclosure for more details.

We'll let Kyle take it from here:

1. Tell us about yourself.

My name is Kyle Cook and I teach web development full time through YouTube, my blog, and my courses. I have helped millions of developers improve their skills as a web developer in a wide variety of areas including JavaScript, CSS, Node.js, and many more.

Before I became a full time teacher I was a full stack developer working at a small local contracting company. During my time there I worked with a wide variety of companies from small local companies with no on staff engineers to large technology giants like Disney.

2. Where did you learn web development?

I learned web development in a combination of multiple ways. I went to a 4 year university for a computer engineering degree and during that degree I learned a lot about programming as a whole, but didn't learn anything about web development.

Once I stumbled upon web development while in school, though, I immediately fell in love and devoted most of my free time to building projects and studying web development. Pretty much everything I learned about web development in my first 3 years came from blog articles, YouTube videos, and just building tons of projects I found enjoyable.

3. JavaScript is a tough language. How did you get so great at it?

I honestly didn't used to be that great at JavaScript. When I first started learning web development I didn't even know the difference between jQuery and JavaScript. I just thought they were the same thing.

I was actually much more into CSS when learning web development so my JavaScript skills were always lacking. Even when I landed my first full time job I still wasn't that great at JavaScript since my job was more backend focused than frontend focused and we didn't use JavaScript on the backend.

My skills as a JavaScript developer didn't really become that great until I started teaching JavaScript on my YouTube channel.

In order to teach JavaScript I had to ensure that I understood every aspect of JavaScript and how they fit together which drastically improved my JavaScript skills.

It is easy to learn enough about JavaScript to write a program that works, but if you need to understand it well enough to teach someone how to write that program it requires you to know so much more. This is why I always recommend that everyone learning JavaScript takes time to try to explain what the code they wrote does and why it works.

You don't even have to explain it to anybody. Just grab a stuffed animal and explain it to them. By doing this you will easily be able to see where the holes in your knowledge are.

teddy bear sitting on couchRubber ducky debugging with the nearest stuffed bear

4. When it comes to learning web development, a lot of web developers breeze through HTML & CSS but hit a wall at JavaScript. What advice do you have to help them break through?

JavaScript is usually a wall for most people since it is so much more complex and vast than HTML/CSS.

With JavaScript there are hundreds of concepts to understand and on top of that you have a complex and unforgiving syntax to learn. It is a lot like learning a foreign language in that you need to learn not only a bunch of new words, but also a bunch of grammar for connecting those words together.

The problem I see with most developers is they focus on learning as many concepts/features as possible but never focus on how to connect those concepts. This works fine with HTML/CSS, but with JavaScript you cannot get very far without learning how different concepts connect together. This is similar to if you decided to learn a foreign language, but only focused on learning new words and spent no time on the grammar needed to connect those words.

Whenever you learn JavaScript you need to focus on small individual concepts at first. Once you have those concepts down then you need to focus on how to connect those concepts together to build out projects. Then from there you can learn a new concept and repeat the process.

5. What's your favorite JavaScript feature?

There are so many features in JavaScript it is hard to pick a favorite, but I think that destructuring and the spread/rest operator have got to be my favorite.

They make working with functional programming so much easier and they also make working with functions that return arrays/objects easier. On top of that you can use destructuring to write out the explicit properties of objects that are parameters to functions such as an options object passed to a function.

6. What trips you up with JavaScript?

By far the thing that trips me up most in JavaScript is working with the DOM. The API for working with the DOM is kinda clunky in my opinion especially if you need to do lots of additions/changes and it is easy to mess up. This is why I generally prefer to work with React over just plain JavaScript on larger projects.

7. On your YouTube channel and your courses, you emphasize thinking like a programmer. What does it mean to think like a programmer?

Thinking like a programmer is simply the ability to break down large problems into smaller problems.

Usually as a programmer you will receive a task such as "Build a login page." This sounds like a daunting task on its own, but if you can break it down into small pieces such as setting up a user's table in the database, creating a login page, integrating password hashing, etc. then it becomes much easier.

You can then break each of these tasks into smaller steps such as breaking the login page down into create an email input, create two password inputs, etc.

This ability to deconstruct large problems into smaller and smaller problems is the most vital skill for any programmer and if you can master it you will be a great programmer.

computer login pageCreating a login page is a lot easier to do when you break down tasks into smaller chunks

8. For newbie developers, why is it oftentimes so easy to build a project with the help of an instructor, but so hard to think of one on your own?

The hardest part of building projects on your own is not knowing where to start. With a tutorial you are always told what to do next, how to start, and which problems to tackle. When you are on your own you are left with a blank text editor which is daunting.

You have no idea where to start and it can feel overwhelming.

This is where it pays to have the ability to break problems down into smaller pieces. If you can go from the problem of building an entire app to the smaller problem of creating a login page it is much easier to get started. It also helps to break down the logical portion of a problem separate from the code portion.

What I mean by this is to write out what you are planning to do in plain English first. That way when you are ready to write the code you don't have to worry about the logical portion since you already wrote out what the logic should do in English and now you just need to translate English to code.

9. Is there anything else you'd like to add?

The only other piece of advice I want to give is don't get discouraged.

Learning to code is hard and nobody learns it overnight. I have been programming for many years and I still am learning new things nearly everyday. I also make tons and tons of mistakes that you never see.

For every mistake that makes it into one of my tutorials there are hundreds or even thousands of mistakes that are behind the scenes that you never see.

Developers are also reading:

"I Was a Bit Lost To Be Honest": Real Tech Talk with Coder Coder