When I arrived at Bowdoin College in the Fall of 2011, I noticed something wonderful about my school and my peers: learning was everything. "Of course", you might say, "it's school! That's what it's all about". But I'm not just referring to class time, or long nights of homework. It was about learning from each other, about art, science, math, philosophy, literature, and every other subject matter not necessarily listed on your degree four years later.

Because I took many computer science courses before most of my peers, I became the go-to guy for some of my friends. I distinctly remember when I broke down the concepts of objects, classes and instances to one of my friends, in a prolonged series of metaphors, and I remember loving that "Aha!" moment when it all came together for them. When I accepted a position as a student lab instructor for the CS 101 course my sophomore year, a position I would keep for the following two and a half years, I was hoping that feeling would multiply a hundredfold.

And in a way, it did. But along with it came many other challenges.

For every student that felt equipped to tackle exciting problems, I had another who didn't want to be in class and was only there because their parent made them, or others who genuinely wanted to be there, but had mental barriers that would discourage them. It became clear quite soon that these students were the ones that needed my help most of all.

I'm not saying I ignored the top students; for them, the most important thing I could do was teach them to teach themselves, to tackle new, more complex problems on their own, until they stumbled into something they didn't understand.

But the students who fell into the other categories were the ones I was determined to help. The reason is, as someone who loves building and making much more than the actual subject of computer science, I understood their pain. I was in their shoes once. Computer science can be hard, frustrating, and many times discouraging. Especially when you're the only woman or person of color in the room, as was often the case for myself; it felt like everyone else just "got it", and you were the odd one out.

When I joined All-Star Code, an organization dedicated to getting high-school aged boys of color into the tech industry, after graduating in 2015, I was hoping to continue my mission to reach out to people like me who didn't have someone in their corner who understood where they were at. I had never had any formal instruction in the art of teaching, and so being taught to teach by Ashley, our curriculum director with years of experience (and who was a professional comedienne no less) was one hell of a wake-up call. I learned more about teaching and conflict resolution in the weeks before the start of program than I ever had before. And I loved it!

Along for the ride in our classroom were my two amazing teaching aides, who became my right and left hands throughout the program, and two students from the previous class, who were around to help out and to connect with the new students. Every person on this team was invaluable to the eventual success of the program in different ways, and one of my challenges was learning to manage everyone in the classroom optimally, including the students.

And don't get me wrong, there were plenty of challenges along the way. One of the most important lessons Ashley taught us was that many times, students just need to be told that it's OK to do things. It's OK to write code, to google a question to find an answer, to ask others for help. Most importantly, that it's OK to try hard things and it's very OK to fail.

Establishing this was especially important when teaching minorities. Women and people of color are often held to a much higher standard than everyone else. We are expected to be perfect, to not make mistakes, because if we do, it reflects poorly on people like us. And of course, this harmful standard can end up being internalized.

One of the most important aspects of All-Star Code was the concept of brotherhood. We were all there for each other. Not just the students, but the faculty and staff, regardless of race or gender or orientation, we were part of the "brotherhood". It was OK to mess up, because we all mess up. And it wasn't just talk: to break the ice with each other, one of the first activities we did as a group was go around and talk about mistakes we'd made in the past. Not littles ones, big ones, with real consequences. Personal or professional. It created a sense of mutual respect and understanding for each other. We had shared secrets, laid our souls bare in front of each other.

And importantly, we learned to celebrate failure. To embrace it. Because failing meant we were daring beyond what we knew we could do. It meant we were learning, and growing, as people and programmers. That was perhaps the most valuable lesson of all.

That's why teaching is so important to me. It's not just about knowledge transfer. It's about empowerment. It's about teaching people to use the tools they already have. And it's certainly not a one-way street, either. I learned just as much from my students as they learned from me. But one of the most rewarding experiences of all was getting to see students grow from not knowing much about code, to feeling comfortable creating complex applications and websites on their own. To see them comfortable pitching their startup idea for a video game reviews site, or an encrypted messaging app, or even a real-time pair programming code editor.

We had not simply given these students knowledge: we gave them confidence.

And you won't get that from an online tutorial.