n Tuesday night, I laughed for 10 minutes after seeing that my program for the Computer Science 61B project passed all 16 unit tests. But last night, I instead found myself crying for an hour after realizing that my program only passed three of the 10 originally hidden, more complex tests that were just released online. The project is due tonight at 11:59 p.m.
It is 10:40 a.m. now. I have two options. I can either tense up and spend another 10 hours on the project to fix all those vicious, hidden bugs, or I can spend one or two hours on it and, if nothing works out, accept the fact that I got nine out of 16 on Professor Hilfinger’s first project. In other words, I can either insist on taking the course for a grade or consider changing it to pass/no pass.
Considering the situation in coding terms, what is my “if”condition for continuing to struggle, and what is my “else” condition for letting go, in this case?
I’m not a computer science major — yet. I’m taking CS 61B because I want to open my mind to a new language of the modern world. I’m taking CS 61B for a grade because, after getting A in CS 70, I became confident that if students majoring in CS could do it well, I could do it well too. Perhaps I would even fall in love with programming and graduate with an additional major in CS — so I thought.
But unfortunately, this hasn’t been the case. Since taking this course, I often find myself spending the whole night in my room, staring at my laptop — at those colorful and intimidating stacks of coding symbols on a black background. One time, I got stuck for hours on one question in a project and texted a friend for help — only to find out that he finished the project in one day. After successive nights of coding and debugging, I became lost in a fury of self-doubt, comparing myself to the best programming students and wondering why I couldn’t do what they could.
Is it because I don’t know the secret tricks? Is it because I don’t have their talents? Or is it because I’m just not as smart?
I now realize that the answer is none of the above. The difference between me and them lies in our motivations. In lecture, Professor Hilfinger said the following words: “You should always feel an inner desire to fix all the bugs.” That is something I have never felt toward coding. My only motivation is the external pressure exerted on me by grades and others’ perceptions of me. After all the vanity I gained from letting people know that I got an A in CS 70, I was reluctant to risk altering the impression my friends had of me as “a smart person.”
After successive nights of coding and debugging, I became lost in a fury of self-doubt, comparing myself to the best programming students and wondering why I couldn’t do what they could.
But the truth is, unlike inner drive, external pressures can rarely provide enduring incentive and motivation. For those who truly like CS, coding provides lasting satisfaction and only temporary frustration. These individuals are always challenging themselves with higher-level concepts and personal projects. They always look forward to the next CS project and think of it as an opportunity to improve.
On the other hand, for CS students like me — those who don’t really like CS — coding leads to lasting self-doubt and only temporary satisfaction. I often feel a high level of anxiety and frustration after hours of debugging — work that may not even yield any useful results. I am scared to look at the next project that is released. I constantly compare myself to other CS students. I become skeptical and critical of myself.
More importantly, for all the time I spent coding, I gave up more than I realized. I am passionate about writing and storytelling. I also enjoy painting, photography and filmmaking — all of which serve as important artistic platforms for self-expression. After committing myself to these coding assignments, however, I can barely find enough time to pursue my own passions. The last time I updated my blogs was a month ago, and I had to force myself to be satisfied with an unfinished painting for my art class project.
At UC Berkeley, career development is undeniably skewed toward interests in technology or business. The keywords “machine learning,” “blockchain,” “AI,” “startups” and “Silicon Valley” seem to reverberate and echo across campus. Some of the most popular Facebook events for UC Berkeley students are the ones that advertise career fairs for jobs in the tech industry, and EECS majors are commonly considered the “smartest” students. Everyone raises their eyebrows upon hearing that someone has received a job offer from a major tech company — Google, Facebook, Amazon, Uber.
And many of my friends show off by telling me how they have avoided humanities classes and elected to take four or five technical courses in one semester. Still others have confided to me that they only picked up coding in college because they are convinced it will help them find a stable job and make money. Similar attention and emphasis is rarely given to non-STEM fields of study.
I myself am not immune to the influences of tech culture. To be honest, one of the main reasons I decided to take CS courses and declare a cognitive science major is that I would feel ashamed and left out if I did not immerse myself in the innovative and rapidly advancing world of the tech industry.
But what most of us don’t realize is that there are many big, important questions that the tech world can never answer. Yes, it is true that science can give us empirical facts and fascinating theories, but it is the arts and humanities that give moral, emotional and spiritual meaning to the data and applications that science provides. Without arts and humanities, what does science say, if anything, about us as human beings, our relationships with ourselves and each other, what we love and hate and dream?
When Steve Jobs first introduced the iPad in 2010, he said, “It’s in Apple’s DNA that technology alone is not enough. It’s technology married with liberal arts, married with the humanities, that yields the results that make our hearts sing.”
Without arts and humanities, what does science say, if anything, about us as human beings, our relationships with ourselves and each other, what we love and hate and dream?
This is an era in which the STEM fields seem to be overhyped, while arts and humanities are largely underappreciated. But instead of following the big tech trend with blind eagerness, I decided it was time to sober up and listen to the voice reverberating inside myself:
“Don’t struggle for what you don’t like. Fight for what you love.”
After hours of deliberation, I finally finished writing my “if” and “else” conditions for continuing to take the CS course for a grade or considering pass/no pass. After executing this program through the terminal inside my brain, I decided to consider changing it to pass/no pass — to not add a CS major just for the sake of following in others’ footsteps. I decided to act upon my own inner drive and ignore the influence of external pressure.
But that doesn’t mean I gave up. I will still put effort into all projects and exams. I will still try my best to learn as much as I can from this course. From now on, however, I will quit the Intellij programming software when I feel overwhelmed. I will stop debugging and go to bed when it is time to. I will always give priority to what I truly have passion for. I will write more. I will paint more. I will explore more. I will hang out with my friends more.
I learned to let go in order to gain. I will no longer struggle for recognition from others. Instead, I will fight with sweat and tears for things that I truly enjoy.
To be honest, this “if-else” program is probably the last program that I am going to spend so many hours pondering and writing. But it is also the best program that I have ever written.