Go on any forum for CS majors and you’ll find endless questions asking, inquiring, begging, pleading to know if CS is for them. This is not a surprise. CS is a subject full of challenging courses, confusing concepts and a crapton of imposter syndrome. It’s also a subject that most students are unlikely to have encountered in high school. With all of these challenges, how is one to know if they are destined to be a CS major? Easy:
Do You Like It?
It’s a deceptively hard question. Part of the reason it’s so hard is that it’s easy to confuse with other questions. Such as:
- Am I good at it?
- Do I have experience with it?
- Do I get good grades?
- Is it easy to me?
- Do I like math/physics/design/etc?
- Are other people trying to get me to like it?
- Am I trying to like it?
There are many forces that push students to study a subject, none of which are whether they like it. In high school you really have no choice; you have to “like” all of your subjects to some extent to get good grades. Likewise students feel pressure to study a financially rewarding subject. Others may have pressure from family, peers or simply society as a whole.
There’s also the trouble of self actualization. Plenty of young adults have (sadly) never been asked for their true opinion. Figuring out what you like is a fairly fundamental, opinionated question. It’s not easy.
Before we discuss knowing if you like CS, let’s go over the other, incorrect questions.
Am I Good At It?/Do I Have Experience With It?/Do I Get Good Grades?
People love to think about their current abilities. It’s an understandable habit: you want to compare yourself to your peers. If you’re better than them in a certain area, clearly you should pursue it in earnest.
I don’t agree. This is what I call a position versus velocity problem: it doesn’t matter where you are, it matters how fast you’re moving forward. If you start a CS degree with absolutely zero knowledge, but you put in time and energy towards learning CS, you’ll do significantly better than someone who started out with a great foundation but stagnated in their practice.
This happens all the time in sports. Bob beats Alex in a match, and from then on Bob has in his mind that he’s better than Alex. His friends talk about how Alex is so good, so fast, but Bob brushes it off saying “ah whatever, I beat Alex.” But come rematch time two months later, Bob might be surprised to see himself losing to Alex. Turns out, if Alex is spending every day training and conditioning, it doesn’t really matter that he lost to Bob two months ago. Alex is moving faster1.
How do you put in time and energy? For some people they can do this almost at will. Doesn’t matter if they like or dislike the topic, they can put in the work and get better. I’m not one of those people. I need to like what I’m doing. I don’t believe I’m uncommon in that regard. Hence the actual question: Do you like it?
Is It Easy to Me?
Easiness can be a sign that you like CS. We do tend to like the things we find easy. But we’re getting things reversed: if a person likes a subject, then they’ll work at it more, which means they’ll find it easy. Just because you find it easy doesn’t mean you like it.
Easiness is again a position based judgement. You currently find your work easy. As you progress and go up the levels in CS, I guarantee that you will find some area that is not easy. Everybody struggles with something. I’ve struggled with understanding client versus server code, with typechecking, with figuring out goddamn OAuth. If you’re doing CS because it’s easy, you may run into trouble when it stops being easy.
Do I Like Math/Physics/Design?
Another common fallacy. Students believe that because they like a subject close to CS, they must like CS. And that may be true! I know plenty of CS and math majors. But it’s not a certainty. If you like math/physics/design/whatever, then go major in math/physics/design/whatever.
It’ll be a lot easier to get good at that subject if you like it and people who are good at their subject tend to be more employable.
Of course this isn’t always true. If you happen to like a subject that offers less financially rewarding career options, you’re in a tougher spot. It’s not really my place to give advice either way. I can’t tell you to study a subject that may put you and your family into an unadvisable financial situation, nor can I tell you to study a subject that you may not like and therefore will end up begrugingly studying. My only advice is that there are multiple subjects that offer financially rewarding careers, not just computer science. If you truly don’t like CS, consider these other subjects.
Are Other People Trying To Get Me To Like It?
This is a partial extension of the previous paragraph. Whether it’s your family, your friends, whoever, people are always trying to get in your business and tell you what to do with your life. Unfortunately some of these people are easier to ignore than others. If your parents are paying for your education, you might have to listen to them.
That being said, this is ultimately your life. You’re the one putting in the hours and weeks and years of your life into this subject. If you don’t like it, then this work will be significantly harder. I’ve met far too many people who were clearly not studying CS by their own choices. They end up with weaker skills and fewer career options. Is it possible to overcome this and learn to love CS? Probably. But it’s definitely not easy.
Am I Trying To Like It?
This is another variation on trying to like CS. It’s arguably the hardest to figure out. Some signs that you may be trying to like CS is if you’re going through each course and hoping to find the area that makes the subject “click”…and you’re a junior or senior. Or you endlessly procrastinate your work. Or you keep blaming the teachers, the class, the textbook, etc.
This can be a really hard question to ask yourself, especially if you’ve put a lot of time and energy into learning CS. But don’t fall into the sunk cost fallacy. At a certain point you’ll need to accept that CS might not be your field.
Do You Like It…
With that over, let’s go over the right question and its follow ups. These are all variants on “do you like it?”, since really, that’s the only question.
…When It’s Hard
It’s easy to like programming when it’s easy. It’s easy to like anything when it’s easy. The real question is whether you like it when it’s hard. Do you like programming when you’re debugging a nasty issue? Do you like it when you’re confused and need to do your research? Do you like it when your code needs to be fixed?
Of course the answer isn’t always yes. Nobody’s happy 100% of the time while programming. But you should aim to be at least somewhat fine while going through these challenges.
This isn’t just some fetishization of suffering by the way. If you enjoy the challenging parts of programming, you’ll be more likely to willingly seek them out. Which means you’ll get better faster. If you stick to the easy bits, you might still improve, but it’ll be at a slower rate. Again, position versus velocity.
…When The Situation Isn’t Ideal
One thing I noticed about programming versus other subjects was how willing I was to do it even in inconvenient situations. Even if I was tired, hungry, whatever, I’d still get sucked up into programming.
This isn’t always true. Sometimes I’m too damn tired or hungry to write code. But it’s a good sign if you do occasionally get so wrapped up in programming that you forget to eat. Or do your homework. Or change out of your towel.
…When The Material Is “Boring”
One of the surprising things I’ve discovered in CS is that I like certain topics that I recognize sound absolutely boring. Memory allocators? Not a great dinner party topic, but totally awesome! Dependent types? Who cares? Garbage collection? Bo-ring.
Now this isn’t always the case. There’s definitely CS areas that put me to sleep. But if you can get excited about the less sexy stuff, i.e. not the world-changing OMG AI/ML/NLP whatever, then that’s a good sign.
Plus Or Minus
If you’re reading this article and thinking “oh no, I don’t like programming that much”, stop. Breathe. Let the impostor syndrome fade. Then reanalyze your situation. You don’t have to like programming 100% of the time. When you’re starting out, programming is a completely new world to you. It should be confusing and challenging. Sometimes it takes a little time for the small bits and bytes of joy to spark into liking or loving programming.
And it could just be that you haven’t learned programming in the right time in your life. I tried to learn programming several times before it stuck. Sometimes I catch myself and am still amazed that I actually know this stuff.
This post’s purpose isn’t to discourage people from learning to code. It’s to give a goalpost for those of you who are on the fence about CS. If you read this post and everything in the incorrect section resonates, while everything in the correct section doesn’t, then perhaps you should reevaluate your CS career. Or don’t! Prove me wrong. Just remember, it’s up to you to decide how much time you want to spend doing things you don’t like.
I also hope that this post is freeing for some—for those of you who got B’s and C’s in intro to programming but couldn’t stop playing with Python. Or for those of you who had to repeat data structures but started teaching themselves JS. People pay far too much attention to arbitrary goalposts like grades. Your grades will matter for your 4 years of college. Your enjoyment will matter for your entire career.
If you want an example, watch the documentary Rocky 2 ↩