Most people who are interested in programming have the same problem: the starting point is unclear. Well I’m going to try and create a guide to help clear up this uncertainty. This guide will be a series of steps, with a few helpful links and some explanations. With that being said, you probably don’t need to follow this guide to a T. Each person is different and learns differently. So once you start, feel free to deviate and venture into the huge field of computer science. Now, let’s start with our first step.

# Step 1

## Sharpen your math skills

Every programmer should be well versed in mathematics, specifically discrete math. Discrete math is not solving what $2 + 2$ is or calculating $\int_{1}^{2} \frac{1}{x} dx$. It is logical problem solving. It involves knowledge of combinatorics, propositional logic, number theory, congruences, induction, recursion, and basic graph theory. Seems like a lot, right? That’s okay. If you put in the effort now, everything else will be much simpler.

Discrete math is imperative to understanding programming logic. Without it, understanding the most basic of concepts is much more difficult. So, take the time to learn all this information. A good place to start is this book.

## Learn about Boolean logic

George Boole is very important in programming and computer science. He invented Boolean logic. This logic is how computer scientists see the world. Logical statements look like this

$$p \land q \lor r \implies s$$

To the untrained eye, this is very confusing. However, once you learn Boolean logic, it will say:

$$\text{p and q or r implies s}$$

This topic is covered in discrete mathematics, but with a little bit of self-exploration, you’ll be ready to take on your first programming language.

# Step 2

## Pick an easy programming language

This is where you start to get some freedom in the programming world. Your first language should be a simple, well-documented language. Personally, I know many people who started with Python. Others started with Java. A few daring souls started with C. But I started with Racket. Let me list some information about each.

## Start following tutorials and enroll in MOOCs

I personally believe that one of the best ways to learn is through experience. So, start by building a basic application, like a calculator. Then follow a tutorial to learn what to do. Alongside this experimental learning, enroll in a MOOC (massively online open course). This will be the structure in your learning. With this, you can also watch tutorial videos from Khan Academy or resources like that.

# Step 3

## Expand your repertoire

Once you have become proficient in you first language, expand you knowledge base by learning a new language. For example, I first learned Racket. Then, I moved to Java and Scala. While learning Java, I started to pick up some Python. After learning those languages, I moved to web development with JavaScript, HTML, PHP, and CSS. Finally, I started to learn C and now I am developing my own language with my knowledge and experiences.

I hope this guide helps you start your journey into the programming world!