Search “selecting your college major,” and you’ll find articles about optimizing return on investment. The advice in these articles is to pick a major that justifies emptying out 529 plans and taking out loans to cover tuition. And yes, you’ll also find advice from those squishy right-brainers about following your dream. But let’s face it: You’re probably being encouraged by Mom and Dad to pick a major that’s practical. Right?
Now, when you calculate ROI, computer science will show up as a darn good choice for major – regardless of who you are, or what your strengths and weaknesses might be. Every business needs tech nerds for software development, cyber security, big data analytics, and even artificial intelligence. It therefore makes sense to major in computer science so that your ninety-K initial salary at Uber can be used to pay down college debt. Still with me?
This would seem like sound career logic, except for one problem: Computer science as a major is not for everyone. And as a computer science professor for the past thirty years, I’ve obviously seen many young people who’ve made the correct choice. But I’ve also seen many young people who have belonged elsewhere. And regardless of their starting salary at Microsoft, if they’re in the wrong field, then they’re going to be miserable. Capisce?
It’s hard to say what specifically characterizes one youngster as being well-suited to computer science, where another might not be. But there are some clear traits that do emerge and that can be enumerated. And by the way, these traits are NOT consistent with the stereotypes promoted in media. Computer scientists are neither withdrawn, nor socially inept. And they are not more comfortable with machines than people. This is all nonsense.
I’ve therefore created three questions you should answer honestly before selecting computer science as your major. If all three are answered yes, then I think you’re going to love computer science. If you answer otherwise, then just understand that your tendencies might be different from what I’ve observed in successful majors. This can mean nothing, of course – so be warned: This is all pretty subjective. Nevertheless, here are my three questions:
Question 1: Do I love puzzles? The essence of computer science involves using human ingenuity to address technical challenges. It involves solving problems that will appear initially to be either difficult or even intractable. Successful computer science students will therefore are almost always be attracted to puzzles in the same way that law students might be attracted to politics. It’s not a perfect correlation, but it’s a strong one.
So, ask yourself this: Does a difficult puzzle – and I don’t mean the ones you assemble from a thousand pieces into a picture of Eiffel Tower, but rather the mathematical, logical, or quizzical puzzles of the sort your physics teacher might pose during a lecture – does such a puzzle provide a welcome respite for your brain? Are these types of puzzles pure pleasure for you? If the answer is yes, then this is a telling sign that you’ll enjoy computer science.
Here’s one: A man has two cubes on his desk. Every day, he arranges both cubes so that the front faces show the current day of the month. What numbers are on the faces of the cubes to allow this? This is an easy puzzle that you should be able to solve without having to use Google. If you delight in such an exercise, then you’ll have fun as a computer science major. If this seems dumb and annoying, then recognize this in yourself.
Question 2: Do I correct little inaccuracies? My mother used to make a funny little observation whenever my brother and sister and I would lose something when we were kids: “Well, kids,” she would say, “it must be somewhere.” And not knowing that I’d eventually become a computer scientist someday, I would always respond to this tautology with a computer scientist-type answer. I’d say, “Uh, Mom. Everything is always somewhere.”
It is precisely this annoying habit in computer scientists that creates the stereotype of us being anti-social weirdos. When my mother stated her tautology, it was inconceivable to me that such a statement produced any useful insight or would bring us closer to the goal of finding what was lost. And this correcting trait extends to other day-to-day inaccuracies in speech, many of which you might see in yourself every day.
Computer scientists must resist the urge to point out these little errors in statements, logical inconsistencies in speech, and other sloppiness of behavior, simply because they stare us so obviously in the face. If this is you – and everyone in your family will agree if this is so, then I suspect that you will enjoy being around others who are afflicted with this minor personal baggage. You’ll find a home in your new computer science department.
Question 3: Is math my easiest subject? I’m all for STEM, and if you see me on a podium somewhere, you’ll see me talk about the importance of making science, technology, and math more accessible to students everywhere. We definitely need to encourage more youngsters to take these subjects, and to develop better skills to address technology challenges in the modern era. So there – I am on record as saying this.
Now, I’ll be more harsh: Math is hard, and not everyone is going to get it. And if you are going to succeed in computer science, then math should be your easiest subject in school. If it is not, then all the STEM videos and games and programs to make math more accessible will not change this basic truth. If math comes easy, then you’re well-suited to computer science. If math comes hard, then you are not. You can compensate, but it will be tough.
Recognize that in your first programming lecture as a freshman, the examples will assume that you know the Fibonacci sequence, and that you understand the difference between a function and relation, and that you would never mix up a set with a sequence. These should be things you take for granted – and yes, you can learn this stuff. But if you want to succeed in computer science, then math should be your easiest subject. Period.
I must now address your inevitable push-back. The most common disagreement I hear is that music majors, and artists, and poets often make great computer scientists. This is 100% true, but when you ask them to describe themselves, they tell you that they always loved puzzles, and they like math, and that correcting inaccuracies in speech is a lifetime affliction. So, yes – being an artist or musician certainly does not preclude being a great computer scientist.
A second disagreement is that people can evolve as they grow, and as they are exposed to new ideas and environments. This is a fair point. For example, if your math teacher in high school was pure crap, then you might think you are bad a math, when in reality, you are really quite capable. You just might not know it yet. And, yes, I can admit that some young people might learn to enjoy puzzles only after their first two years at MIT (but I doubt it.)
Finally, a major disagreement with my points is that predicting one’s major based on three simple questions is an unfair tool – one that could scare off a perfectly capable future computer scientist who just happens to hate puzzles, ignores inaccuracies in speech, and dislikes math. All I can say is that such a person is in the minority in most computer science departments, and while that person might be 100% successful, they will be unusual.
Look, our nation does a poor job training future computer scientists, unlike China and India, which do better jobs encouraging their most well-suited youngsters to this discipline as a career area. I hope that in the coming years, more young people who have the proper traits and interests will select computer science as a major for the right reasons, rather than to optimize the ROI of their tuition investment.
And as always, let me know what you (and any budding computer science majors in your family) think of all this – and please send me your answers to the cube puzzle!