Several tries later this is how I taught myself the basics of coding

Posted by on January 22, 2021 · 14 mins read Categories: Code-ish

Let me preface by saying that I still can’t “code” per se. However, I’m starting to understand bits and pieces now, and I have figured at least how to build both my personal site and this blog (using Jekyll). To a lot of people these might seem pretty basic, but for your everyday internet-browsing and Netflix-watcher these are big steps!

Coding must be easy

These days with the amount of resources that are available online, it’s possible to learn programming online by yourself. I’ve heard this from people who’ve done it themselves (my co-founder included) and see a lot of children are picking it up as well. And I think this is what’s actually confusing because it makes it seem like learning to code by yourself must be “easy”. I definitely thought this. Yet over the years I’ve tried to ‘pick up some coding’ several times, only to end up learning about “for loops” and “css styling” multiple times.

What I originally tried

What I did first was Google “Easiest programming language for beginner” and after seeing that Python was a fast growing and popular language (beginner-friendly) I decided to give it a try. From there on I’ve tried multiple times to learn to code and have started (and not finished) all of the following:

  • Learn Python the Hard Way - Exercises that you can complete in a text editor. Think I did about 10-20 exercises.
  • Learn Python (SoloLearn) - Mobile app with different challenges and exercises. I actually finished about 75% of the exercises before ‘falling off the wagon’ and no longer remember some of the more difficult concepts now.
  • FreeCodeCamp - Free ‘interactive web platform’ that guides you with lessons and exercises. Finished about 75% of the ‘basics’ of HTML/CSS/Javascript. It shows I finished Bootstrap and jQuery at the time, but I didn’t even know what a framework was until this year.
  • CodeAcademy - Free ‘interactive web platform’ that also has lessons and exercises. I think I got stuck with certain exercises and stopped.
  • Complete Python Bootcamp from Zero to Hero (Udemy) - I think this was a course that was free or on sale and so I bought it but never really tried to use it.

Alright - so it’s clearly not for lack of “trying”. I went through the introductory concepts many times but it’s clear that I never really committed to finishing one, why was that?

I logged onto CodeAcademy and found this. So it looks like I first tried to in 2013 and did not get very far.

Well, this year when I once again said that I would “try to learn to code” it turned out a bit different. I took an online “Intro to Full Stack Web Development” course on Udemy and this time I actually finished it.

Why self-learning didn’t work the first couple of tries (aka what not to do)

So I thought a bit about why my experience this time, and why it turned out differently and I think it was the result of several factors that I’ve listed below:

I didn’t understand what I was doing and why. It was all a big mystery to me; “programming” or “coding” is such a broad concept. I had no idea what “Front-end” or “Back-end” was. I was learning ‘logic’ concepts such as if/else and arrays, but didn’t understand how this tied in to the stuff people used everyday (e.g., ‘web sites’ or ‘apps’, which is what I associated with “coding”).

When I first started I went in blindly thinking “being able to code” could be a useful skill and so I didn’t know what I was looking to learn specifically. Looking back, finishing a list of exercises was similar to an employee finishing assigned tasks without having a broader understanding of the overall context. This lead to the next problem.

I had no goal in mind. I actually set out to finish every module in the earlier courses listed. I figured that I would do a little bit here and there, and eventually learn some concepts along the way. Sure I accomplished this, but because I didn’t have a goal in mind there wasn’t much motivation to finish it.

I had no plan and didn’t set aside time for it. I know, I know. At this point, everything does seem to make sense, and explains why there are tried and true steps on “How to be successful”. I tried to learn all this ‘on the side’ and when I had some extra time on my hands. The real problem was that I never made it a real priority.

It was hard to see or to measure progress. I’m almost sure that things are different now and that the platforms have worked hard to gamify everything (psychology works) but there wasn’t as large a focus on this initially. I really didn’t know if or what the incentive was of finishing the exercises at the time. What would I be able to do by the end of the course? And since a lot of these would drill down on certain areas, it didn’t really feel like there were “milestone to look for” or a sign of “What you get to learn next”.

I wasn’t motivated enough to put all the pieces together. As a result of the earlier obstacles, I wasn’t very dedicated. This means that unless everything was being spoon-fed to me, I wasn’t going out of my way to understand things better or to work through roadblocks.

I had nothing to hold me accountable. I never really told anyone that I was trying to complete these courses or that I was trying to learn on my own. There was no fear of failure. This is pretty much the reason why people have diet accounts on social media or that people ‘build in public’ (if used correctly it can be really powerful).

I never applied it. One of the most common pieces of advice that’s online is to “build your own project”. The reason why, is that following along exercises or reading documentation is a little bit like reading out of language translation dictionary. You can’t just memorize everything. You have to try to speak the language and then figure out what the words are in the local language that you’re looking for. When you try to build something, that’s when you have to actually try and to apply what you’ve learnt.


What I did to successfully complete a coding course

It’s funny, because the way I came to all my earlier conclusions above was by thinking about what was different this time around.

I figured out what I wanted to learn and took a full stack course for a more holistic view. I found it much more interesting getting the “mile wide but an inch deep” perspective and think this helped overcome a lot of my earlier challenges. This time I developed a better understanding of what I was trying to accomplish (learn) and specifically what I was trying to learn. Essentially I wanted to develop a general understanding of how different aspects of coding fit together and to be able to discuss it at a high level.

As a beginner, I realized that I wasn’t trying to become proficient or to become an expert at it. Someone who really wants to master a language might prefer a more targeted approach and to drill down by taking a specific course. This more general approach made more sense for me. Looking back, I didn’t really have a specific purpose or reason for learning Python the first time.

I set a goal to finish the Udemy course. This was a more specific version of my earlier goal (to get a broader understanding of how coding works). Although not the main reason why, I also wanted to receive the ‘Certificate’ at the end of the course (which confirms that you’ve completed it). Specifically, I wanted to complete it by the end of the year.

I dedicated the Mondays and Tuesdays of each week to work on it and was lucky to have the time to do so. I was lucky that I could work on this ‘full time’ and that I didn’t have to juggle this with work. This is definitely possible to do on the weekends - it’s really a matter of circling it in your calendar and committing to your schedule.

I was motivated. I was frustrated by all my previous attempts at trying to learn before and so I was much more determined this time to actually complete my goal. Having a goal, a plan, and lots of time helped me to stay more motivated and committed this time around.

I was obsessed with the progress tracker. Udemy has this “Pie” at the top of the page which shows how far you are in the course and I was excited to watch the tracker move towards completion. As well, since the course covered so many different topics, if there was an “exciting” upcoming topic (“I’ll finally know what an API is!”) I’d be more motivated to complete a section to move on to the next . This was much motivating than drilling down deeper and deeper into a topic I wasn’t very interested in with nothing to look forward to.

I followed a course structure so everything was spoon fed to me. Having the course structure made it so much easier to follow along and I think this is the primary reason why so many people sign up for Bootcamps. Everything is much simpler if you take a structured approach where a curriculum is set up for you and subsequently, less motivation is required. This is in contrast to a self-guided learning approach, where you have to be very motivated.

The video format meant you just had to “hit play” while Angela explained concepts and follow along with her exercises and assignments - these were very helping for improving understanding. And then since there’s a whole community of people who help with trouble shooting, everything became easier, and I didn’t get “stuck” as often. With so few obstacles all you have to do is ‘show up’.

I told people I was taking a course and trying to learn. I didn’t tell a lot of people and if I did I usually mentioned it in passing, but it did feel like I needed to have something to show for it.

I made personal projects. So I decided to make these later on and found that it was really true that I learnt the most after having to apply things (see why things weren’t working). It was the frustrating process of figuring things out on my own really where I ended up learning the most.

Tldr;

This time I was more motivated and intentional about about learning programming and set myself up for success by chose a learning format that suited my learning style.