In the first part of this post, I wrote about what I consider as failures on my journey to learning how to code. Its only natural to follow up failures with some success, right? In this post I try to highlight what I feel works for me as I learn.

TL;DR Sometimes, the only way to learn how to swim is to jump in at the deep-end

Linux

I am working on a laptop with a Windows 10 and Ubuntu 14.04 dual boot setup. I however almost always use Ubuntu, only getting into Windows for occasional AutoCAD work. This has been the case since 2012. Looking back, if I had never got Ubuntu(8.04) with my first laptop, I don’t know if I would be coding today!

Learning Linux

When I was looking to buy my first laptop, a cost - performance balance was of utmost importance. What I got at my targeted price point was a Dell Vostro 1014-045 with a massive core 2 duo processor, 2GB of RAM and came with Ubuntu pre-installed. Guess I have the lack of a Windows license to thank that I was able to afford the laptop.

Before then, I had not interacted with a Linux based OS and man did it look strange! I just had to trust the guy who sold me the laptop since I couldn’t even confirm the advertised specs. I believed him when he told me that the modem worked. Of course the first action on getting home was installing Windows.

By this time my interest in code had waned, and I really just wanted to play a few games on the laptop. I got FIFA 2010 on it (or was it UEFA?) and clocked quite a number of hours on it. Once satisfied that I had my gaming needs taken care of, I took an interest in the ‘weird’ OS. Within a day or so, I had learned that it was possible to ‘dual-boot’ and got it working. I haunted the [Ubuntu forums] late into the night, learning about swap space, filesystems, disk partitioning and a lot more. This was when I started to appreciate the power of the internet. I had so much information within easy reach, the problem became filtering out what to consume.

All the work put in to get Ubuntu running, and then to find out that was the easy part! These were still the early days when Ubuntu, and maybe every other Linux distro threw up quite a few problems before you could properly use it. The wifi didn’t work out-of-the-box, if it did, the sound didn’t work and if both of these did, the desktop manager would have issues. I enjoyed solving every little problem. I changed between different distros just for the new challenges each posed. I got comfortable using the terminal that even today Ctrl+Alt+T is my first or second action on booting the computer.

There is a lot I don’t know about my OS, but with Google, [StackOverflow] and the man command am good. Struggling to get comfortable with the early Linux distros taught me to dig in and ‘learn by doing.’ I can’t recall the number of times I have lost all my data owing to a clean install after breaking something. Today, there’s nothing much to break, and if I did break something, I know how to get back my data.

I might be crediting a bit too much to the OS, but if Linux hadn’t re-ignited my interest in computers, I wouldn’t be pushing to become a (better) developer.

Switch to Linux, your life will be much better for it

Learning Python

After the few hours of C and C++ I had in class, I hunted around for a new language. I landed first on Android, which was the ish then. It only took installation of the SDK and completing the Hello world app to turn me away from Java. From there I met Python and was smitten (bitten?). Not only was the simplicity of the language enticing, I also didn’t need to install anything to get started.

I blazed through the basics of the language, and then stopped. I just didn’t know what to do with my new-found knowledge. Over the next two years I went back periodically whenever the coding bug bit, but I just never got past the basics. At the beginning of last year I decided it was time to force myself to get good, and what better way than choosing a web project as my final year school project?

I chose django for my web framework. Before I could learn django, I had to get more comfortable with python. Codecademy’s python course came in handy. The course is well structured, and the challenges are a refreshing way of instruction. Armed with the prerequisites it was time to learn django. No tutorial comes more highly recommended than Django Girls tutorial. The tutorial takes you through the process of building a blog, with a stepwise introduction to the various features of django. On completion of the tutorial, you are left with a fully functioning comments-enabled blog. What it is, is an invaluable reference for when you do start working on your project. I in-fact kept the app as part of my project.

It was months of hard toil to complete my project, but when I did, it left me with more than a certificate. It gave me the realization that I had been going about my education all wrong. Jumping all-in is how I learn, and it’s how I learnt Ruby.