Helpful Resources

Helpful Resources

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!

There are a ton of educational sites where you can find programming tutorials.

Some of my favorites are Codecademy, Udemy, Udacity, Team Treehouse, and Khan Academy.

Learn the core concepts of the language

While the parts of this step that apply will vary depending on the language you choose, all programming languages have fundamental concepts that are essential to building useful programs. Learning and mastering these concepts early will make it easier to solve problems and create powerful and efficient code. Below are just some of the core concepts found in many different languages:

    • Variables - A variable is a way to store and refer to changing pieces of data. Variables can be manipulated, and often have defined types such as "integers", "characters", and others, which determine the type of data that can be stored. When coding, variables typically have names that make them somewhat identifiable to a human reader. This makes it easier to understand how the variable interacts with the rest of the code.

    • Conditional Statements - A conditional statement is an action that is performed based on whether the statement is true or not. The most common form of a conditional statement is the "If-Then" statement. If the statement is true (e.g. x = 5) then one thing happens. If the statement is false (e.g. x != 5), then something else happens.

    • Functions or Subroutines - The actual name for this concept may be called something different depending on the language. It could also be "Procedure", a "Method", or a "Callable Unit". This is essentially a smaller program within a larger program. A function can be "called" by the program multiple times, allowing the programmer to efficiently create complex programs.

    • Data input - This is a broad concept that is used in nearly every language. it involves handling a user's input as well as storing that data. How that data is gathered depend on the type of program and the inputs available to the user (keyboard, file, etc.). This is closely linked to Output, which is how the result is returned to the user, be it displayed on the screen or delivered in a file.

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.