Skip to Content, Navigation, or Footer.

Jonathan Douglas: How (not) to think like a computer

My mind has never thought as an ordered set of instructions. I always have a jumble of thoughts in my head, reminders to do laundry next to overdue problem sets on top of pleas from my mom to CALL MY GRANDPARENTS. I’m lucky if I finish any task before running off to the next best thing. 

A computer thinks in the opposite way. Every bit goes exactly where it is told to go, every line of code executed exactly as written. A computer doesn’t procrastinate, and it definitely doesn’t forget to call its grandparents when it’s told to do so. The only problem is, you need to tell it precisely what to do and how to do it. I’m not so good at that. 

For years before college, I was enamored by this opposite mode of thinking and what it could solve. I devoured headlines of impossible games beaten and entire industries upturned overnight. I spent many late nights starting the latest coding tutorial online, but I could never get further than a simple “Hello World” printed in tiny letters on my screen. I didn’t understand how the different pieces worked together, how they made a product that was more than the sum of its parts. 

Once I got to Brown, I was surrounded by people who understood this foreign way of thinking far better than I did. Professors were building robotic assistants while my peers wrote programs to visualize the news in more than 65 languages. This place was full of brilliant coders, builders and thinkers bursting with creativity. I needed to learn from them. I thought that interviews with scientists for The Herald and late night conversations with engineering friends would get me there, letting me avoid the dreaded blank text editor and the empty terminal line. But every one told me to take my own leap into coding and test the waters under one of Brown’s most revered professors

So I tried. I hated it. I had never been in a class where it was so difficult to even open an assignment. My scattered brain constantly forgot the difference between parentheses and curly brackets, between void and null, between classes and objects and global variables and local variables. Why should I care about stacks and queues? I wanted to recreate Google Maps, not a line for the teller at the bank. An army of teaching assistants kept me marching forward, but I knew this was the end of the line for me.

And then my own program beat me in a game of Othello. Somehow, those simple stacks, queues and curly brackets came together, elegantly “thinking” beyond my own capabilities. I experienced something akin to a high — hours of degrading screen staring and exasperated pleas for help culminated in a few short minutes of intense, all-consuming bliss, better than any finished paper or problem set before it. It was all worth it. There had to be more. 

I continued down the digital rabbit hole with more classes, more assignments and more languages, but I never could master the million little tricks needed to do anything worthwhile. My code was inefficient, the syntax atrocious. Functions hobbled into each other while my peers’ flowed smoothly. Once again, a nagging voice told me to give up and I listened, repeatedly. I quit classes a dozen times, dropping the concentration for days, weeks, months at a time. 

After I bombed yet another assignment, ready to quit computer science, a TA sent my class a letter compiled by dozens of students and faculty in the department. They told us that we, struggling with impossible concepts and jumbled brains, were not alone — high-flying, accomplished older students had failed homeworks, projects and entire classes. My tenure-track professor had dropped a semester because he couldn’t pass some classes and was unable to continue with a low GPA. Students who had been rejected and called “useless,” and who had cried for hours on end, eventually steamed ahead. I realized that no one wrote flawless code, no one understood the intricacies of every algorithm and no one thought just like a computer. They all had some of that jumbled brain of mine, trying to make their thoughts coherent for this foreign machine. 

Their words changed my mindset. While they couldn’t make me a better programmer, I knew that every time I stumbled, hundreds of others were stumbling with me. They gave me the resilience I needed to keep writing and rewriting that same line of code, avoiding the temptation of a copy-paste from Stack Overflow. I have continued chasing that programmer’s high, although it often escapes me. I never did figure out how to think truly algorithmically — my code usually doesn’t run and my outputs are wrong about 90 percent of the time on a good day. But when I graduate, my degree will have the words “computer science” on it, even if it should be written in a small font and with an asterisk. 

I may not be the best coder, but my curiosity has remained boundless. Professors and friends have fed my need to try rather than observe, to experience coding rather than read about it in the news. That encouragement is emblematic of Brown. All around me, I’ve seen students nudged out of their comfort zones, pulled in new directions and pushed toward bigger ambitions right when they started to feel comfortable. Along the way, students have chosen to struggle together rather than alone, recognizing their shared failures and setbacks and leveraging them to pivot to better things. Together, students here need to satisfy that itch for something more. I don’t know if my chaotic thoughts will ever understand that mysteriously ordered way of thinking, but I know that College Hill and the people here have given me a place to start.

ADVERTISEMENT


Powered by SNworks Solutions by The State News
All Content © 2024 The Brown Daily Herald, Inc.