Not sure whether or not I should pursue a CS major?

I’m going to be a senior in HS in the fall, and I’ve been thinking about applying as a CS major, but I’m not sure if it’s the right for me. I’ve joined a couple of CS related clubs while in HS, one of which has to do with web development, but I find myself struggling to understand the concepts a lot (I’m coding a website with a few other people in Flask). I also didn’t do too well in my APCS course last semester and I wound up getting a 4 on the APCS exam, even though most people in my school end up getting 5s.

My school has a pretty robust CS program for a HS so I’ll be taking more CS electives this upcoming school year, but I’m worried that CS isn’t the right major for me based on me struggling through APCS and with web development. I don’t know if maybe web dev just isn’t my thing, but so many of my ECs have been based on CS (and I have enjoyed them for the most part) so I feel like I should major it. I do enjoy programming and learning about the theory behind it, but it doesn’t come naturally to me like it does to other people. I’m okay at math (but not phenomenal at all), and I also suck at physics, and I know that math and physics require similar types of thinking to CS, so I’m wondering if all that combined with my not so good grades is an indication that I’m not a good fit as a CS major.

(I know that most colleges will allow me to change my major once I’m actually in, but I’m wondering if I should just quit before I waste too much time/money?)

What academically are your favorite subjects? What subjects do you do best in?

If you’re struggling in a robust CS program, I think your doubts have some merit. As far as web development goes, Flask is one of the simpler frameworks out there and I don’t see it getting easier if you’re struggling with it in a setting where you have classroom support. That said, maybe web development just doesn’t really click, so I think it’s still a good idea to keep trying some other areas of CS. If those don’t work though, I would look elsewhere for a major.

An understanding of CS will be a good thing even if you don’t major in it. You can also minor in CS and major in something else, giving you a good technical combo.

@DadTwoGirls My favorite subjects this year were English, APUSH, and APCS. My highest grades were in English and APUSH. I’ve always been an english person, but I think the only reason why I liked and did so well in APUSH this year was because of my teacher. I wouldn’t go out of my way to learn more history on my own time though, but I would and have done stuff with english and CS outside of the classroom.

@PengsPhils I’ve only done Flask for a school club, but the way it worked was that the president of the club basically gave everyone a link to a tutorial and said to go through it and that was that. I will, however, be learning Flask this upcoming school year in a classroom setting so maybe my experience will be different then. I am exploring other areas in CS this summer though and with other frameworks as well (I really want to learn more about data science and AI). Do you think it’s possible to still do well as a CS major with a lot of hard work if you’re passionate about the subject, even if you’re not the type that picks things up super easily?

Ah, yeah the classroom setting can make a big difference for some, so certainly continue with that.

To some extent, yes. However, you’re going to have to keep learning stuff through a whole career in CS given how fast tech moves. If it takes too much time/effort to keep up, I think it can approach a point where that constant struggle and effort isn’t worth it.

Take at least one CS course while you are actually in college, that is when you would know for sure. Your high school experience does not necessarily give a good prediction as to your potential to succeed. Most colleges that offer a CS program tend to have at least one course which does not assume prior programming experience. If you do have programming experience, then an advisor will probably be able to help you decide whether it would be appropriate for you to start at the next level course.

Honestly, I hated coding all the way through college and ended up becoming a software engineer. Coding wasn’t a huge part of my degree – mathematics – but it was certainly used in some cases.

I don’t even do math anymore unless you count adding and subtracting stuff in columns in a spreadsheet sometimes.

The way that I learned to program in SQL and C# is through working. Academically, I learned C, C++, and Python. Python was the worst subject I’ve ever learned in school, although I knew it backwards and forwards. It was just taught really bad. C is just something I saw over and over in multiple courses. So basically, I think you should take a class or two in it to get a feeling for it.

Coding is something I do five times a week. It requires taking a lot of business demands and turning that into a shippable product that realizes as close as possible their vision and gets what they need to have done. There will be deadlines, there will be design meetings, there will be a lot of logical deductions that you’ll need to make quickly to fix problems that arise in production, and you’ll need to keep up to date with your skills if you want to remain valuable. I never saw this as a career path while I was doing math in college, but here I am. You gotta be a problem solver, hands down. There’s no magic solution (usually) that you can just always copy from Google to finish an assignment but sometimes you can (if it passes code review). There’s no closed book tests. You can use whatever resources you need to basically get the job done. It’s not “cheating” to ask for a more experienced programmer to help. You gotta be open to learning and asking questions.

It’s pretty cool to see something you made being used by thousands of people.

People have been yelling about outsourcing for years (as early as 2000). This isn’t the place to get into it, but there’s a reason it hasn’t happened already. It’s a single part of a much larger industry that is still growing - outsourcing has its limitations, and quite a few of them when you really get into the specifics. If anything, someone without a CS major will struggle less if outsourcing ever becomes that large of a problem compared to those who simply know software engineering.

If outsourcing means offshoring, I was a lot more worried about that 15 years ago than I am now. Companies have found that it only works in certain situations, and most of what can be offshored is already gone. These days, rather than moving projects or operations to another country to save money, US tech companies move them to cheaper parts of the US.

I would view a large increase in the number of cheap H-1B visa workers as a bigger threat to US tech workers.