“I want to learn programming but I don’t know where to start”
The objective of this article is to make learning programming accessible to anyone.
Frequently Asked Questions
As a mentor, I am constantly asked the following:
“Which programming language should I learn if I’m new?”
“Which programming language is most in-demand for jobs?”
“What’s the most popular programming language?”
Top Programming Languages
If you’re looking for an official ranking of the top programming languages, you can find it here: IEEE Spectrum top programming languages
That list is great for checking whether a particular programming language is in use today. However, if you’re new to programming, I don’t recommend choosing a language solely based on a list.
How to choose a programming language
Computer science is an entirely cumulative field of study. That means, each successive topic builds off prior topics.
If you have previously attempted to learn programming (or any STEM field) in school, tried your best, but failed — you weren’t the problem. A good professor of any cumulative subject carefully curates the curriculum. Provided that each student has sufficiently prepared and satisfied the prerequisites, the expectations for the students’ prior knowledge should be clear. A good professor understands the expectations and assumes no knowledge beyond that scope. Anything outside of the expectations must be taught. Each topic in the curriculum is ordered sequentially, respective to the other topics.
When a subject is cumulative, meticulous attention must be paid when designing a course curriculum or learning path. With that said, don’t choose a language for its ranking; choose a language for which you have a complete learning path that makes no assumptions about prior knowledge.
A few words of advice
Before you begin learning how to code, it’s important to reflect on the point I made above: everything in computer science is cumulative.
I like to reiterate this because the biggest mistake you can make as an aspiring programmer is giving up because you don’t think you’re smart enough to learn programming. Learning to code has nothing to do with your intelligence. Yes, it’s difficult to learn programming, not because of who you are, but because there are a lot of topics to learn.
First rule, accept that the following scenario is going to happen: you’re introduced to a new topic that makes absolutely no sense to you.
That scenario is going to happen over and over again. How you handle that situation, each time it happens, is the only factor that will determine your success.
If the current topic you’re learning doesn’t make sense to you, stay where you are. Do not proceed to the next topic. To reiterate, the topics are cumulative. Skipping ahead is like trying to attach a roof to a house that lacks a frame, walls, and a foundation.
I find myself in this situation all the time. I often have to rewatch the same lecture of a video tutorial several times for me to grasp what I’m learning. Don’t get discouraged if you find yourself in my shoes.
If the tutorial (or book) you’re using didn’t sufficiently explain the topic, you’re going to have to find other resources that work for you. There’s no excuse for giving up just because your tutorial’s coverage of a topic didn’t work for you. You can find just about anything you’re looking to learn for free on YouTube. Figure out what to search for (e.g., [the topic] in [your programming language] + any other helpful keywords).
If you’re searching on YouTube for educational tutorials, check the stats first. Take a quick look at the rating and/or the view count. If you’re still unsure if a video is worth your time, read some of the comments to gage others’ opinions.
A lot of topics aren’t going to make sense the first time around. So, refrain from the negative self-thoughts.
The goal is to be conscious of your comprehension as you’re learning. As you progress through the learning path, you need to self-reflect. For each topic you cover, ask yourself questions such as:
“Does this topic make sense to me?”
“Was there any new terminology? If so, was a formal definition provided for each new term?”
“Were there any new skills? Do I understand how each new skill is used in application? Can I demonstrate my understanding of this skill by solving practice problems?”
“Will I remember what I just learned tomorrow? And the day after? If not, how am I going to commit it to memory?”
One last piece of advice: never underestimate the power of memorization. Memorization is a totally underutilized approach in learning. Yes, comprehension of a topic is the ultimate goal. However, comprehension may take time. If you are really struggling to grasp a topic, break down the topic and memorize the important terms. If you can’t comprehend how something works, your immediate goal should be memorization. If you need tips on how to tackle memorization, consider using the study card technique. You can read more about how I use this technique in my Interview Prep document.
1 — Computer Science Fundamentals
The first step is learning computer science fundamentals, which I cover in my article: Intro to Computer Science Terminology. This article is written specifically with my audience in mind — everyone. I intentionally created this so that it is easy to understand for anyone with no background in computers.
The concepts covered in the article are predominantly definitional. You can casually read through the article, and that’s fine it that suffices for you. I recommend committing these terms to memory. Approach each term as though you’re in school and you need to be able to recall each term’s definition for an exam. You don’t have to commit yourself so thoroughly if you don’t want to. However, the more of these concepts that you can commit to memory, the easier it will be to understand later topics.
2 — Propositional Logic (optional)
No, you don’t have to be strong in math to be a programmer. Math skills can be helpful, but they’re not necessary.
If you’re insecure about your math abilities, I recommend learning propositional logic. The principles covered in propositional logic are the building blocks of programming.
You can learn propositional logic from this YouTube tutorial: Basic Concepts in Propositional Logic.
3 — Java Programming
After you’ve learned the basics of computer science, you’ll be ready to learn a programming language.
I have put a lot of thought and effort into designing a path that is suitable for everyone, regardless of their background. I chose Java for this learning path because Java is the language that I am most experienced in.
Java is one of the most in-demand programming languages. It’s classified as an object-oriented programming language (you’ll learn what this means later on) and it’s used to make desktop, web, and mobile applications.
If you prefer learning from a book, I recommend the following: Head First Java.
If you’re looking for a video tutorial, I recommend watching videos #1–19, 31–33, 88, and 93 in the Java YouTube tutorial by Derek Banas: Java Video Tutorial.
The first video in the YouTube tutorial will direct you to download a computer program called Eclipse. Eclipse is an Integrated Development Environment(IDE). You can think of an IDE as a fancy term for a word editor that is made for programmers. It’s just a computer application that provides a text editor for programming, along with other tools for running your programs. Here’s the link to Derek Banas’s YouTube video on how to download Eclipse: Install Eclipse for Java.
4 — Algorithms and Data Structures
An algorithm is a set of instructions (or steps) for performing a specific task, where each step must be clearly defined, capable of being executed, and finite (meaning, it doesn’t continue executing infinitely).
A data structure is a way of organizing data in memory.
Algorithms and data structures are two of the most challenging topics of programming. You don’t need to learn algorithms for basic competency in programming. However, if you aspire to work as a software engineer at a reputable tech company, you will be expected to demonstrate comprehension of algorithms and data structures during the interviews.
On a personal note, the tutorial below is what took my algorithm skills from novice to expert: Udemy tutorial on Algorithms and Data Structures. I’ve purchased a lot of tutorials on algorithms. This was by far the most comprehensive one that I’ve come across. Whether you want to learn algorithms and data structures or prepare for technical interviews, this tutorial is your best bet for success.
Note: the course is expensive, but essential. I was able to get in contact with the instructor, and she has generously offered a coupon code which reduces the cost from $50 to $10. The coupon code will be applied automatically when you click the link.
I recommend using the following tutorial alongside the Udemy tutorial: VisuAlgo. VisuAlgo is a free resource that shows visuals of how the values input into an algorithm change throughout its execution.
5— Android development
Android development is, in my opinion, one of the most fun applications of Java programming. Android apps are predominantly programmed in Java, so once you learn Java, you’re ready to learn Android.
Here is the best free video tutorial to start learning Android: Udacity-Android Development for Beginners.
After you complete the Udacity course above, you have a couple options where to go from there. There should be an extension to the above course that is taught by the same group of Google employees. The additional lectures should become visible once you get through the course (if you can’t find it, search for it on Udacity). That is a good option, especially since it’s free.
However, if you are willing to spend money on an outstanding book, I highly recommend the following: Head First Android Development: A Brain-Friendly Guide. This book gives detailed explanations and helpful visuals to really help you learn the underlying concepts of Android. Each chapter walks you through an example application. Everything is explained thoroughly, using words and diagrams that anyone can understand.
Stack Overflow is a website where programmers can get free help with their code. If you get stuck and want to ask a question, search for it first. If you can’t find your question, create an account and post the question yourself!
If you would like to learn more about getting into programming, are looking for your first role or are thinking about a career change then get in touch at firstname.lastname@example.org