I started learning to code. I will not focus on the whys on this post, rather on the hows. I will be documenting how I started, what I’ve been using, where I stand right now, and where I think I am headed. This will be useful if you want to start learning to code or just started. I will also only be recommending resources that I have had experience with. Let’s hop into it.
Choosing a language
In this post, I will only be talking about object-oriented languages because that’s the only thing that I dabbled in so far. They include Python, C++, SQL, etc.
If you want to be skilled in coding, the language you start with doesn’t matter that much. I found that understanding the concepts matters more; things like what is a “variable”, how to “iterate” through a list, how to use logical operators to have a “control flow” in your program (no need to worry about these for now if you don’t know anything about coding, just read on.)
So, choosing a language didn’t give me trouble. I heard that Python is easy to pick up because of how uncomplicated its syntax is. This simplicity presented little friction when I was learning python because I didn’t spend a lot of time on the web trying to figure out what a certain command means, rather I was able to focus on learning what that command does. So when in doubt of what you want to learn first, learn Python. It’s important to just start because you can always switch. And when you switch you will have already gained valuable experience from finally knowing some concepts of programming.
Syntax (or the ABCs of a language)
The syntax is the wording that you use to communicate to the machine what you want it to do. Every language has its specific syntax that you have to learn from scratch when you want to switch languages. Learning syntax and being comfortable comes down to constant practice and rote memorization. A friend of mine suggested the useful tip of having a notebook where I write down the syntax, code that I usually use, and an explanation of what they do to serve as a reference for when I forget. I do that and I also use Evernote to take notes on what I learn.
How I started
I had no coding background whatsoever. I started watching youtube videos(hyperlink) on python during winter break at a local library back home to familiarize myself. Then I started reading the book “Python Crash Course A Hands-On, Project-Based Introduction” and was taking notes in Evernote on the airplane back for my spring semester this year(and what a spring semester it was. 2020, you will be remembered). But I was busy with classes and couldn’t keep up with my programming. I wanted to re-start doing it and, fortunately, I received a free 3-month Codecademy pro subscription. So I have been doing that for about one month now. I only do the interactive lessons where I can get a tight feedback loop on my understanding and learn by doing. I find that watching videos or taking multiple-choice quizzes on coding or not the best way to learn. Here’s a nice segue into the topic of how I learn.
How I learn
During the Codecademy lesson sessions, I force myself to look at the code first, guess what it does, then take a look at the explanation to see if I guessed correctly. If I have no idea what is going on in the code I skim through the explanation and if it’s not sufficient to understand, I look up the particular concept/syntax on geekforgeek.com, Stack Overflow, or the python documentation. If it’s code that I don’t understand I look at the general syntax and an example, and that usually clears things up. Then I go back to Codecademy and do the exercise in the lesson. I use focus timers usually 20 minutes and take breaks in between. If I spend too much time on a particular concept (which for me is usually 30-40 minutes) I move on to the next lesson and make a note to go back to it later. If it’s a concept that I feel is important to understand because other things are going to build on top of it, then I take a longer break and come back to it; read up on documentation, look up what I don’t understand on forums or other websites (resources I generally use are Codecademy forums, geekforgeek.com, youtube videos, very rarely Stack Overflow). I try to ask myself exactly what it is that I don’t understand and look up that specific thing online. I still haven’t mastered the art of “looking [coding questions] up on Google”, but it’s something that comes with practice.
It is important to have a place where you note down the questions that pop into your head while learning to code that are not really relevant to the topic at hand or that would go on tangents. Jot those questions down and look them up later, because this is how you expand your knowledge and make your learning more fun. I call them rabbit hole questions because they tend to take you far away from the question’s starting point. Which is good, the important thing is not to pursue them during the time that you set for coding. But setting a specific time just to pursue these rabbit hole questions is a must.
It’s also very important to remind myself not to rush and enjoy learning the concepts. It’s a marathon, not a sprint (I hate using motivational quotes, and this one’s from Gary Vee, but in this case, it really is true. No more motivational quotes for a while. Pinky promise.)
Having a structured curriculum is crucial because this way you can engage in focused learning and learn the relevant topics. It would also take too much time to create my own curriculum. That is why I am using Codecademy. Another resource you could use is freecodecamp which doesn’t require any payment, but I haven’t used it yet so I can’t speak to how good it is. However, because Codecademy tends to hold your hand I am starting to branch out by doing projects I think of or that I find somewhere else on the internet.
To become good I have to immerse myself, and by that I mean:
1.Listen to podcasts. (which I do) 2. Read tech news.(which I don’t) 3. Talk with other coding buddies/friends. (which I do, kinda)
1. One great podcast I listen to is CodeNewbie. It’s for people that have just started to code and want to listen to other people’s experiences with programming. Great inspiration source.
2. I need to start reading tech news to stay on top of new technology.
3. I have yet to talk with other people consistently about coding, need to work on that more + engage with the various online communities(and they are many, which is one of the great things about coding. You can always find people who can help you out if you’re stuck.)
Learning to use keyboard shortcuts
Whenever I try to click or use the trackpad I force myself to think if there is a keyboard shortcut for the action I want to take. This is to build a habit of almost always only using the keyboard, which in the long-run makes me faster at typing code. I especially love the command-down shortcut to go straight to the next empty line of code(real time-saver).
Where I stand now
I finished most of the interactive lessons on the Python Codecademy course which is enough to have a good understanding of the basics and I am looking for a project to work on to apply my skills so I can better cement them in my brain. That means coding every day, as it has been for a month now. (I take a day off once a week usually though, gotta chill sometimes, you know?) At the same time I will be giving the book “Think Stats” (here’s an online free copy; where intuitive statistics is taught with python) a try. I also want to enroll in Statistics with R Specialization by Duke University on Coursera. After I finish that I will move on to SQL because I want to give Data Science a shot. I also want to have a stronger computer science background which is why I found that knowing discrete math helps a ton. I have to carve out some time daily or almost every other day to take an online course/read a book on it. I will keep you updated on how everything is going plus what resources I am using once I start doing it.