With technology becoming more and more integrated into our everyday lives, the demand for more jobs in technical fields, especially those involving computer programming, becomes more available and more competitive.

If you are someone who wants to learn how to learn programming for beginners with absolutely no experience in coding, here's how you can do so based on my own experience.

I've been through this process myself in three different ways, and I'll share with you my findings and experiences so you can save more time while you start yours. I started to learn programming around my 3rd year of high school. Unlike other students though, I learned programming on my own. My school didn't offer any programming courses, so I had to take matters with my own hands.

I have learned how to code in 3 different ways:

  1. self taught
  2. online course
  3. formally in class

Personally, I found myself getting the most results doing it self-taught; however, it may vary for others. Before I continue, I want to clarify things a bit first.

I started out at being self-taught. I later took an online course to learn a different programming language. Finally when I started college, I was required to take several programming courses.

Prerequisite Knowledge and Nice To Know

When it comes to programming, there isn't much knowledge you need to know prior to starting. It would be nice to know math up to the Pre-Algebra level (even the basics of Pre-Algebra is fine). You won't need to rely on harder math knowledge, such as calculus, statistics, and probability until you reach harder concepts such as machine learning and optimization problems. For the most part, you should be able to survive with knowledge up to Pre-Algebra.

Choosing a Programming Language

Don't worry too much about choosing a programming language is what people often say. I kind of agree, and I kind of disagree with that.

I personally learned C++ and played around with Python early on. I ended up choosing to learn C++ as my first programming language out of all the available options out there.

Which one should you learn for starters?

First off, it depends. Do you want to make mobile apps? Do you want to make websites? Do you want to make desktop apps? If you don't know, that's fine!

For most people, it usually starts off with C++, Python or Java since most universities start off with either one. At the end of the day, it's just personal preference.

If you want to make websites, then that's a different beast. You'll want to learn HTML and CSS, followed by Javascript and then learn a backend language such as PHP and a database querying language such as mySQL.

If you want to make Android Apps someday, you're better off starting with Java since that's the native programming language that Android Apps are made from.

As for iOS Apps, they can be made with Objective C or Swift. However, because you are a beginner, you're better off tackling C++ and then transition to Objective C or Swift.

But let's say you are into hardware and IoT. Then you should learn C or C++. In terms of most versatile (in case you change your mind about going the hardware route), go with C++.

I know this due to research, personal experience, and the fact that I majored in Computer Engineering, and this type of stuff is one of the several things that interests me.

Programming Concepts

One of the tough things about learning programming on your own and without someone to ask for help or ask questions on is that it's sometimes a hit or miss. You might not be going about learning the topic in the most efficient way possible. That's why in school, your teacher gives you a syllabus. A syllabus is basically something that outlines what you're going to learn in that course.

In the case of programming, a very general overview is:

  1. Procedural Programming
  2. Object Oriented Programming

So first, you'll start off by exploring the category of procedural programming. Within procedural programming, you'll learn a lot of the basic programming concepts you'll use often.

Once you've learned enough of it, it's time for you to move on to Object Oriented Programming (or OOP for short). Within Object Oriented Programming, you'll also have several more concepts to learn.

To make your life easier, here is a quick syllabus of the topics you should cover when learning procedural programming (just to demystify some of the learning process for you.)

Procedural Programming

  1. Displaying Text or Printing Text
  2. Data Types and Variables
  3. Getting User Input
  4. If/Else Statements
  5. String Data Types
  6. While Loop
  7. For Loop
  8. Do While Loop
  9. Arrays
  10. Switch Statements
  11. Multidimensional Arrays (2D and 3D Arrays)
  12. Functions
  13. Recursion
  14. Enumerations

Now, there are more concepts to learn, but you should at least cover these 14 at the bare minimum. I organized them in the way I would learn them.

Here's a very brief overview for Object Oriented Programming.

Object Oriented Programming

  1. Encapsulation
  2. Abstraction
  3. Inheritance
  4. Polymorphism

Practice Makes Perfect

Now, I'm sure you've heard from people that say programming is hard, there's a lot of stuff to memorize, etc.

Well, one way to make memorization easier is to actually practice what you learn. Let's say you read and learned about how to print text to the screen just a minute ago. Now I want you to immediately fire up your editor and start creating a simple program that will display your text of choice. Play around with it. See what happens if the text goes to a new line. Will whitespace interfere with the program's functionality? etc.

Another tip is to practice your older concepts as you move on so that you don't forget.

I have one more tip that will make the entire process of learning programming a lot easier that most people won't bring up at all, and that is project-based programming. I'll explain that in the next section.

Project-Based Programming

Finally, the thing that works best for me is to approach learning programming with a project-oriented mindset (or goals-based).

Try to come up with a project you wish to make. No matter how hard or ambiguous it may be. Just assume it is possible.

Then, while you are learning a new programming concept every day, try to make a super dumbed down version of the program project you wish to make with what you've learned so far.

For example, let's say you wanted to make a RPG game. You don't know how to make one, but you've played one before so you know what the experience is like. The new player is usually greeted with a screen with the option to create a new profile or use an existing profile. Then based on the decision made, the game will proceed with where they last left off or a new storyline.

When you first start off, you'll learn how to display text on the screen. So might as well display a dumbed down menu or list of text that represents the options a user can choose. Once you learn about if/else statements which allow your program to make decisions based on certain conditions, you can probably make a feature that mimics which option the user chose to start the game, etc.

Once you've learned the basics of procedural programming, you can branch out further and learn object oriented programming while starting to improve upon the project that you have so far. At the same time, do some research on how to actually make a game from scratch using the programming language you've chosen to learn.

By learning programming via a project-oriented approach, you'll not only be motivated, but you'll also have a clear objective as to what you're trying to accomplish. I'm sure you've probably asked yourself before in school, "why am I learning this in class? It's not like I'm going to use it after I finish school." Well, because you set a goal to create whatever it is you wanted to, you'll make the connections on how each concept is going to be used in your program! :)

Conclusion

Hopefully after reading the entire article, I've demystified the mysteries of approaching the process of learning programming as a beginner.