Coding exercises

Coding exercises are instructor-created challenges that help learners in development and data science practice their coding skills right in the Udemy course-taking experience.

1.Strategy

Storytelling with actionable insights

As the design lead, I built a strong partnership with the product manager in my domain. In our first year in the domain, we gained a good amount of knowledge about our users and the Udemy instructor platform. We wanted to reflect that in upcoming years' product strategy.

We started collecting data on previous instructor research, content consumption, and competitor analyses. When the possible direction became more evident, we created decks to gain buy-in from senior leadership. We gradually grew our audience and content until we agreed on a high-level domain goal for the following year. Together with the PM, we lead our team to create detailed OKRs for the next quarter to get closer to achieving our goal.

New strategical theme:

Improve the quality and adoption of
in-course practice tools  

Learning science proves that practice is vital for learning. Udemy offers its learners a unique course experience by combining video lectures and practice activities.

First, reimagining the coding exercise tool

Low
consumption rates

Importance of technology domains

Company strategy on skill development 

Udemy prioritizes technology and development education and provides top-notch instructor content. However, the coding exercise tool, primary for development courses, has low usage among instructors.

Stock overflow 2023 survey results

Top online course platforms to learn to code

Project Goals

  • increase adoption rates

  • bring instructors who use third parties for coding practice back to Udemy

  • as a result, provide learners with a better learning experience.

2.Designs

Learner tools

Legacy view

New, IDE-like coding experience

With its new features like test cases, hints, and solution explanations, the coding exercise tool guides learners in every step. Adjustable panels of the design help learners to customize their coding experience experience.

Instructor tools

Legacy view

New instructor experience

New creation flow guide instructors with learning design best practices to create quality coding exercise while also giving flexibility to seasoned instructors to still use their flow.

Example codes, generated with AI feature and result panel with error details, help instructors to excel at creating test cases.

They can create learning-facing content in one final step.

3.Outcome

%81

Learner CSAT

I have only done 3 coding exercises, but I’m already in love with them! Really love the course and how it comes with actual exercises and tests to see how you have been progressing.

Learner quotes

It is amazing, I would do more courses if this sort of activity was heavily used!
It works well and allows me to practice in a learning environment. It is very useful to receive feedback when I submit my code to make sure I am doing what was taught.

%80.4

Instructor CSAT

This is fantastic! I love the layout and options to show or hide, and the test report is great. Being able to access hints and a solution explanation from the exercise will be very helpful to students.

Instructor quotes

The flow of creating coding exercises is very simple to understand to newbies also!

3x increase

in new courses with coding exercises

2x increase

in coding exercises created in a year

Instructor engagement

4. Process

Problem domain

As the core team of product manager, designer, and engineers working on instructor tools, we first had a heuristic evaluation of the legacy coding exercise in addition to analyzing the existing documentation. Then, we quickly realized we needed more insights from domain experts.

Heuristic evaluation

Since we had very talented engineers in the company, we launched an internal test as the fastest way to gather insights. Within a few days, 35 people experienced the tools and shared their findings with the project team. This study helped us to map the high-level pleasure and pain points.

Internal user test with all Udemy teams 

In parallel, we completed a benchmark study to straighten our understanding of the current landscape in the industry.

Competitor benchmark

Instructor survey

We launched an instructor survey within the product dashboard to understand the reasons for low adaptation numbers.

screen image of old design

Top reasons for not using Udemy's coding exercise tool 

  • Creation of coding exercise is hard 

  • Learner experience isn't good enough

Changing the course

After collecting a lot of insight, I organized a three-day design sprint. We prototyped an innovative solution that includes creating a coding exercise pool for instructors.

Kick start with design sprint

Hypothesis 
IF we provide ready-to-use, quality coding exercises to instructors, THEN they will include them in their courses (and increase their learner engagement)

On the last day of the sprint, we invited five instructors to test our prototype, and they rejected the concept synonymously.

Key learnings 

  • Each coding exercise is unique and closely-tight to the learning design of each course. So, ready-to-use coding exercises are not the answer. 

  • Instructors were aware of the fundamental need for practice, and they would prefer to provide it with a Udemy tool to create a holistic learning experience in their courses. However, they don't choose it now mainly because it doesn't have a good learner experience. 

New focus
Designing the learner experience in the first phase, then moving on to the instructor tool in the second phase.

Applying learning design principles 

I created close collaboration with the Udemy learning science team so we can reflect most recent learning and instructional best practices. They helped the team to create foundational rules for both learner and instructor tools. They were also a big part of the design reviews, always bringing a learning science perspective to the table.

Backwards design process is recommended while creating coding exercises, which suggests an instructor first identify their learning objective and create the solution. Creating the problem description is the last step. This ensures instructors frames the problem with the solution in mind.

Collaborative design process

Participatory design sessions with instructors

The UX researcher and I designed 1:1 participatory design sessions with Udemy instructors to create the learner tool to benefit from their expertise in learning offerings.

Structure

  1. Coding exercise creation journey
    While instructors showed and told us how they created their exercises, we took notes on Miro board and collected screenshots. 

  2. Feature ideas 
    Instructors reviewed the journey in Miro and added more feature ideas. 

  3. Sketch of the ideal learner experience 
    We sketch the ideal learner experience with them using the toolkit I prepped. 

  4. Feature prioritization 
    Finally, they prioritized the features in their sketches. 

When we started the solution phase of the instructor tool, we already launched the learner solution and made many iterations on it. So everyone on the team internalized the domain and instructor needs.

I started the instructor tool design process with a small design sprint to ideate together and create solution sketches that could be the starting point for our instructor-phasing solution.

Ideation workshop with the team

Frequent design reviews
with the core stakeholder team 

At the end of each two-week sprint, I facilitated an interactive design review session with the core stakeholder team. I first presented the outcomes, such as; user flows, layout alternatives, detailed wireframes, prototypes, and UIs. Then participants added their feedback with sticky notes. Lastly, we reviewed the comments and discussed them as a team.

Participants
Pod (the core team of PM, product designer, and engineers), Product marketing manager, domain leads of product, design, and engineering, designers from another team experienced in the domain, Learning designer

After the reviews, I met with the PM, UX researcher, and Engineering lead in identifying the following actions based on feedback. 

Co-design sessions
with the engineering team

Design reviews sometimes surfaced use cases I can't grasp fast enough to design for. In such circumstances, I organized small co-working sessions with a couple of volunteer engineers since they were the domain experts, and we designed for the use case together.

User-centered rollout approach

We first launched the learner experience and then the instructor experience in beta gradually to selected courses. We facilitated additional usability tests with learners and instructors during beta.

I also monitored user behavior through Fullstory recordings and organized watch parties with the team to share the excitement and the insights.

We collected feedback within the tool during beta and evaluated it frequently. In this process, on top of fixing bugs, we improved usability and fine-tuned delight elements in the experience.