Jesse Contreras

← Back to Blog
Aug 10, 2025 9 min read Community

Mentoring at Code the Dream

A reflection on mentoring developers from underrepresented backgrounds through Code the Dream’s practicum, where students learn to collaborate, problem-solve, and ship real software.

Cover image

Why Code the Dream resonated with me

I just passed a year mentoring at Code the Dream and I've had some time to reflect on why this volunteering means so much to me. I generally don't pontificate these thoughts out loud but I think them in my mind and feel them in my heart. I grew up in southeast Los Angeles, in a neighborhood where resources were scarce but determination wasn’t. My parents never had the opportunity to pursue formal education, but they taught me what grit looks like. That lesson carried me through every obstacle; first in life, then in tech. So when I came across Code the Dream, it struck a chord. The program’s mission to open doors for underrepresented developers felt personal. It is about more than teaching people how to code. It is about giving students access to guidance, tools, and opportunity: the same things that changed my own path.

The practicum

After students finish their core MERN stack classes, they enter what’s called the practicum. It’s the final step before they start applying for real roles. Over the course of a quarter, they work in small teams to come up with an idea, design and build a full-stack application from scratch. They plan features, create tickets, hold stand-ups, and ship code. It’s the closest thing to a real engineering environment because it is one.

As an example, the last practicum I mentored the cohort created a project called Kindnet. It’s a platform where people can donate or exchange goods with others in their local area. The idea is simple but powerful: to make giving more accessible and build community through shared generosity.

The team used React on the frontend, Node and Express on the backend, and PostgreSQL for data. They modeled their schema in DBeaver, deployed with Render, and integrated the Mapbox API to visualize posts geographically. They also introduced pagination for smoother browsing and used Confluence to document technical decisions and spikes. Everything tied together through Jira for sprint management and collaboration.

Designing Kindnet

For design, the students used Figma to prototype the user experience and create a unified design system. The process covered color palettes, typography, and layout consistency. It was an eye-opener for many of them; seeing how design and development fit together, not as separate steps, but as parts of one creative process.

Kindnet design system and Figma prototypes
Kindnet's design process — cohesive prototypes and defined UI kit built in Figma.

Building the app

Once the groundwork was set, the students moved into active development. They used Jira to manage tickets, move issues across sprints, and track progress in real time. Seeing them take ownership of their workflow, discuss blockers, assign themselves tasks, and review each other's code was one of the most rewarding parts of the mentorship.

Kindnet Jira board view
Kindnet’s Jira board during active development — structured sprints and collaborative issue tracking.

Along the way, we encouraged the use of spikes; short research tickets to explore complex features before implementing them. One of those spikes, for example, focused on evaluating image storage options. The students compared Cloudinary, Firebase Storage, and AWS S3, discussing trade-offs and pricing models like experienced developers.

Confluence spike document showing storage options
A Confluence spike evaluating image storage options — Cloudinary, Firebase, and AWS S3.

Introducing collaboration tools

Part of my role as a mentor is also introducing students to the collaboration tools that define modern engineering. We don’t just talk about code; we talk about process. That means understanding Jira for issue tracking, Confluence for documentation, Render for deployment, and DBeaver for database visualization. These tools are the connective tissue that make teams productive and keep everyone aligned.

One moment that stuck with me happened while we were discussing how the backend team would handle their data. One of the students asked, “How are we going to see what’s on the database?” They were querying through an PostgreSQL client, and at first I didn’t understand the question. I assumed they had already used a database management tool before. They hadn’t.

I showed them DBeaver, and within minutes it changed everything. Suddenly they could see their data, tables, and relationships visually. They were like, “This is exactly what we needed; we can see all of our data in one place.” I laughed and said, “Of course.” But internally I thought it was amazing. They already understood data modeling, foreign keys, and referential integrity, yet had never worked with a universal database client. Watching that realization click was incredible.

That moment reminded me that software engineering is not just about writing code; it’s about learning the processes and toolkits that make us better programmers. With how fast things move, especially with the rise of generative AI, understanding those fundamentals matters more than ever. And honestly, I find it just as rewarding to learn from these moments as to teach them.

Mentoring and process

My mentorship focuses on backend development and architecture, but the process is where the growth really happens. Students learn how to think about the bigger picture; how to scope a feature, break down tasks, communicate blockers, and support their teammates. I answer questions about data, tools, and trade-offs, and I ask them to be autonomous but intentional with their decisions. They have the freedom to build, but the accountability to explain why they built something a certain way.

I also hold one-on-one sessions with students where we just talk shop, debugging strategies, technical curiosity, or what they find exciting about the project. It’s a gratifying and stimulating environment; there’s a rhythm to it that reminds me why I love engineering in the first place. They learn how to approach their work like professionals, and I get to see firsthand what growth looks like in real time.

It is worth mentioning that this is a volunteer opportunity. Mentoring happens outside of traditional work hours, at times that make sense for people who are employed full time. It is structured to be flexible and sustainable, so mentors can give back without it clashing with their own professional responsibilities.

Why it matters

For me, this work brings things full circle. I didn’t grow up around people in tech or have a network waiting for me. Everything I learned came from persistence and the generosity of those willing to teach. Mentoring at Code the Dream is my way of paying that forward. I know what it means to not have access, and I know what one person’s encouragement can do.

Watching students debug a feature, push it to main, and see it live is what keeps me doing this. It’s proof that talent is everywhere, even if opportunity isn’t. And if what I share helps even one student move a little closer to the career they’re chasing, that’s more than enough for me.