What I Learned Teaching 20 High School Girls How to Code

This summer, I had the incredible opportunity to be the lead instructor for an introductory coding bootcamp aimed at teaching 20 high school girls the fundamentals of web development. The two-week course, held at a local university, was free for the students and designed to inspire more young women to pursue technology and engineering fields.

On the first day, I faced a room of 20 bright but apprehensive faces. Most of the girls had never written a line of code before. HTML, CSS, JavaScript – these acronyms may as well have been a foreign language. I passed out a "cheat sheet" of common programming concepts and syntax, which was met with overwhelmed looks.

Fast forward to day 14, the final day of the program. Those same 20 students proudly presented their capstone projects to their parents and teachers. I watched in awe as they demoed impressive web applications they had built from scratch – a personalized portfolio site, an interactive quiz game, a beautiful product landing page. In just two weeks, they had gone from zero coding experience to creating functional (and stylish!) websites.

Representation Matters

My primary motivation for teaching this bootcamp was to play a small role in closing the vast gender gap in technology. According to the National Center for Women & Information Technology, women made up only 25% of the computing workforce in 2020. This underrepresentation is even more pronounced for women of color – Black women hold just 3% of computing jobs, and Hispanic women only 1% (NCWIT, 2021).

Diversity in tech matters deeply, not just for equity and inclusion purposes, but because diverse teams create better, more innovative products. A study by McKinsey found that companies in the top quartile for gender diversity on executive teams were 25% more likely to have above-average profitability than peer companies (McKinsey, 2020).

As a woman of color in software engineering myself, I know firsthand how isolating it can feel to be in the minority demographic, both in the classroom and the workplace. Being a role model for these young women was an immense honor and responsibility. I candidly shared my winding path to programming, the challenges I‘ve faced, and the strategies that have helped me succeed in this field.

Representation matters because "you can‘t be what you can‘t see." By being a relatable female instructor, my hope was to show these girls that people who look like them absolutely belong in computer science. Even if they don‘t all choose to major in CS or become software engineers, I wanted to dispel harmful stereotypes and leave them feeling empowered to pursue any STEM career.

Course Curriculum

In designing the curriculum for this crash course, my goal was to give the students a solid foundation in web development basics, while also leaving room for creativity and exploration. We covered a lot of ground in a short time:

  • Week 1: HTML & CSS
    • Intro to HTML tags and structure
    • CSS selectors and properties
    • Box model and positioning
    • Responsive design and media queries
    • Deploying static sites with GitHub Pages
  • Week 2: JavaScript
    • Data types and variables
    • Conditionals and loops
    • Functions and scope
    • DOM manipulation
    • Event listeners
    • Deploying dynamic sites

I structured each day with a mix of interactive lectures, live coding demos, pair programming challenges, and open lab time for project work. The girls also kept daily learning journals to reflect on their progress, celebrate wins, and acknowledge areas for growth.

Here‘s a snapshot of a typical JavaScript lesson:

// Topic: Functions

// Function declaration
function greet(name) {
  console.log(`Hello, ${name}!`);
}

// Function invocation 
greet(‘Alice‘); // Prints: Hello, Alice!
greet(‘Bob‘);   // Prints: Hello, Bob!

// Challenge: Write a function that takes in an array of numbers 
// and returns the sum of all even numbers

function sumEvenNumbers(numbers) {
  let sum = 0;
  for (let i = 0; i < numbers.length; i++) {
    if (numbers[i] % 2 === 0) {
      sum += numbers[i];
    }
  }
  return sum;
}

console.log(sumEvenNumbers([1, 2, 3, 4, 5])); // Output: 6
console.log(sumEvenNumbers([10, 11, 12, 13, 14])); // Output: 36

My pedagogy centered around breaking down complex concepts into digestible chunks, making real-world connections, and emphasizing the iterative nature of coding. I constantly reminded the students that making mistakes and encountering errors is a crucial part of the learning process. Debugging is a skill that takes time and practice to hone.

To further encourage this growth mindset, I adopted the mantra "Yet." Instead of "I don‘t get it," we said "I don‘t get it yet." Instead of "My code doesn‘t work," we said "My code doesn‘t work yet." This small language shift made a big difference in how the girls approached challenges. It reframed struggles as temporary and surmountable – a natural part of progressing, not a sign of failure.

Overcoming Imposter Syndrome

Imposter syndrome, or the persistent belief that you‘re not good enough despite evidence to the contrary, plagues many newbie coders. It‘s especially common among underrepresented groups in tech, like women and people of color, who may not fit the stereotypical image of a programmer.

I saw signs of imposter syndrome crop up in my class whenever a student would preface a question with "This is probably dumb, but…" or apologize for not grasping a concept immediately. To combat these self-doubts, we had frequent discussions about the prevalence of imposter syndrome in STEM fields and how to reframe negative self-talk.

I shared my own experiences with feeling like a fraud, even as an experienced developer and teacher. Paradoxically, the more I learned about programming, the more acutely aware I became of all the things I didn‘t yet know. But instead of letting that knowledge gap become overwhelming, I chose to view it as exciting room for growth. I aimed to model this attitude of curiosity and continuous learning for my students.

Another key strategy was celebrating small wins and incremental progress. We ended each day by sharing one thing we were proud of, whether that was finally squashing a pesky bug, making a cool CSS animation, or helping a classmate troubleshoot their code. These bite-sized victories helped build momentum and chip away at feelings of inadequacy.

The transformation I witnessed was remarkable. Girls who initially prefaced every question with a self-deprecating caveat were now enthusiastically explaining concepts to their peers and eagerly tackling new challenges. They began to internalize that struggling with difficult material didn‘t make them imposters – it meant they were learning and growing. This resilient mindset will serve them well as they navigate the ups and downs of any educational or professional pursuit.

Collaboration Over Competition

In the tech industry, teamwork and collaboration are essential skills. Virtually all software projects are built by teams of engineers working closely together, dividing up tasks, pair programming, and constantly communicating. I wanted to instill the importance of these cooperation skills early on.

We started each day with team-building activities to cultivate a supportive class dynamic. The girls cheered each other on during coding challenges, offered tips and moral support, and celebrated each other‘s successes. I also implemented a daily "Shout-Out" ritual, where each student publicly recognized a peer who helped them that day, whether by debugging their code or offering an encouraging word. This helped foster a culture of collaboration over competition.

Pair programming, where two students work together on one computer, was another effective strategy. The pairs took turns being the "driver" who typed out the code, and the "navigator" who provided guidance and caught errors. This promoted active communication and helped solidify concepts through teaching.

When it came time for final projects, I encouraged the girls to align around shared interests and complementary skillsets. The results were impressive – an e-commerce site for thrifted fashion, a daycare center portal for parents and staff, a fandom blog for a beloved K-pop group. Their applications showcased thoughtful UX/UI design, clean code, and successful division of labor. More importantly, the camaraderie and collective sense of accomplishment were palpable.

Collaboration doesn‘t always come naturally, especially for those who prefer to work independently. But in an increasingly interconnected world and workforce, teamwork is an indispensable skill. By making it a cornerstone of the classroom experience, my goal was to help the girls build a strong foundation of communication, empathy, and cooperation to carry forward in their academic and professional lives.

Confidence Through Competence

Over the two weeks, I noticed a marked shift in the girls‘ attitudes toward coding. Initial intimidation gave way to cautious optimism, which blossomed into genuine enthusiasm and confidence. The driving force behind this transformation was growing competence.

Early on, the command line and code editors felt foreign and unapproachable. But with each passing day, as they learned to navigate the terminal, craft well-structured HTML, and implement JavaScript logic, their comfort level grew. Syntax errors that once felt devastating became minor speed bumps. They developed their own systems for planning, writing, and debugging programs.

This rising confidence manifested in myriad ways:

  • Volunteering to live-code solutions in front of the class
  • Experimenting with advanced CSS and JS features in their projects
  • Helping classmates work through tough concepts and bugs
  • Showing genuine excitement to learn more and tackle harder challenges

One student‘s journey epitomizes this beautifully. She came in with no prior coding experience and significant anxiety about her abilities. In the first week, she would barely speak up and needed extensive 1:1 support. But as her skills improved, so did her participation and enthusiasm. By the end, she was confidently presenting her machine learning project and expressing eagerness to keep growing as a programmer. In her own words: "I used to think coding wasn‘t for me, but now I know I‘m capable of much more than I ever imagined."

Watching their self-efficacy skyrocket was incredibly rewarding. It reaffirmed my belief that the best way to build authentic, lasting confidence is through acquiring concrete skills. When you‘ve overcome tough challenges firsthand, you start to internalize your own resilience and abilities. That self-belief then propels you to take on bigger challenges and opportunities.

The Power of Teaching

Teaching is a two-way street. In the process of guiding my students‘ learning, I gained invaluable lessons that made me a better programmer and communicator. Distilling technical concepts into beginner-friendly terms stretched my explanatory skills. Live-coding with an audience kept me on my toes and reinforced the value of writing clean, well-documented code.

The girls asked astute questions that deepened my own understanding of web dev fundamentals. They approached projects with fresh perspectives and creative ideas I never would have thought of. Even when they got stuck on a tricky bug, their determination to understand the root cause led me to see familiar problems in a new light. Being a mentor pushed me to sharpen my own skills and learn alongside them.

More than anything, though, teaching reaffirmed my passion for code as a tool for creation and problem-solving. It‘s easy to lose sight of the magic of programming when it‘s your day job. Seeing it through the eyes of enthusiastic beginners rekindled that initial spark I felt when I wrote my first line of code.

My students had big dreams for how they would apply their new skills – making websites for family businesses, building study apps for their peers, creating games to spread social awareness. They were already envisioning how to use code for good. In an industry often criticized for its negative societal impacts, this was a heartening reminder of the power we have as developers to build solutions that help people.

I walked away energized to keep sharpening my skills and working toward a more ethical, human-centered tech ecosystem. The curiosity, creativity, and conviction these girls brought to the classroom will stick with me as I continue my own growth as a technologist and teacher.

Looking Ahead

Two weeks isn‘t enough time to become an expert coder, but it is enough to plant a seed. My ultimate mission was to give these bright young women a solid foundation and the confidence to keep exploring computer science and engineering.

The true measure of success will be how they apply their learnings going forward. Some may take more CS classes or pursue it as a college major. Others may integrate coding into their other interests, like data journalism or bioinformatics. At the very least, I hope they all feel empowered to be savvy tech consumers and advocates for a more equitable industry.

Though our bootcamp has ended, my commitment to supporting these coders has not. I‘m setting up a Discord community for the alumnae to stay connected, share resources, and support each other‘s ongoing projects. I plan to host quarterly virtual meetups for them to reconvene, showcase their work, and learn new skills together.

I‘m also compiling a list of other free programs, scholarships, and mentorship opportunities geared toward high school girls in STEM to continue expanding their horizons. My role is to champion and guide their continued growth in whatever way I can.

Beyond this one class, I‘m energized to keep teaching and mentoring, especially for underserved groups in tech. I‘m in the early stages of developing an open-source web dev curriculum designed for high school computer science programs. By creating free, high-quality, project-based learning resources, I hope to equip more educators to inspire the next generation of diverse coders.

Continuing the Momentum

My summer with these brilliant young coders reaffirmed my belief in the transformative power of computer science education. It also crystalized the urgent need to make that education more accessible and inclusive.

Early exposure and encouragement can make all the difference in a girl‘s decision to pursue STEM. We need more programs like this one to give underrepresented students hands-on experience, near-peer mentorship, and a supportive community while they explore tech.

Just as importantly, we need to change the culture of the tech industry itself to be more welcoming to those who don‘t fit the traditional "bro-grammer" mold. This means actively recruiting and retaining diverse talent, elevating underrepresented voices, and fostering inclusive environments at every stage of the pipeline. It won‘t be a quick fix, but it‘s a critical shift to building a more vibrant, innovative, and equitable future.

Those two weeks were a powerful reminder that talent is everywhere, but opportunity is not. There are so many curious, creative, capable young people out there – we just need to open more doors for them to thrive.

As I reflect on this unforgettable experience, I‘m filled with hope for what this tenacious group of coders will accomplish. They are the innovators, entrepreneurs, and leaders our industry needs. I can‘t wait to see how they apply their skills and passion to change the world for the better – one line of code at a time.

Similar Posts