Teaching Programming is Hard

How to disrupt traditional universities and apply rapid iteration to build the best tech curriculum.

Boris Paillard
Jul 6, 2017 · 8 min read

The traditional education system hasn’t found the recipe yet to teach technology properly. In fact, what universities offer to students strongly differs from what the industry is looking for, especially in high moving fields like web development.

While traditional schools struggle to re-invent themselves on these new topics, the tech education market is booming. Hundreds of tutorials and resources are posted on edX, Coursera, Codecademy, Treehouse, Udemy, Lynda, etc… Udacity is partnering with big companies like Google and Facebook to build joint “nano-degrees”. Actors like General Assembly are raising millions to become global players of the on-site tech education. The coding bootcamp market is exploding and getting crowded. In the US and Canada alone, the number of coding bootcamps has grown from 67 to 91 from 2015 to 2016 (+35% in 1 year).

When a market is quickly expanding like this, it’s generally hard to separate the wheat from the chaff. Especially with sensationalized marketing campaigns and over-promising messages like “learn to build an iOS application in one week”. Lots of actors pretend to deliver the same value and to offer a 99% job placement rate, which (of course) is not true. Obama states every kid should learn to code while media like TechCrunch sometimes take the opposite position to balance the debate.

In my opinion, this all comes down to a single question:

What exactly makes a great tech curriculum?

It turns out learning technical subjects is just like learning anything else: great teachers make all the difference. Does this surprise you? (It shouldn’t). Take the course on machine learning by Andrew Ng that launched Coursera back in 2012. To this day, data-scientists recommend the course as the best introduction to machine-learning out there. I am sure that behind the scenes, a lot of time and effort went into the design and execution of this course. Still, it’s the work of one teacher (or a few at least). Education is very scalable since one single teacher can have an impact on millions of students. But scaling does not necessarily requires money or big tech disruption, it requires talent, time and passion.

Maybe one day, neuroscience will be so advanced that you’ll be able to learn something new in a few minutes. Right now, this is only science-fiction. The educational process today is formed of experiences that are broadly defined by the curriculum, which means the journey you experience as a student to learn new concepts and skills. This journey is about examples, structure, challenges, rhythm, entertainment, not just content.

I had a terrible experience as a student when I first learned programming at school. Let me describe to you the typical C++ (programming language) course I had during my studies:

  • First, you started with a 3-hour lecture about programming concepts explained on Powerpoint lectures (please, let’s ban powerpoint in lectures 🙏🙏🙏).
  • Then you worked alone on a PDF assignment for 2 hours and you were asked to write a program to translate numbers into roman numerals or other very useful stuff. While doing that, no one explained to you why you were doing it and what was the point.
  • Take these two steps (Powerpoint lecture + PDF assignment) and repeat them 15 times and you will figure out the “curriculum” of my programming class.

During this course, we never saw a teacher open his text editor and actually code something. We never discussed how you build softwares with code. We never used APIs or scrape information from websites to play with real-life data. For me, code was just boring concepts without real purpose. None of us really cared.

How I was taught programming / How we teach programming — teachers should code.

When I started coding tech products with my friend Mathieu (one of the initial co-founders of Le Wagon) I just realised how fascinating code is:

  • It requires engineering skills to design your database and your software.
  • It requires product skills to build features your user actually wants.
  • It requires UX and UI skills to make your interface intuitive.
  • It requires graphic design skills to make your product look nice 😎.
  • It requires marketing and writing skills to explain and sell your concept.
  • It requires analytics skills to keep track of your users’ behaviour.

I had found my new passion. I discovered a thrilling, engaging world that actually required my whole brain, one that required a diverse set of skills that didn’t at all resemble my C++ class. So, it begs the question:

How could my programming course suck so much?

The answer is simple. A great student’s experience requires lots of iterations. Traditional schools don’t have the right setup for that.

Ask any conscientious teacher to give an opinion on a course he designed five years ago. Well, he will always tell you it needs a serious refresh. And it’s not by putting this course online on Coursera or edX that it becomes great all of a sudden. So why do traditional schools struggle to iterate on their curriculum when it’s their core product?

  • Long feedback loop: As a teacher, if you‘ve been running the same course every year for the last ten years, it’s really painful to iterate on your curriculum. Building a good curriculum is hard but exciting. Maintaining and improving this curriculum can be seen as the boring part. In addition, students are rarely asked for feedback. Even when they are, a teacher will never be excited about changing his/her course with only one feedback every year, it’s just depressing… Imagine a Product Manager getting only one user feedback every year, he certainly wouldn’t be doing his job!
  • Wrong incentive: Lots of schools or universities are working mostly with brilliant researchers with PhD and impressive track record. Some of them are amazing teachers — we all had this sort of passionate teacher during our studies. But some of them also lack industry experience and prefer spending time on their next cutting edge publication than to iterate on the curriculum of the course they have been running for years, especially when their school encourages them to focus on their research work, paying them extra bonus when they get published. After all, the prestige of a school comes from the prestige of its teachers, doesn’t it? That’s how most school rankings are being calculated last time I heard. Vicious circle here.

At Le Wagon, and in other coding bootcamps, we have a different setup to iterate on our curriculum:

  • We run our program every 3-months: short cycle, short feedback loop.
  • Students pay for a set of skills, not for a diploma. No one cares if Le Wagon doesn’t get published in a Computer Science review. No vicious circle here.

Since the beginning, we made major iterations on our curriculum and platforms more than 15 times (4 times every year). We tested and implemented lots of new ideas:

  • “Buddy” system to make each student discover and pair-program with a new classmate every day.
  • Continuous monitoring of students’ code to actively help students who struggle during the day without asking them to pass old school exams.
  • Tickets system to ask students to explain their issue when they are stuck.
  • Flashcards so that students train their memory and rehearse core concepts without coding at the end of each day.
  • etc….

We tested tons of new features in the curriculum but we also iterated a lot on the content itself of our lectures and exercises. More than 2,105 times during the last 3 years to be precise 😱😱😱. You can see that on the Github repository hosting all our exercises.

We have iterated 2,105 times on our exercises so far.

Also, because our students pay for their education, our only key metric is our NPS per session (if you don’t know what NPS is about, you can read this article). Here are Le Wagon’s NPS for all the Paris batches of 2016–2017.

Having a NPS above 70 is our only priority. We don’t want our students to be satisfied about our program, we want them to go through a life-changing learning experience. That’s what a curriculum should be about, experience.

I come from a great engineering school in France and I’m proud of it. Even if they did a really poor job in teaching me how to program, I still think the school was great on many other topics and taught me how to learn. However, there is still one thing I don’t get:

Why did I get bullshit talks by banks and consulting companies for 3 years?

There are so many inspiring alumni from my school’s network. Hundreds of engineers who have invented innovative services and products, hundreds of entrepreneurs who have amazing stories to tell. So why the only “inspirational” talks I had as a student were given my non-inspirational bankers and consultants?

If you look at Le Wagon’s Youtube channel, you’ll see that we organised more than 100 talks world-wide with first-class entrepreneurs and CTOs (from Github, Criteo, Devialet, Trainline, Doctolib, etc…). These talks are nearly as important as the rest of the curriculum. For us, inspiration is part of the education we provide to our students.

100+ talks with various entrepreneurs organised in our 20 campuses

Very few people really know what they want to do. For most of us, we need to be inspired and hear stories to “discover our calling”.

Not only you need inspiration as an “adult student” but I’m also convinced that vocation comes out of expertise. To know if you really like something, you have to become an expert (or at least a junior expert 😊) in that specific discipline.

When I was at school, I was not a big fan of chemistry for instance. But who knows, maybe it would have become a true passion if I had gone through a 2-month intensive chemistry bootcamp with great teachers. When you reach expertise, you become autonomous and you start being creative. It’s only at this point when you can decide whether or not you really like something.

For most of us, it’s easy to know what we don’t like, but what’s harder is to articulate what we do like. For that, we need both inspiration and expertise. That’s why the “bootcamp” education model is so interesting and applies so well to concrete skills like web-development. Because it immerses yourself in one discipline for months until you reach the expertise necessary to decide whether or not you want to continue doing that.

Behind every great curriculum is a great teacher. And, don’t expect to nail it the first time, instead create systems that foster feedback and iterations for continuous improvement:

  • Set up short feedback loop.
  • Foster on students’ experience more than school’s prestige.
  • Don’t neglect inspiration which should be part of education.
  • Stop teaching a bit of everything and immerse your students so that they can reach expertise and make real career decisions.

Thanks for reading. I’d love to hear your thoughts and opinions in the comments section, whether your are a teacher, a student, a bootcamp alumni, or just passionate about education like we are at Le Wagon.

Le Wagon

Stories from our community on coding, product and…

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store