Designing a personalized learning platform for coders
An old-fashioned approach to building a personalized teaching assistant in the pre-AI era.
Meet the students
When the world was forced to go remote in 2020, my college friends and I interviewed engineering students to see how they responded to the new ways of learning, and if there was an opportunity to do something new. After processing dozens of interviews, we discovered the following traits to be the most common:
Enrolling into a bootcamp appeared to be an obvious solution but most of them weren’t time-rich or money-rich to invest into it. They preferred to learn from self-paced courses because most of them were affordable. They also had a very tiring college schedule.
The problems
Out of all the problems that the students surfaced in their learning journeys, I will unfold the ones that we believed were the most important to solve.
“I don't know what to do when stuck”
When learners hit a road block while solving a question (on other platforms), they could not guide themselves to the solution. They needed help in the form of hints or solutions to move forward. This trend of seeking generalized help did not improve their skills over time. The learners' growth depended only on their consistency and efforts. Hints/solutions hardly contributed to it.
The problem with hints was that they were the same to everyone, irrespective of how good or bad their attempt to solve the problem was. Solutions couldn't help either because in most cases, they did not guide the learner to think in different ways. It was just the final code.
We believed that this problem added a lot of friction to the learning journey and is the source of demotivation. The learners are frustrated at this critical stage of the learning process, due to slow or no progress. This situation amplifies minor inconveniences.
“I feel confused about what to learn”
The learners are constantly looking for a structured path. This is something that almost every learning platform offers. We need understand why this is still a recurring pain point among many learners. It is one of the building blocks of a learning platform. It has to be more than just good.
“I don't know how much to learn”
Some learners expressed that the knowledge they gained from online courses felt less than needed. They felt that the courses were not challenging enough to reach a great skill level so they headed to other practice platforms to fill that gap. Now, they're facing the problem of solving infinite questions. They don't know what is sufficient or what their goal is.
What's next?
We went to our whiteboard and brainstormed dozens of ideas. After some back-n-forth with the learners and testing mini-MVPs, we identified four key philosophies to help shape our solution. It was important to consider our expertise and limitations while narrowing down on what we can build in a timeframe that made sense.
The foundations
The ed-tech space (programming/coding space) was quite populated and there were a lot of standard features that a learner would expect from our platform. Re-inventing the wheel might lead us to throw a lot of time down the drain. We took off by borrowing the industry's best practices and learn why they aren’t working out for the students we spoke with.
Read on to know how we translated shortcomings to user needs.
“I don't know what to do when stuck”
Unlike the common practice of making topics to look like the index of a textbook, we built a roadmap that was less intimidating and more approachable. Upon testing this with focus groups, we discovered that they found this depiction of the roadmap helpful.
This was the v0 of our roadmap, which evolved a lot as time progressed.
“I want a focused and distraction-free environment at the time of solving questions”
Every product has its own goals. We observed that other platforms allowed/encouraged navigating to other parts of the platform, which may hinder the learner’s focus at the time of coding. We wanted to get rid of that distraction to aid focus.
“I want personalised hints”
This was a tech-heavy solution and I won’t be getting into the details of it. We designed and built a one-way communication to trigger hints depending on the code that the learners have submitted. I worked on the copy for the messages as well.
Top: v0; Bottom: After a few rounds of user feedback
Temporary trade-off
Making courses (educational content) was a time taking process. We had to temporarily position the platform to be a practice platform (more questions and fewer educational resources) to test the parts of the product that we could build first.
Designing the learning experience
What started as a practice platform with just one subject, Data Structured & Algorithms, evolved into a journey that contained multiple subjects, guided learning, positive reinforcements at critical learning stages, and more.
The product & design direction was dictated by our teaching philosophy, we designed in-house after consulting top professors. Let’s take a look at the four pillars of our philosophy.
Pillar 1
A learning journey must be broken down into smaller portions and upon completing each one, the learner must experience a sense of accomplishment. It can either be in the form of a milestone or a reward.
Pillar 2
A learner, at all stages of the journey, must be aware of their progress and have an idea about what is ahead of them.
Pillar 3
Educational content must be broken down into the smallest consumable bits to retain the knowledge more easily.
Pillar 4
A learner should have the opportunity to learn by doing.
The final output
What you’re seeing here was the last stage of the MVP in the beta testing phase. This solution was not a one-shot. We arrived at this outcome after building, rejecting, and innovating tons of features! Our early testers (learners on the platform) always had one hand on the steering wheel in this journey. We decided to take off when they were happy with what they were experiencing.
Launching a product demands a more holistic output. We then designed other screens like course catalog, subscription experience, checkout experience, etc.
Other tricks from the hat
I designed an internal CMS tool to build and publish programming courses for our product. I designed the logo, design system, website, and did a little bit of motion design as well. It’s always fun to try something new!
















