In the spirit of America’s ultimate Hallmark holiday, we released a Valentine’s Day themed coding guide last year  — Falling in Love with HTML and CSS — that walks you through through how to build a virtual card. Within 24 hours, we received a frantic email from someone in Switzerland who was almost done with the card but hit a roadblock.

“URGENT: Valentine’s gift card link not working!”  The email said: “Can you help me ??! (Valentine’s is tomorrow!!)." We fixed the bug (a missing tag). And voila! His homemade gift was ready with time to spare.


The chat made it clear that the man was immediately invested, motivated to finish, and inspired to be creative by adding his personal touch to the card. (It probably helped that romance was on the line as well.) It shows just why we use project-based curricula to learn to code.

When Thinkful mentor Michael Herman created this Valentine’s Day guide, he was using the “learn by doing” approach we use in our classes. He takes students through topics like HTML and CSS, and has them code a project to learn the skills.

Projects make learning (especially online learning) so much more effective for four key reasons:

1.) Relevance

2.) Motivation

3.) Feedback

4.) Creativity

1. Relevance: People care about the real world.

Ashley Gavin, our curriculum developer, believes early assignments in computer science courses are often off-putting — a basic Hello, World program — and turn folks away from a topic that has much more relevance than they realize.

Enter, project-based learning. At Girls Who Code, where Gavin worked, they used to spend the first few weeks building video games so that the students were engaged and excited by the work they were doing. They could envision how they’ll use what they’re building, because it’s something they already cared about.

That's why we infuse our courses with relevant student projects. When Software Engineering students get to the API Hack, the last project in our front-end class, they’re super invested. One student who loved farmer’s markets built a tool that lets you find every farmer’s market within a mile of where you are using Google’s API. She’s continued to work on the project even after the course ended so she and her friends could use it.

2. Motivation: You’re not going to give up.

Students come to us because they’re craving accountability. Some have had early success with self-teaching resources but got frustrated simply following a tutorial and not actually building anything they can use.

Real projects with clear goals make learning more meaningful. It never feels like you’re just writing lines of code for the sake of writing them. The man building the card for his Valentine was 99% done with his work, but he couldn’t let the small malfunctioning link hold him back. It had to be done by midnight and he was motivated to finish.

3. Feedback. Feedback. Feedback.

We all love getting feedback on what we do. How does this sound? Does it look right? How many likes did that post get? Feedback is crucial for learning, too. We’re used to a grade, a certificate, a percentage score that shows us what we know.

If you’re building something no one is going to see, it’s easy to lose interest. Building something with the end user or recipient in mind helps you stay invested. There’s a reason the most popular posts in our online community are students sharing their projects.

4. There’s room for creativity!

Getting creative with your projects is FUN!

We saw this when we introduced a new project in our front-end course to teach Chrome Developer Tools. Learning dev tools isn’t that exciting and we used to teach it through simple videos.

But in a newer version of our curriculum, we transformed teaching DevTools into an engaging project called: Your First Hack! The idea — allowing students to pick a website, use the tools to make changes, and share the results — was to keep students more engaged. The early feedback (and projects) have been overwhelmingly positive.

Justin hacked into the Financial Times:


Michelle hacked into The Onion:


Malcolm hacked the Jaguar site:


When you’re designing a project, pick something that is relevant, motivating, feedback-driven, and creative. Make sure it allows you to learn the skills you want. It’s clear that when that happens, students are successful and engaged - and much more likely to fall in love with coding.

Share this article