Learning to code


My name is Rahul Parmar, and I’m learning to code. It’s been an interesting experience and one that I’ve enjoyed immensely, and I’m here to walk you through some of my biggest victories and most embarrassing losses.

Victory #1 -- Sublime Text

As the business development guy here at Lighthouse Labs, I spend a lot of my time in other companies’ offices, drinking their coffee and peddling my wares (our fantastic students). It’s a great job in part because it’s so easy -- we build great talent here, and companies in Vancouver are starving for talent -- but I digress…

On a typical tour of a company’s office, I would see all these HUGE monitors with rainbow lines of text -- real Hollywood looking stuff. See below:

Submlime text coding screenshot

What is this devil technology?

Like anyone, I decided I had to be part of this exclusive group of Rainbow Typers, and began searching the corners of the Internet (reddit) to source this wondrous tool. That’s where I found Sublime Text -- praise Vishnu.

This piece of software singlehandedly saved me HOURS of work in my early (read: current) days of learning how to code. I learned quickly that certain aspects of the code -- tags, methods, variables, functions, etc. -- were highlighted in different colours. Not only was this pleasing to the eye (who doesn’t want to feel like Neo?), but it also made it easier for me to understand what my code was doing and where it was breaking.

Naturally, the 4-week prep course we run here at Lighthouse Labs prior to a student’s first day of class would have introduced me to Sublime Text without having to bear the shame of googling for “Rainbow Text Tool”, but hey, you live and you learn.

Loss # 1 -- A Fragmented View

So, I had found the cool color typing tool -- what’s next? Well, resources, tutorials, labs, assignments, projects, something, anything.

I had already spent a great deal of time on Codecademy to get brushed up on the fundamentals of HTML, CSS, Javascript, jQuery and Ruby, but I had absolutely no idea how these things fit together, or how to use them to build anything of value to the world! My great idea for a web application that helped you pick a dog breed based on certain attributes (PoochPikr - copyright pending) lingered and all my precious venture capital dollars (read: none) withered away (read: remained the same).

At this point in my development (pun!), I really could have used some guidance from a developer. What are these tools? How do they work? What are some things I can build that would help me see how they fit together? My limited knowledge of each toolset didn’t allow me to come up with these projects on my own, and the hurdles I encountered would have been handled quickly by any of the TAs we have at Lighthouse. Alas, I was alone in the sea and it was not fun.

In short, I panicked. I failed before I’d even started. I had no understanding of how these different “programming languages” came together to form “applications” on the “Internet” (okay, I know what the last one means). There was some silver lining around the cloud that was my failure, though: I could write a mean cash register application in Ruby.

Cha. Ching.

Victory # 2 -- Understanding M(odel) V(iew) C(ontroller)

Loss # 1 lead directly to Victory #2 -- understanding how all this stuff comes together to make something worth $100 billion (Facebook or bust, that’s my motto!). I’ll be honest, wrapping my head around MVC was a bit of a slog, but it’s definitely the most important part of my learning curve to date (until I figure out how to code something that orders me pizza, but only when I want pizza).

Here’s how I think about it now, in case you need the help (hardcore devs: please don’t firebomb me with email - I am learning, this helps, it is not the be-all-end-all guide to MVC!):

View: What you see on your screen when you surf a web page -- think login page, sign up page, Facebook profile, Twitter feed, etc.

Controller: ????

Model: Something-something database.


Evidently, I’m still working on this part of it, but my progress here has made everything else significantly easier to understand, so spend time here if you’re looking to learn how to build applications!

Loss # 2 -- A Lack of Commitment

I have a serious problem: I have an extremely demanding full-time job as a co-founder at Lighthouse Labs. This means I have little to no time at my other full-time job: being a human being that is interested in learning cool things.

On weekends I would dive into the coding lessons, tediously working through tutorials and labs provided by our Head Instructor, Khurram Virani. They were phenomenal -- before I knew it, I was using fancy things like Terminal and “gems” to clone some of my favourite applications. Then the week would hit, I would spend 80 hours working, away from the code, and come back to what might as well have been hieroglyphs. Bummer.

The real key to learning how to code, and how to code well, is to immerse yourself in it fully. When all you do everyday is tinker away at a project, debug code, and surround yourself with others that are learning how to code, you have no choice but to get better. I lacked all of that in my journey, and it continues to hinder my progress massively. In my mind, this is where the bootcamp method we run at Lighthouse would have been the MOST beneficial. Could I learn this stuff on my own? Probably. Would I have an absolute ton of bad habits and missteps along the way? Definitely.

Committing to learning how to code is, arguably, the single most important step in learning how to code, followed closely by putting yourself in the right environment. We’ve put out almost 30 graduates in our short time here in Vancouver and I can easily say that all of them have progressed more rapidly and are more competent developers than I currently am because of their commitment and surroundings.


For now, this is where my journey stands. I’m sure I will continue this Victory / Loss model as I continue to learn, but for now this is where I have to stop.

Until I have more adventures!

</blog> (HTML WHAT! Yes, yes, it’s an invalid tag. I KNOW.)