The journey of learning to code, for me, has borne a lot of similarities to learning the mechanics of university-level competitive debating. I’ve been wanting to write about these similarities for a while now, but struggled to find a unified, thematic way to present this intersection.

A bit of background: I debated competitively for about four years throughout university and graduate school. I never got very good at it. I never won speaker awards (recognition for the highest-scoring individuals at a competition), never won national titles, and produced a handful of good cases (topics briefs that establish the subject and boundaries of a round) but never anything spectacular. I experienced a lot of frustration very early on in my debating career, because I could not feel my own skills improving, no matter how much time I spent on practice.

Many years later, I realized that the practice of public debate, against another person, in front of a judge, was enormously valuable, because it taught me how to lose. For most people, debating in front of an audience of any size is a terrifying thought. Debate rounds, as I experienced them at my peak, were nothing short of intellectual gladiatorial battles – they were spectacular, gripping, and seemingly awful if you lost!

When you debate, even on behalf of a position you don’t believe in, it feels like your intelligence is on trial. It is extremely difficult at the beginning of your debating career to separate the objective reality of having lost a debate round from some abstract, subjective perception that you are somehow less intelligent, less strategic, and less rhetorically talented than the person who beat you. Very often, I felt very, very stupid at debate tournaments, and I wondered whether I was ever going to become good enough to compete with the debaters that I respected the most.

I’ve seen this pattern in people who are learning to code. In fact, I was right there, back in September and October. I felt timid about showing my code to other people, for fear that my peers would think my code was sloppy and amateur-ish, which somehow meant that I was a bad programmer. Then, I had a realization one day: I spent four years making a fool out of myself in debate rounds, often in front of people that I respected. I was often wrong, and I’m probably going to continue to be wrong, a lot! What is the worst that could possibly happen now, from behind the safety of my terminal?

I’ve since learned that it is infinitely better to be wrong, than to keep your efforts concealed. It is better to say incorrect things and lose a debate round than to never have the round in the first place. It is better to apply for a job and to be rejected, than to not apply at all for fear of rejection. It’s better to be wrong loudly than to say nothing, because the worst that can possibly happen is that you learn something new.