My journey of programming started in late January 2015. Part of the original reason was curiosity. The other part was probably because I prefer trying to learn new skills and make things, rather than trying to earn certificates and trophies to prove that I (may or may not) have skills.

KhanAcademy

KhanAcademy was where I first knew about programming. I actually signed up on KhanAcademy just to brush up my math skill. But at 28 and 29 January 2015 I watched the KhanAcademy introduction video on programming (HTML, CSS, and JavaScript). I learned to program on and off for the next 5 weeks.

In the first week of March, I started getting serious in programming since I suspected that programming may become one of my passions. I finished all the HTML and CSS lesson at the end of that week. I also tried to complete the (Processing) JS lesson but I found out it was not suited to my taste. Luckily KhanAcademy pointed to another great programming lesson: Codecademy.

Codecademy

I signed up on Codecademy on 6 March 2015. I started learning both the JavaScript (7 March) and Python (9 March) tracks while relearning the HTML and CSS tracks. I chose Python over Ruby after much consideration. I originally went to Codecademy to learn JS but ended up focusing more on Python. I finished the Python track on 19 April 2015 and started to wonder where else to learn.

Learn Python the Hard Way

LPTHW taught me how to code Python from my local computer. From LPTHW and other sources, I learned the basics of Python. I still did the Codecademy JS track and completed it in June 2015. Near the end of LPTHW, it taught me about how to set up and use web.py. Side note: The set up was painfully hard and the fact that I use Windows makes it even worse. After completing nearly all of the lessons, then came the oft-asked question: what now?

The Odin Project

After a lot of Googling, I decided to focus on web development. I tried to learn Django but soon found that there are a lot more resources on Rails. That and the fact that I found a great learning source that uses Ruby as its main language (theOdinProject) made me committed to learned Rails and Ruby. So I started doing theOdinProject on 4 June 2015. I predict that it will take me at most 2 years to finish it, considering I’m still in college.

In the theOdinProject, I relearned HTML, CSS, and JS. I also learned a bunch of new things such as jQuery, SQLite, Regex, Git, and obviously Ruby (with Rails and RSpec). The thing that struck me the most when learning Ruby was that, because I already knew Python, I learned Ruby in only 10 days. The time I spent pondering whether to choose Codecademy’s Python or Ruby track was obviously useless. I started learning Ruby at 7 June 2015 and finished the track on 1 July 2015 with a lot of breaks to learn other things.

College

My fear that college will hinder me in learning programming is unfounded. In fact, after seeing my progress in learning programming while studying in college, I’m pretty confident that I can finish theOdinProject in less than one and a half year while making sure that my GPA is above 3,5.

I’ve finished most of the Ruby part and most of the Rails part. However, I haven’t finished most of the projects required by theOdinProject due to lack of motivation. I don’t really like making another Facebook or CLI Chess game. So, I guess I’ll build my own projects later instead of creating the projects required in theOdinProject.

One of the biggest holes I notice in my backend skill is testing. I think I’ll go back to it after finishing theOdinProject. For now, I’m already diving into the HTML and CSS part of theOdinProject and have finished about a third of it, again without doing most of the projects.


Side Notes

The first thing I tried after finishing LPTHW is learning Haskell. But, after a lot of research, I realized choosing a platform is of a higher priority. So I ended up learning only Haskell’s basic syntax (and none of the functional programming concept).

I also plan to learn C after finishing the LPTHW. Unfortunately, trying to learn C in a Windows machine is an uphill battle. Because of this, I tried to set up Lubuntu and played around a bit with the Oracle VM Virtualbox. It was a success, but I prefer using a LiveUSB over the virtual machine.

While I’m on college break, I have a lot of free time since the semester break last for 3 months from June until September. I spend this free time reading Peopleware among other books. Some people say Peopleware is THE must-read book for IT managers. Unfortunately, these people admit they say so out of frustration since real life is far from ideal.

I also learned a bit about computers, network, and server architecture from theOdinProject among other things. The curriculum is really awesome. If you want to know the full curriculum, just check their site.

Inspired by theOdinProject computer architecture (and pushed by my own curiosity), I read a few chapters of Code by Charles Petzold. Unfortunately, my college break has ended, so I must postpone the reading.

I recently (3 September 2012) tried the DVORAK keyboard layout. One obvious benefit I get from this layout is that I can finally touch type (typing without seeing the keyboard). My typing speed decreased severely and I still make a lot of mistakes. But, I think, in a few months, I’ll be able to get my typing up to speed again.

UPDATE: It’s December now. My Dvorak typing isn’t as fast as when I use QWERTY, but fast enough to not make me frustrated when writing college essay assignments. I still make mistakes here and there, but the fact that I’m touch typing make mistakes easier to spot and correct.

I start using an online IDE named Cloud9 to study theOdinProject’s rails tutorial by Michael Hartl. It’s definitely better than Windows in my opinion. So, I start experimenting with another online IDE called Koding. Both have their own strengths and weaknesses, but it’s nice to know that I can learn and experiment with C and other things in the cloud.

I started learning Vim (13 November 2012) for various reasons. I finished the tutorial on 13 November 2012 using Koding cloud IDE. I set Vim up on my local Windows machine, configured the .vim file, and pushed it to GitHub so I can use it on other machines. Now, all that left is learning the keybinding and, probably, some vimscript.