A Beginner’s Introduction to the World of Code…

Developing a proper learner’s mindset and overcoming our inherent fears.

Benny Louie
Sep 25 · 12 min read

Nowadays, almost everyone has at least some basic knowledge of the internet. Whether it’s simply browsing websites or being active on social media, it’s impossible to escape from our dependence on code. Despite this reliance, unless you’re a software developer with at least some knowledge of the language of code, it may all seem like magic.

How can one enter the world of coding, and towards the path of a software developer? How can we become knowledgable in this field from a state of complete obliviousness?

In this blog, we will be covering my experience being introduced to the world of code. More specifically, into the language of Ruby.


What exactly are the challenges for a person completely ignorant of code trying to become knowledgable in it? I’ve identified three.

Language Comprehension

Before entering the complex world of coding, I had no clue what code was. I knew that code existed but I didn’t know anything about how it worked. Everything I knew about code was what I saw from television: a guy in front of a computer rapidly typing away on a keyboard and making some sort of magic just happen. That’s what code was to me: Magic.

I assumed that’s how all software developers were: fast with their fingers, and just super super smart. I even thought they must be math geniuses! It made sense though. Computers work with numbers and stuff and therefore a software developer, who codes using computers must be extremely proficient with numbers as well.

But as I started learning about coding languages, it turned out to be a little different. Code isn’t just a combination of numbers that only computers can understand. You don’t need to be a math genius to learn it. It’s a language that people use to communicate with computers. In other words, it has to be understood by people as well. It’s not all numbers. There are letters and symbols as well. It’s quite literally, a coding language!

Obviously, there are many different types of coding languages. There’s Ruby, Javascript, Python, and much more. When I first learned this I was overwhelmed. How could anyone learn so many different languages and be proficient at all of them as well? I tried learning Spanish in high school and that didn’t quite work out. I know people who studied a foreign language but gradually forgot it as they got older. How could it be possible for one person to learn so many different coding languages then?

The answer is simple: many coding languages follow similar syntax. There are sets of standard conventions that these languages utilize. Just like a foreign language consists of vocabulary and grammar, each coding language consists of its own vocabulary and syntax. However, their grammar can be very similar.

For example:

random_name = {key1 : val1, key2 : val2, key3 : val3}

The above code would be called a “dictionary” in the language of Python but called a “hash” in the language of Ruby.

random_name = [value1, value2, value3]

The above code is called a “list” in Python and an “array” in Ruby.

Most coding languages have such similar syntax and vocabulary so it becomes much easier to learn another language once you’ve mastered one.

Understanding the Tools

So you’ve learned a coding language or two and can be considered quite proficient in it. Now what? What exactly can you do with this knowledge? This is can be the most challenging fear to overcome for many incoming developers. Unlike a foreign language where mastery can instantly gives you the skill to become a translator, no such profession exists in the world of code. You can’t make a career of translating a coding language for people. Well, you can if you’re a teacher but if your goal is to become a software developer, you’ll need much more.

In a more technical sense, all software developers are translators. They’re translating a set of instructions into a language to be read and understood by computers. But that’s not exactly the end goal of a software developer. The goal is to create something that can be used by the common people, who will know nothing of code.

How can you use your mastery of a coding language and create something that a person with no knowledge of code can use? Something like an interactive website or an app for the phone? Being capable of creating such universal applications is where everything you’ve learned comes to fruition.

There are many tools you will come across as you are learning to code. For now, let’s focus on two: library and framework. These are some of the tools you will be using while developing your application or website.

Library

During my process of learning code, I’ve come across the term “library” quite often. I’ve needed to install a bunch of code libraries to assist myself while I was learning different code languages. Most of the time, I had no idea what I was doing and just followed along. I couldn’t help but worry: Is it really considered learning if learned by using something I don’t fully understand?

What exactly is a library? To put it plainly, it’s a set of pre-written code that helps other developers solve common problems. It consists of a set of methods and functions that becomes available to use once the corresponding library is installed.

Is it important to master the underlying code within all these libraries? My conclusion thus far is no. A surgeon wouldn’t go out of his way to learn how his tools are made. Instead, the surgeon would work on improving his or her techniques instead. The same concept applies for software developers. Instead of trying to understand something that has already been solved, it’d be better to move along and work on improving our overall grasp of the language.

Framework

Much like libraries, frameworks are another tool that are pretty prevalent in the process of learning how to code. It is also pre-written code that many developers work on top of.

So what is a framework and how does it differ from a library?

If a library is a set of methods and functions, a framework is a set of files and folders. A library is like a bank of complex words and a framework is like a template people can use. If I wanted to make an essay sound more sophisticated, I would pull words from that word bank. If I wanted my essay to be structured to look more appealing, I’d use work on top of a template. The same can be said for a library and a framework in code.

Yes. It’s pre-written code, but it exists to save us the trouble of manually creating the individual folders and installing other required tools for our applications. To write the code ourselves each time we want to create a new application is not only repetitive, but also time consuming.


The number one thing to grasp during your process of learning to code:

Don’t Repeat Yourself (DRY).

Developers like to simplify everything. If you find yourself writing code and suddenly feel like you’ve already written the same thing somewhere else in your code, you probably need to do some refactoring(aka simplifying your code)! Look through your code and find ways to bundle similar methods and/or functions together. This sort of simplifying process is common and a necessity in the world of code.

Visualizing the Paths

As you code, you’ll find yourself jumping back and forth between one file and another. Why? Because each file will likely rely on another to work properly.

While writing code, you have to picture the different reliances and where the return value of each code leads.

Remember that there will be an input and and output. As your code becomes bigger and more complicated, this may become more difficult to picture but that’s where refactoring comes in. Bundle similar methods together. Having your code organized really comes a long way when it comes to code. This is especially important when you have to work with other people.

During the process of learning code, I’ve found this sort of visualization especially handy. Through this, you can form your your own theories on how a code should work and then either confirm your theory or disprove it by running your code. This habit of theory formation and theory confirmation will become very useful when you have to debug your code. You can find out exactly where your thought process became askew.

To briefly give an example of a code in Ruby:

def until_loop
i = 10
until i == 0
print "Countdown #{i}!"
i -= 1
end
end

What does the above code do? If you understand code, it is very simple. If you don’t, you can still form a theory.

Using basic English: the method is called until_loop so it should be doing something over and over until a certain condition is met.

Now I have my theory. Is it correct? Let’s have a look.

Starting from the top:

  1. I’m giving the method a name that when read, can easily tell other developers what it should be doing. This sort of naming syntax is important since it will allow others as well as yourself to follow along your code even if your code becomes very complicated. In this case, I’ve written a code called an until_loop. From here I can already start forming a theory on what the method should do.
  2. In my next line of code I wrote: i = 10. What I’ve done here is defined a variable: i and set its value to 10.
  3. The third line is where I wrote the function my method will be utilizing. The function, until, is inherent in the language of Ruby. In essence, it will repeat itself “until” a certain condition is fulfilled. I define my condition next to it as i == 10. This means exactly how it is read: Until the value of the variable i becomes equivalent to 0, the loop will continue. There is double equal sign because that’s just how the syntax of code is. (A single equal sign is used to assign a variable and a double equal sign is how one would normally use a single equal sign in math.)
  4. In my next two lines I define what my function will be looping (or repeating). It will print out Countdown #{i}! and subtract the value of 1 from its initial value. The initial value of i has already been set to 10. Each loop will subtract 1 from 10 until the value becomes 0. The #{i} inside Countdown #{i}! is what is known as “string interpolation.” Essentially I will be substituting the value of i inside #{i} (In this case, making it 10 in the first loop, 9 in the second, etc. until it becomes 0 during which the loop ends without printing anything else).
  5. Then, I wrote in two end statements. One to close the loop and one to show where the definition of my method ends.
  6. What I get is:
Countdown 10!Countdown 9!Countdown 8!Countdown 7!Countdown 6!Countdown 5!Countdown 4! Countdown 3! Countdown 2!Countdown 1!

The print method displays whatever I wrote in quotations next to it. But it will not space out the different iterations of my loop. If I wanted it to be displayed in a more visually appealing way, I would use the puts method which automatically adds a new line to each iteration.

Countdown 10!Countdown 9!Countdown 8!Countdown 7!Countdown 6!Countdown 5!Countdown 4!Countdown 3!Countdown 2!Countdown 1!

How about something in Python? I’m not too familiar with it but a friend once sent me a problem in this particular code language. It’s called list comprehension:

x = [1, 2, 3]
y = [i ** 2 for i in x if i % 2 == 0]

What is this particular piece of code asking for?

Let’s break it down:

  1. x is a variable and has been assigned a list of numbers: 1, 2, 3.
  2. y has been given some sort of problem. A new variable is defined inside it, i.
  3. I know that two asterisks in Ruby means an exponential is being performed. Thanks to common convention between code languages, I can assume the same is true for Python (If it isn’t, I can just google the correct meaning 😁).
  4. So I need to square the variable i. But what is i? Following along the code I see it says: for i in x. What does that mean? I can assume that the variable represents one of the elements inside the array assigned to the variable x. In other words, i currently has no set value but changes depending on which element of x I am referencing. Some sort of loop is occurring (I know beforehand that there exists a for loop in Python but assume I don’t but am aware of things like while loops and until loops in Ruby, I can infer similar loops also exist in Python. And, as I have already mentioned: I can google!).
  5. The next part of the code is: if i % 2 == 0. Like before, I can assume the % has the same function as in Ruby. It’s a function that performs division on two numbers and returns the remainder. In other words, this particular piece of code is a conditional where that remainder must equal 0.
  6. Time to put it all together! What is the code doing? It will square an instance of an element inside the list of x. When will it do this? It will do this if I can divide that particular instance by 2 and get a remainder of 0.
  7. So what is the value of y given all that I have inferred? Well, the problem is defined inside brackets so I already know it’s a list. Which of the numbers inside the list defined by x if divided by 2 will result in a remainder of 0? The answer can only be the number 2. In other words, that is the only number I will be squaring and y has a value of [4].

Now, I obviously have checked my answer before including it in this blog but even if it turns out my answer is incorrect, by breaking the problem up step by step I can always figure out where I went wrong and correct it from there.


This is the beauty of code: It’s very straightforward. As long as you know the definition of an individual function you can form a theory of how it can apply to a particular problem. You can also structure it in a way that is easily comprehended.

If your code gets more complex just remember the values you are getting for your methods. My above method only displays something on the screen so there is no defined value.

In the future, remember that in order to give value to something, it has to use the return method. Whatever you write next to return is the method’s assigned value. This value is what I will be using if I decided to assign this method to a variable.


Summary

Throughout this blog, I’ve summarized the basic understanding that I’ve slowly developed in my process of learning code. I’ve tried to break down what it is like to start one’s journey into the world of code and how one can overcome some of the challenges he or she will face.

Don’t be afraid of not knowing enough because you likely never will. The greatest aspect of being a developer is that it’s not necessarily required to know everything. It’s more important to know where you can find the required knowledge as well as how to apply it.

All the instructors I’ve had have said the same thing: “Google is your best friend!” When it comes to code, it’s a community. What you don’t know, you will likely be able to find an answer if you search hard enough and in the right places. That’s why during your process of learning code, your focus should be learning how to apply the different tools they give you. Yes, learning the language is important. But it is more important to know how to use the language properly.

Using what you have learned about the coding language, form your own theories on how you should be structuring your code to get the result you want and test it. Repeatedly test it until you become familiar with it!

That really is the essence of code: a repetition of tests that will come with failures and successes. It is only in correcting our failures that we as developers will grow.


Here is my version of a developer’s mindset:

  1. Form a theory.
  2. Test your theory.
  3. Google if needed!
  4. Repeat.

Don’t feel burdened over the fact that you don’t know enough. It’s enough if you know where to find what you need as well as how to apply it.

The Startup

Medium's largest active publication, followed by +539K people. Follow to join our community.

Benny Louie

Written by

Amateur Code Student @Flatiron School, also occasional Writer :P

The Startup

Medium's largest active publication, followed by +539K people. Follow to join our community.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade