Why Dev is just like Debate
Published: 2022-03-22 20:46:03


In college I participated in [Parliamentary Debate](http://www.csun.edu/~dgw61315/judging.html), among other [forensics](https://www.americanforensicsassoc.org/) events. 👨🏼‍⚖️

In brief, parli is a two-on-two competition that takes a format of Government vs Opposition. You receive a _Resolution_ at the start of a debate and have a few minutes to prepare. A resolution could be something ambiguous like _"This house should raise the roof."_ or something much more specific such as _"The State Legislature should give undocumented immigrants driver's licenses."_ or anything in between. A Gov team must create a case. The opposition team can either try to predict their arguments, or even create a counter-case. It lasts about 45 minutes. During the rounds, the debaters on the opposing team _"flow"_ the arguments of their opponents on paper to ensure they don't miss anything during their counters.📝

Now, I realize that the majority of people reading this are at least of a cursory level of experience in software and tech. When I say Debate and Dev are similar, I am not talking about the comparison of a single college-level debate and some behemoth of planning and execution such as an Agile project. That's like comparing a boxing match to a military campaign.

I am talking about coding; problem-solving.👨🏼‍💻 That is where the similarities lie. And they are profound. In debate, you start with a resolution. The resolution may be bland and boring, it may be ambiguous, may be tedious, may be familiar, or maybe not. You never know. And coding is the same way. You have a problem, and you never know if that problem is simple or complicated until you get it. It may be abstract. It's solution may come to you immediately or may require some research and head-scratching before the _a-ha_🎉 moment.

To solve the problem you have to analyze it. In debate, you have to do this analysis _very, very quickly_, but luckily as software developers we generally have the luxury of more than five minutes of preparation before pushing to production. But debate and development alike have to understand the problem first. You have to think about the specifics, because language is everything. Only when you have understood the limitations and other complexities can you move forward.

Next, you have to map🗺 it out. In debate this is when you flow it. You write your points in a line, you write their arguments as you hear them. Beauty in chaos. In dev, this is _pseudocode_. This codifies the abstraction. Even if it's totally wrong, seeing it and structuring it while establishing a mess of discrete steps is moving you towards the solution to the problem.

The debate progresses. The code gets written. Points get dropped by both sides, arguments are made. This is code optimization. Each team clings to their strongest arguments, expands upon them, locks it in. In dev, extraneous stuff is removed and functions are rewritten; things become more efficient.

Here is where the metaphor ends and I try to describe the parallels in my personal experience of both of these. There isn't a word for it that I am aware of. Maybe the Germans have a word for it. _Vorstellung_ perhaps?🧐

Do you remember when you first tried to program something and it just didn't work? And you didn't understand why. You were frustrated and annoyed that the computer didn't understand what you wanted. Stupid computer! And then you asked someone or you found a solution online or something and you realized _exactly how many steps you missed_ in your original code. 

**Debate is the exact same way.** You think you are good at arguing until you have to do it well and then you realize you suck. And your mind _just like the computer_ does not want to bend to your will and it is just beyond [rageface](https://i.kym-cdn.com/entries/icons/mobile/000/000/063/Rage.jpg). Stupid brain! 🧠💥🥊

But then, in time, it comes to you. You can suddenly verbalize efficiently exactly why this glass of 🍊 orange juice is good. What 'baters call _net benefits_. (BTW, the glass of orange juice was always my first exercise for teaching new debaters.) In coding this is when you first understand what an array is, or functions, or callbacks, or whatever else.

In debate what it comes down to is being able to get from point A to point B to point C to point D without skipping steps and without getting frustrated. And if you think about it, coding is the _exact same thing_.

As an aside, I must say debate was a _fantastic_ experience overall, and one of the most difficult and yet gratifying things I have ever learned. At first it was supremely frustrating. In time it became easier and easier, and by the time I ended my debate career my partner and I had taken a silver medal at a [national competition](http://www.phirhopi.org/). In the near future I plan on volunteering to teach debaters at a community college just for fun. You should give it a shot!