This is a response to/continuation of a story by Arthur Shi that really resonated with me, but after thinking it over a bit, I disagree with parts of his piece.
When I started studying computer science (CS), I’d wanted to be a middle school math teacher for most of my life, but was by no means a STEM person. I preferred the Humanities, but found parallels between writing a story and writing code. It’s also neat that, if you have an idea, you can build something (anything) that people will use. Even if you don't know how, you can learn.
I’ve met so many hardworking, passionate, creative, intelligent, and all-around amazing people, and have experienced educational opportunities like Twitter Early Bird Camp (shown in the picture below), Square Code Camp, various hackathons and conferences), professional roles (two-and-a-half internships and an externship), and service opportunities (organizing events, mentoring, speaking, teaching, etc) that I would not have gone through had I not been a computer science major.
Typical college CS curriculums offer both programming-heavy and also theoretical classes, teaching students how to:
- view things logically and critically (I found myself to be a better problem-solver after a few CS classes, with things like jigsaw puzzles or Sudoku)
- consider edge cases others may overlook (this carries over into the real world.)
You also learn how to
- find and consider minute details
- plan, outline, design, and build large-scale projects and solutions to problems (What classes should you include? How about their attributes? Which language is best in this case? etc)
- persist and persevere (it’s important to think logically and keep a cool head when code doesn’t work how it should at first.)
- explain yourself (this is important — explaining design decisions, efficiencies, algorithms, variable names, and more.)
as well as some math, some technical writing and explaining, and more. Because of this, I’m also happy with who I’ve become as a CS student.
However, yes, it hasn’t been all compliments, rainbows, sunshine, and daisies. College CS forces you, by nature, to:
- get by on little sleep. Let’s make it a competition to see how little sleep you get the night before an assignment is due!
- be overly anxious and stressed (Yes, this is normal for most college students, but moreso in CS.) The competition for the “best” internships and jobs can be cutthroat pitting students who started sometime in college with ones who started when they were 14, 12, or even 7.
balance classes with interview prep. Yes, you learn algorithms and data structures in classes, but to pass a technical interview, you must put in even more hours practicing questions, interviews, or reading our bible, Cracking the Coding Interview.
sacrifice social lives, hobbies, and more to stay in and work. Yes, no one has the time, you have to make the time, yada yada, but I would love to not feel guilty watching Netflix or working out or doing something unrelated to tech. I would love to not say no to seeing a show or a game with friends because I have more reading or projects to do.
make it your life. You eat, breathe, and sleep tech. You spend so much time with tech people, you forget it’s normal to talk about music, art, sports, and more.
And yet…there’s a reason.
When I was a freshman contemplating declaring a CS major, I heard my department head tell another student something along the lines of: “There’s a reason CS majors are in-demand and get paid 6-figure salaries. It’s not easy. It is one of the most, if not the most, work-intensive majors there are. It’s not like math where the better you get, the fewer hours you put in. In CS, the best programmers spend the most time on projects.”
That’s really stuck with me, sort of like my high school senior quote: “Of course it’s hard. It’s supposed to be hard. If it wasn’t hard, everyone would do it. The hard is what makes it great.”
There’s a reason why college CS is a climb. There’s so much to learn in so little time. And yes, the curriculum doesn’t necessarily teach skills that translate directly to industry, but it does teach you how to think. Languages and frameworks may change, but being able to solve problems with code and algorithms will not. The CS skills we learn here will stick with us longer than if we solely did hackathons or online classes.
Yes, it is difficult and you have to make sacrifices, but nothing worth having comes easy.