I was first introduced to programming in third standard with PC Logo. I still remember FD50, RT90, and maybe if I open it up I’ll recall how to draw a circle.
I enjoyed it, but didn’t think much of it, and moved to my other interests like breaking down remote controlled cars, modifying them with lights and motors. “If I linked another motor at the back of the car with a small fan, how fast would the car go?” were the kind of things I played with.
Then there was this thing called QBasic, which we were taught in school in 6th standard. Don’t remember anything. Didn’t find it fun.
Then in 10th standard we were taught HTML and XML, not programming languages, but I finally got it. I finally understood how these websites were built. This was interesting.
I went on a research spree (read extensive googling) and built my first website that I pushed live on wix.com. Around this time I got into hacking, the website was called “Know Basic Hacking” because that’s all I knew, super basic hacking. I was a script kiddie who used his wonderful skills in googling and HTML to build phishing sites.
Doing all of it I discovered blogger.com, started writing blogs, learned SEO, online marketing, a bit of CSS, and other random things I thought I needed to learn to make money from blogging. It worked. I did make money. I still have $28 in my Google Adsense account which I never saw because you needed at least a 50 or 100 to cash out. But, I earned some money doing ghostwriting, doing sponsored posts, and then finally selling one of my blogs for enough to buy myself my first smartphone right when I was about to finish school.
While I was into blogging, in school we were being taught C++, and it turned out I was pretty good at programming. I could build a calculator in C++, which to me, at the time felt totally useless.
The calculator I built asked what operation you wanted to do, then let you enter two numbers, and displayed the result. That was not what I expected software to be like. I could just never get my head around how this black screen with text can be turned into the complicated operating system on my laptop, or how can it turn into Facebook, the thing all of us were on.
Anyway, I continued blogging, trying to build websites using WordPress, and other open source CMSs, without understanding how it all worked. I knew HTML and CSS and I knew there were these two things, PHP and MySQL that you could use to build something like WordPress. I wanted to learn that but it was so overwhelming the farthest I could get to was downloading the book “PHP and MySQL for dummies” reading a chapter, and giving up.
By this time I was in my first year of engineering, and attempting to learn how to build these apps. It led me to discover Ruby on Rails. It just checked all the boxes. I felt, this is the thing, this is what I will learn. Seems simple enough and gets the job done.
What did I need? I needed to learn Ruby. Cool. Googled my way to Codecademy which had a Ruby track, that I completed to about 80% when I realised, “This still doesn’t teach me how to build things”. It’s the same as learning C++.
There was another resource, Michael Hartl’s Ruby on Rails tutorial. That book was the best resource there was for Rails, it was there on every recommendation. Michael understood the appeal of building things quick, and his entire book was about taking you through the journey of building a Twitter clone learning Ruby on Rails along the way.
That got me started. I was able to read from and write to a database, something I had never been able to do until then.
I didn’t finish that book too, because I wanted to build more things. I thought I could, after all I had now become an expert in following steps, and copying code. I didn’t actually know how to build web apps, I just understood “some” of the stuff.
Around this time, I discovered Mackenzie Child’s 12 in 12 week challenge. Mackenzie was a designer who was learning to code, and he had picked Ruby on Rails too. In his 12 in 12 challenge, he wanted to build 12 Ruby on Rails apps in 12 weeks. He build a Reddit clone, a Pinterest clone, a Todo app, a job board, and a bunch of other things.
I decided I’ll follow him. I played his screencasts with my c9.io development environment (Amazon, please die twice for fucking this beauty up) in a different tab. The first tutorial, I didn’t understand everything. Second one, I understood a little more. Third one, a little more. Eventually I got the hang of things. It’s all C.R.U.D (Create, Read, Update, and Delete). It stopped being overwhelming.
That was when it actually “clicked”. Everything suddenly made sense. Every app I used from then on, I would think about “How could I build this?”. Everything’s CRUD.
It was now time to take off the training wheels, now I will build an app without following any screencast, or books. I will build it the way it is supposed to be done, write code by thinking through, and google my way out of errors.
It was a challenge, but that was finally how I learned to code.
In hindsight, the biggest challenge in learning to code wasn’t learning to code itself. It is really easy. You don’t need to know math or electronics, you just need basic knowledge of the english language to figure things out. The main challenge, what I think I spent a lot of time on was discovering how I learned.
Everybody’s method is different. Some people like to read up before they get their hands dirty. Some people get their hands dirty, and then read up on things.
So if you’re stuck while learning to code and feel it is not for you, maybe you just haven’t discovered your learning style.
All the best!