blog article

Curriculum Spotlight with Khurram Virani of Lighthouse Labs

By Imogen Crispe
Last updated on October 21, 2020

    Table of Contents

  • Q&A


A lot has changed since Lighthouse Labs started teaching web development in 2013. We sat down with co-founder Khurram Virani to learn about the evolution of Lighthouse Labs- how they design assessments, why they’ve chosen to introduce more JavaScript into their eight-week curriculum, and their realistic approach to job placement.

To celebrate the launch of their new Full-Stack Web Bootcamp curriculum, Lighthouse Labs has released the Early Bird Challenge! Activate the puzzle, solve the clues and you could score $500 off their Web or iOS Bootcamp.


Tell us about your background before you co-founded Lighthouse Labs?

I have been a software developer for more than 10 years. I’ve gone through the entire journey of going from high school to college, into the workforce. My first job as a developer was very uncomfortable and nerve-wracking – so I’ve experienced it all.

For the last five years, I’ve owned a software development firm in Toronto called Functional Imperative that works with different businesses to produce software for their needs. So I’ve also experienced hiring developers, and the massive shortage of developers and tech talent.

My passion for teaching started when I was 8 years old and started volunteering at a local community center back home in Pakistan to teach adults how to use computers. Then I was  lucky enough to have computer science classes at my high school. I fell in love with software development through languages like C and Visual Basic, and I helped the school develop a curriculum using Java while I was learning it. I found both my passions combined - building software, and inspiring and teaching others to build and create. I feel incredibly lucky to have gone into this field and I want to inspire other people to consider becoming software developers.

What prompted you to start Lighthouse Labs?

As I was doing consulting and software development, I was mentoring junior developers who had recently graduated from university and I really enjoyed that. So I started looking for opportunities where I could mentor and teach part time. At the same time, I started becoming more and more aware of this movement in the education space towards more hands-on learning. I believed in a more progressive model of education where students learn by doing, and are put into uncomfortable situations so they get used to what it means to be a developer. Then I learned about coding bootcamps and was involved in building the curriculum for and teaching at Bitmaker Labs, the first coding bootcamp in Canada. I fell in love with the methodologies, the concepts, the students.

In my own experience in the education space, what I found most valuable was the internships I did. I learned way more on the job than I did during many of the theoretical courses in my undergrad degree. So Lighthouse Labs is embracing the fact that you will learn the most on the job, and making you as impactful as possible for the first few months so you can continue to grow and learn at bootcamp pace. We tell students you are going to be doing “bootcamp style” learning for many years. This is going to be an intense journey and you need not only the talent but also the grit to handle that kind of intensity and not take your foot off the pedal once you graduate.

When you first started Lighthouse Labs how did you find and hire instructors?

We follow the community-driven education model. One of the biggest advantages- and the philosophy- of Lighthouse Labs is bringing the community together to rally behind the teaching.  Instead of having a few full-time instructors we have an army of developers, who are passionate about the work they are doing outside of Lighthouse Labs.

The trick is to find mentors and teachers who have a talent and passion for both coding and mentoring. And that took some time. We started with three part-time mentors, and myself as the full-time teacher, and we grew from there. Now we have over 100 mentors teaching web and iOS across Canada. We have a few full-time educational staff who are involved in building our internal software systems and delivering lectures. But the main focus and experience of the curriculum is around bringing these mentors in. We talk about immersive education, and one of the things people don’t realize is it’s about being immersed in the community and the culture, as well as the code. You have to appreciate the mindset and the culture of the people with whom you’re going to be working.  

How did you choose which languages to include in the original curriculum when the school started in 2013?

I had been working in Ruby and I saw the growth of Ruby on Rails as an ecosystem.  I was not a big fan of the initial stages of the Ruby on Rails ecosystem. It was less of a mature community in terms of the tooling and support out there. But by the time we started Lighthouse Labs, the community had matured quite a bit to become a more stable community. It’s a platform used by many employers across Canada and globally, so it made sense to teach those tools.

But also keeping in mind, it wasn’t about learning Rails, this is not a Rails bootcamp, it’s not a Ruby program – it’s about learning “full stack web development,” with Ruby, Rails, SQL and JavaScript. These are just the tools we’ve decided to use. They are popular but there are many equally good alternatives to Ruby and Rails which offer different paradigms. Any good developer should be comfortable in at least two different programming languages. So we definitely celebrate not pigeonholing our students in one language or framework.

How did you develop and iterate the curriculum from there?

It was definitely high level at first – creating an outline, talking to as many people in the industry as possible. I remember having a conversation with Hootsuite, and showed them our curriculum outline. Hootsuite is not a Ruby shop; they use Scala, Java, Python. Their director of engineering saw that the curriculum focused on Ruby on Rails, and it wasn’t an issue for him. He understood the philosophy of what we are actually teaching: how to become a developer in a rapid way, by being analytical, by problem solving, getting used to research problems, and debugging.

We started with a small set of students, so I was able to quickly iterate and adjust things based on how the cohort was running. I quickly found I was jumping into Rails too soon, and students were a bit shell shocked. So within the first few cohorts, I adjusted it so there was more ramp up towards learning Rails. Starting with learning a big framework like Rails 5 is almost like starting Game of Thrones Season 5 without watching Seasons 1 through 4, without knowing the history of any of the characters.

How did you assess how students were progressing through the program?

When Lighthouse Labs first started, I wanted to work out how to evaluate student progress. There are two sides to education: teaching and evaluation. At first, we were not focused enough on evaluation. Within first few cohorts, I introduced assessment that students had to pass to become graduates of Lighthouse Labs. Yes, they’re all experiencing intensity, but the assessments show if students are progressing at the right rate. So yes, we’ve added a few assessment tests.

So tell me about the recent updates to the web development curriculum?

Everything we’ve done over the past year has been a result of feedback from alumni, mentors, and employers. Ruby and Rails are excellent languages or frameworks to learn, they are highly relevant, and most of our web applications internally have been built with these technologies. But one piece of feedback we received was to put more emphasis on JavaScript, a very different paradigm and language compared to the Ruby side. That’s something we have now implemented.

Another reason we integrated JavaScript was to really celebrate polyglot developers. Good developers should be comfortable with multiple languages, and students previously felt like they had to do a lot more on their own throughout the program to feel comfortable with JavaScript, and its fast moving ecosystem. So we’ve brought in more Javascript while keeping a fair amount of Ruby and Rails.

Did you think about just teaching full stack JavaScript or MEAN Stack with no Ruby?

It was definitely a conversation. One year ago, we started thinking about this ”Version 2.0” of our curriculum and talking about how we would teach JavaScript. One of the challenges of teaching JavaScript is that unlike Ruby, there are a lot of different opinions on writing idiomatic JavaScript. For the most part, the consensus was that there is a lot of value in teaching classical object-oriented programming as opposed to the prototype-based object-oriented programming that JavaScript brings.

It’s good to expose students to both, but it adds the risk of overwhelming them with too much information. So we had to make sure we still had a primary focus, then a secondary focus that exposes them to the other paradigm, and let them compare and contrast without feeling overwhelmed. In terms of being prepared for the workforce, which is our ultimate goal, we felt introducing both paradigms and both languages would work better in a short period of time.

In general, what is your process of iterating and updating the curriculum?

Recently I have been working on decoupling the curriculum from our technology. Previously our curriculum was embedded in our learning management system, but now we have modified our curriculum so it sits on its own, and allows developers who are comfortable with Github and git to contribute to the curriculum. I found that we weren’t using community mentors and alumni to help iterate on our curriculum as much as we could have. And so this is what I’m most excited about is to have workflow and systems in place so they can iterate on the curriculum too. It also helps that JavaScript as a language system is evolving much quicker than the Ruby ecosystem which has kind of stabilized recently. So that forces us to be iterative and rapid and react and evolve to the changes.

Lighthouse Labs is licensed with the PCTIA, right? Do you have to notify them when you make a big change to the curriculum like adding JavaScript?

Canada has more regulation around education and services. We were very cooperative early on with PCTIA when we started Lighthouse Labs. It took us some time to work with the system, and be agile, while staying compliant and be registered. We are now actually accredited with PCTIA, which takes two years of being in operation. We have an Education Administrator on staff who is dedicated to communicating with the regulatory bodies, to keep them in the loop and make sure we are following the right practices.

By no means am I complaining. These organizations exist for the interest of the students, to make sure they are getting a good education and to protect them from schools going under, or not following through on learning outcomes.

When you are iterating and updating your curriculum to emphasize JavaScript, how do you train and keep your instructors up to date with the latest version?

Rolling out a new curriculum is not an easy feat, especially when you have multiple locations, more than 100 mentors, and multiple programs. We’re not only changing content, but also the evaluation side of things, and some of the core philosophies of how we teach. It affects everything, including Career Services. One of the first things we did for this curriculum, is build a pilot of the new curriculum to use to test and iterate and figure out how to train people across the board. We currently have six students in our pilot cohort, testing the new curriculum!

Updates to the curriculum aren’t just about what is student facing, but what is teacher facing in terms of the documentation. Much like software has a change log, we have been tracking all our changes in git and in our internal documentation. We also bring teachers and staff into the conversation, so they are involved in building the curriculum.

How many teachers do you have at one time? Do you try to maintain a certain student:teacher ratio?

We have a ratio of 7:1, sometimes even 5:1. The number of mentors we have actively at our major locations in Toronto and Vancouver is around 40 for web, and about 10 to 12 for iOS. And the other locations, Montreal, Victoria, Kelowna, Calgary, Halifax, and London, have local mentors and remote support.

Students and teachers are in the classroom from 9am to 9pm. Of course it’s not the same teachers who start in the morning who are there in the evening – we have a pretty strong emphasis on scheduling and working with these developers outside of their primary jobs. Some are doing 6 hours a week, others do 20 or 30 hours a week.

What’s the ideal class size?

We’ve found the ideal number of students is around 20 to 24 per cohort. We have cohorts that are smaller, but we don’t go over 24 students per cohort, because it becomes difficult to manage and track student progress, and to personalize the education.

What is the teaching style at Lighthouse Labs?

The journey of becoming a software developer is not about learning JavaScript or learning Rails or Ruby. As we do lectures, breakouts, or give assistance, we have to balance students learning something specific about Rails, versus how and why a problem exists. One thing that is changing is a heavier emphasis on pair programming. The first week now has a heavy emphasis on pair programming. Every day students are paired up with a different peer, and for the majority of the day they are doing readings, exercises, and problem solving together. There is this mindset out there that a software developer is someone working solo at their computer, but are people are now realizing that it’s a very collaborative, conversational job. So we make sure we have a lot of whiteboards and a lot of ad hoc breakouts, when there is an issue.

You mentioned you give assessments. How regular are they and do students have to pass those to continue with the program?

We have experimented with this quite a bit. With the Ruby curriculum, we had three assessment tests in total, which are the most stressful part for students. These tests simulate building things, fixing things, debugging, and problem solving. We found three tests were too intense for an eight-week program and we saw a trend of test-driven education, where students are too focused on learning for the test instead of learning for the real world. In the new curriculum, there is one major test in week three, and we give them a mock test before hand so they get used to what the test looks like. If they don’t do well, it doesn’t mean they are not good at problem solving. We also look at other data points we’ve collected and give them an opportunity to work on it in a less stressful situation to see if they can get through it.

Do you have an assessment at the end to check if they are ready to graduate?

Although we are reducing the number of tests, we are increasing the amount of evaluation. Code reviews are a more organic way of growing for developers, they happen out in the wild. So there’s a lot more focus on projects in the curriculum now. Students are doing fewer small exercises, and producing more large full stack apps, earlier on in the program, so they can appreciate web development sooner. And they are also being evaluated on these projects. Students are required to submit them for a code review, get feedback, and iterate on that feedback. It’s something we did informally and ad-hoc before, but now it’s a formal part of the program. Then there is the final project at the end which they demo to the community.

What sort of jobs are you seeing your web development graduates get?

One fundamental Lighthouse Labs philosophy is that we are not about becoming a rockstar developer in eight weeks. It’s a more humble and realistic approach to that journey. And to that end, we believe you still have a ways to go before you should be demanding full developer salaries. It’s about learning on the job and proving you can learn in a bootcamp environment, and learn and grow with other people. So we encourage students and employers to start with a paid internship or apprenticeship, where interns are being compensated, but there is a 3-month internship period before they graduate to a junior developer title in that company. And that is something that has been extremely well received in Vancouver and across Canada.

What are your favorite resources or meetups in Vancouver for aspiring bootcampers who want to find out what it’s like to learn to code?

There are a few amazing meetups in Vancouver. One of my favorites is the Polyglot meetup which is not focused on a specific ecosystem or language. The Ruby meetup is very active, there are bi-weekly Ruby hack nights in Vancouver. There is a CSS brigade that is not as frequent but has a huge turnout run by an interesting group of devs out here. We encourage our students to go to at least one or two meetups while in the bootcamp and as they graduate to go to more. The Web Performance meetup is another favorite of mine, it’s a bit more advanced so more for alumni than current students. One that’s less about tech but around the community and entrepreneurship is the Hackernest meetup where you get entrepreneurs and people with ideas coming to the meetup looking for developers to be able to prototype and create MVPs with them.

Find out more and read Lighthouse Labs reviews on Course Report. Check out the Lighthouse Labs website.

About The Author

Imogen is a writer and content producer who loves writing about technology and education. Her background is in journalism, writing for newspapers and news websites. She grew up in England, Dubai and New Zealand, and now lives in Brooklyn, NY.

Also on Course Report

Get our FREE Ultimate Guide to Paying for a Bootcamp

By submitting this form, you agree to receive email marketing from Course Report.

Get Matched in Minutes

Just tell us who you are and what you’re searching for, we’ll handle the rest.

Match Me