G-Code Connect

End-to-end design of an academic support platform for a coding bootcamp

Shipped

Product Design

Research

Overview

G-Code is a non-profit that helps under-employed Black, Brown, Indigenous women and non-binary people break into tech through an online coding course. As part of the effort to improve student retention and graduation rate, my team helped G-Code build an online learning community and office hours scheduling platform. As the only designer on the team, I did the end-to-end design and the project was shipped in 2023.

My Role

Team

Project Type

Design Timeline

Solo Product Design
User Research
Design Systems
Branding

1 Product Manager
1 Tech Lead
4 Front-End Engineers
6 Back-End Engineers

Community project for a local non-profit
Shipped

3 Months, Fall 2022

Our Client

G{Code} is a non-profit that helps under-employed Black, Brown, Indigenous women and non-binary people break into tech through an online introductory coding course, with a unique community-focused model.

Problem

The academic support system is inefficient

G{Code}’s mission is to help underserved students thrive through mentorship. However, because instructors are volunteers, they hold virtual drop-in office hours irregularly and notify students last-minute via a Slack Bot. As a result, student feedback shows that they couldn't always get help timely. In many cases, this made them fall behind, thus decreasing student engagement and retention rate.

Solution Preview

Through user research, identified three problems that made getting academic support difficult -- scheduling friction, inflexibility with the current system, and the feeling of imposition when asking mentors for help. To solve these problems, I advocated for creating a platform that's different from what the spec initially asked for.

Solution Preview

Tech Stack

Getting Started

Advocating for User Research

Traditionally, JumboCode expected designers to work with little or no research. But, since our spec was too broad, I advocated for research. First, I took the initiative to do a stakeholder interview with the Director at G{Code} to understand their organizational needs, challenges, and the success metrics of this project, and got contacts for user interviews.

User Interviews + Insights

🤔 So...what do students need that the support system doesn't provide? Why?

Then, to understand the tasks students do when they get stuck and identify potential pain points, I conducted 8 semi-structured interviews with G{Code} students and instructors.

🥁

🥁

🥁

Major Pain Points

Through analyzing user research, I identified 3 major pain points that deterred students who need assistance from receiving help.

😩  Scheduling Friction

The drop-in office hours usually don't work, but requesting sessions takes back-and-forth.

🕜 Inflexibility

If office hours are not available, students can't get enough support.

🙍🏾 Asking for Help Can Feel Vulnerable

Most G{Code} students never learned to code in a formal education setting, so many expressed feelings of imposter syndrome and some feel like asking for instructors' time is an imposition.

Tackling Pain Point 1: Scheduling Friction

💡 Community Booking System

Goal: Make booking office hours fast across all use cases. We wanted to maximize schedule overlaps by letting students choose from instructors' marked availability in a few clicks.

User Flow - The Happy Path

The PM and I discussed the user flow and showed it to the Developers. We decided which features we wanted for the MLP and Blue Sky based on implementation feasibility.

Taking Care of the Edge Cases

We seek to create a system where students can get help regardless of appointment availability.

🌳 Ideation

The first challenge was to decide how we display the calendar, the interaction of time selection, default appointment duration, and information hierarchy.
The Engineering team proposed the list view (Option 1). Though this would be easier to implement, the long scroll it takes for students to sort through all availability was against our design goal of efficiency. So, I made some quick wireframes to suggest alternatives.

✏️ User Testing, Findings, & Iterations

We couldn't decide between the Monthly Calendar (Option 5) and Weekly Calendar views (Option 6), so I prototyped and tested the initial iteration. After several rounds of iterations and feedback, I made the scheduling tool more customized to G{Code} students' needs.

Before

❌  Unhelpful information delays the time selection process

 •   Users don't find the monthly view useful
 •   Users were confused about the group sessions. They thought some available sessions weren't available, so it took longer to select a time. They also overlooked the 60 minutes option.
 •   Some users only wanted to see availability of a preferred instructor, but there is no way to do it.

After

✅ Designed for User Workflow - Simplified Weekly Calendar View with Robust Filters  

 •  Users prefer this iteration since they only schedule a few days in advance. It's also easier for engineers to implement
 •   Eliminated clutter, as most students need 1-on-1 appointments at 30m duration
 •  Allow students to filter desired day, time, or instructor

🕜 Negotiating with Engineers and PM

Some students are anxious about cold-messaging instructors. Asking for help can feel like an imposition, and admitting that one needs help can feel like a sign of incompetence.

🙍🏾 Asking for help can feel vulnerable

To our surprise, users prefer the weekly views over the side monthly calendar view, which was common amongst competitors. It is because they only schedule office hours a few days in advance, as assignment deadlines approach.

😩 Inefficiency

To our surprise, users prefer the weekly views over the side monthly calendar view, which was common amongst competitors. It is because they only schedule office hours a few days in advance, as assignment deadlines approach.

Another Round of User Testing

🌈 100% of the users tested successfully changed date and select a time in 5 seconds, meeting our target goal.

I ran more sessions with 5 G{Code} instructors/students. I designed tasks, and asked them to think aloud as they share their screen while using the click-through prototypes.

Tackling Pain Point 2: Inflexibility

💡 Community Forum

Referring back to user research, students often search independently and ask peers from their project groups if office hours are not available. However, it's hard to get answers from peers outside of their project groups. It's also hard for beginners to search CS forums, since strangers tend to explain solutions in concepts beyond the G{Code} curriculum. Several students and instructors expressed interest in getting a Community Forum.

👀 Thus, I proposed this feature to my PM, allowing students to ask questions to all instructors and students, and for instructors to post resources.  Over time, this will become a curated knowledge base for students years to come. The design goal is to increase flexibility of the academic support system, giving students more control over how they get unstuck, in ways that fit their time the most.

🦜 Ideation

After a few brainstorming sessions, I experimented with all different ways of walking users through training process: steppers, a training guide section, tips, navigation bar, training guide page…

✏️ User Testing, Findings,
& 3 Major Improvements

Increase scannability. Users prefer to search by the subject line first to digest information faster. Though the side by side view show more results, the details were not relevant in this stage.
Suggest solidarity. Users said the questions with fewer "upvotes" in the original iteration could be ignored, so I changed upvotes to emoji reactions
More efficient filters. The new iteration allows combining multiple filters, by week and by topic.

❌ Side by Side View

✅ Subject Line Only View

Tackling Pain Point 3
Asking for help can feel vulnerable and imposing

💡 Option for anonymity

🥷 Referring back to the personas, we know that some G{Code} students experience imposter syndrome and they worried about being judged. Having an option to ask anonymously encourages more students to clarify their concerns.

💡 Mentor Profiles

I found that focusing on mentors' professional journey doesn't help users feel more comfortable reaching out. So I replaced "About" with a "I'm happy to help" section, adding instructor availability to make asking for availability feel less imposing, and include prompts to help break the ice.

❌ Generic Profile on Professional Experience

✅  Show Enthusiasm to Help + Personal Context

💡 Empathetic UX Copy

Before

❌   Mechanical intake form

 •   Sometime students feel the pressure to pretend they know more than they do, which deters them from clarifying all questions
 • The form doesn't provide enough context for instructors to prepare for a session

After

✅  Digital interactions should also be conversational and understanding

 •  Validates the worries of students who are stuck: "I'm so lost (and that's okay!)"
•  Gives students topics to discuss
Allow uploading a GitHub link or screenshot
Joyful micro-interactions

Another Round of User Testing

🌈 All 5 students tested rated the scheduling page, mentor profile, and questions on the request form made them feel less intimidated to reach out.

Taking Care of the Edge Cases

When Instructor Suggested a New Time

Student suggests alternative times

Reschedule

Cancel

Helpful Empty State - Make Negative Positive

Filters

Creating Consistency: Building a Design System

I chose to use a visual language that values simplicity and playfulness, to break the stereotype that coding is intimidating and male-dominated. I also provided all the components and their states to guide the development process.

Final Design Highlights

😫 Tackling Pain Point 1: Friction

Convenient Office Hours System

Students can schedule a meeting in a few clicks, and upload their code to help instructors prepare.

😫 Tackling Pain Point 2: Inflexibility

Community Forum

Get quick answers from instructors and peers, and build a knowledge base curated for G{Code}.

😫 Tackling Pain Point 3: Vulnerability

Build relationship with mentors

Mentor profiles emphasize their availability and eagerness to help, so that students don't have to worry about imposing.

Measuring Success

The director of G{Code} and several instructors said they will be champions for the platform! My designs are being implemented by the Engineering Team.
Once it’s launched, we seek to measure:

📈 Adaption rate
📈 Number of office hours scheduled on the platform
📈 Weekly number of posts on the forum
📈 Operation time and steps required to schedule appointments reduced


Also, G{Code} thinks this platform can be scaled up to connect alumni in the future, which could be design projects for next year's JumboCode team!

💖 Positive Feedback

Challenges & Learnings

Thanks to my team and the people at G{Code}, I grew a lot as a designer and team player and practice designing with empathy and intentionality. Being able to work with an industry client definitely made the entire thing much more realistic than a 'no-constraints' class project.

👩🏻‍💻💭 Getting feedback early and often
Working in a team is very different from designing alone. In the face of ambiguity, I learned to check in with Engineers early to make sure that my designs work for their constraints, and asked feedback from G{Code} users to make sure that designs are solving their problems. To me, every new feedback is like unlocking a new piece of puzzle, and seeing the project evolve to unexpected places was very satisfying.

🤠 Maintaining a flexible mindsetThe most interesting thing about this project was that what we initially thought was the problem wasn't the most pressing one at all.

It was only when I talked to users, understood their lives, fears, and goals, then I found surprising insights that added more dimensions to the problem.