How to start with programming?
Tags: learning, programming, beginners, javascript
Published: 2020-08-15 10:50:57

---
title: How to start with programming?
published: true
description: 
tags: learning, programming, beginners, javascript
//cover_image: https://direct_url_to_image.jpg
---

I’ve been interested in programming since I was 16, I studied computer science and was lucky to start a career as a software engineer. This, however, doesn’t mean that everyone necessarily has to take the same path as I did. I know many people who started programming without any previous experience or education and still succeeded. Although programming might be very challenging at first, it will most likely be fun. You will be able to create amazing stuff on your device and work wherever you are.

Many people ask me whether it’s possible to learn it, how hard it is, and where to start. I always try to give them as many positive answers as possible and encourage them to try it. On the other hand, I struggle to give them a simple explanation, so I decided to share a few tips with you.

Can anyone learn how to program? I think if you can read, write and count, then you will pretty much be able to learn at least basics of programming. There is no secret magic behind it, we’re not special magic species or wizards like Harry Potter, there is no secret Hogwarts college behind platform 9 and 3/4 for programmers. Don’t be afraid and just do it! That’s the most important first step.

Can anyone make a living on it? Maybe not. In my opinion, it depends on you and how much effort you want to put in it and there is no doubt that you need a lot of passion to become a good software developer. Not everyone has it, as not everyone necessarily likes music (no offense, I like it). Is it a problem if you are not good at math? No, I’m a good example it’s not :).

Now as you are motivated, let’s look at the difficult part, programming itself. Before I tell you where to start, let me explain what programming actually is.

## Definition of programming
Programming means describing instructions of what we want our computer to do. We need a programming language, as computers don’t understand any human language, only machine code consisted of zeros and ones like this 1101010101.

Such instructions are usually in a textual form called “source code” written in a given programming language. It’s just a bunch of keywords and symbols (syntax) with given meaning (semantics), kind of similar to English, with more structure.

## Selecting a programming language
Before you start, you need to select a programming language. There are hundreds of them, but I don’t want to make you confused. In the beginning, I recommend to choose JavaScript. You can find it everywhere as you can create many different kinds of apps (mobile, desktop, web). There is a lot of resources on the internet, some of them for free.

Although I highly recommend JavaScript, another good option for you might be Java or Python. If you have a good friend who knows one of them and is able to help you with it, these could be even better for you.

## Where to start?
The best idea is to start with [Welcome to learn.freeCodeCamp!](https://learn.freecodecamp.org/), specifically, with these two courses:
  * Responsive Web Design Certification (I would go for this one if you are interested in making websites or web apps. Anyway, I think you will always find a way to use the basics of HTML and CSS. The benefit is that it’s more visual and you can apply this knowledge with your learning of JS later on.)
  * JavaScript Algorithms and Data Structures Certification
Each course has around 300 hours or learning material. Don't be scared by this amount of time. Courses are divided into small interactive sections where you have a short explanation of the topic and playground where you can directly try and test your understanding to progress in small steps.

Other good JavaScript resources for beginners:
  * [Khan Academy - Unit: Intro to JS: Drawing & Animation](https://www.khanacademy.org/computing/computer-programming/programming)
  * [Khan Academy - Unit: Programming](https://www.khanacademy.org/computing/ap-computer-science-principles/programming-101)
  * [Eloquent JavaScript](https://eloquentjavascript.net/index.html). It’s a free book about JavaScript, from the very basic to the most advanced part. Read and try at least Intro plus the first 5 chapters, which could be enough to start with. After practicing you can check out other articles or courses for JavaScript basics and come back later for the advanced stuff.
  * [JavaScript Tutorial: Learn JavaScript For Free | Codecademy](https://www.codecademy.com/learn/introduction-to-javascript)
  * [Code School: JavaScript Road Trip Part 1 | Pluralsight](https://www.pluralsight.com/courses/code-school-javascript-road-trip-part-1)
  * [The Modern Javascript Tutorial](https://javascript.info/)

I also like [@eggheadio](https://egghead.io/). Although courses for JavaScript are paid, there are free courses related to other programming topics.

I’ve recently discovered the [Programming 101 with “Uncle Bob”](https://www.youtube.com/watch?v=-1CuAiKdBQs) video. I would say the content is mainly language agnostic, but there is a Java demo at the end. It nicely introduces you to programming logic. Look at the first 35 minutes, the rest is optional.

If you’ve really decided that Java will be your first language, look at [Course | Programming Methodology - YouTube](https://www.youtube.com/playlist?list=PL84A56BC7F4A1F852). It’s a course from Stanford University, not strictly about Java, but more about general programming principles demonstrated with Java programming language and taught by the most passionate teacher I’ve ever seen. I guess it’s not for total beginners, take it as a part of education, not only a resource for your learning.

## What’s next
After you make your first steps into programming, you should already know what exactly you are interested in. Mobile apps? Web apps? Games? Your interests can also influence your decision about choosing a programming language. I just want you to know that this is not the end, but the beginning. If you are thinking about taking programming seriously, as your job, [Green Fox Academy - Junior Developer Course](https://www.greenfoxacademy.cz/en/junior-developer#thematics) provides a good overview and a roadmap of the programmer’s knowledge base.

## Learning tips
* **Read, watch, listen.**
* **Do** tutorials, don't bother with re-writing it, that's ok.
* **Write your own stuff**. Inspire yourself with a tutorial, then change requirements a little. If you did a tutorial on the to-do list, change the to-do list to a list of finance records. In this way, you’ll be enforced to think more about what you’re learning, not only re-writing code from tutorials.
* **Practice, practice, practice.** Have you heard about 10 000 hours rule? You learn programming only by writing code.
* **Focus.** You will see a lot of different resources, opinions, job opportunities for a lot of different technologies. Although a software development career is a never-ending learning story, it’s good to master your already gained skills first, don’t jump from one language to another. 
* **Patience**. I said it is possible, but I didn’t say it would be easy. It takes a lot of effort. It takes a lot of time. Don’t give up with first struggles. Don’t be too harsh to yourself. You don’t have to get everything for the first time, even for the second or third time.
* **Nobody knows what they're doing.** Don’t forget, software engineering is a young field and  [Nobody knows what the fuck they’re doing – Max Stoiber – Medium](https://medium.com/@mxstbr/nobody-knows-what-the-fuck-they-re-doing-b62945f88b0d)

I hope you’re now motivated and couldn’t wait to start. Good luck and enjoy the road!

*To my lovely girlfriend.*