Is computer science right for me?

Main Question or Discussion Point

Hey everyone, I'm finishing up my senior year in high school, so I'm going through the common problem of trying to figure out what I want to do with the rest of my life. I've been accepted to RPI as a computer science major, and money isn't a huge issue nor do I care about making \$90k/year at graduation. I'm mostly concerned about finding a job I'm happiest with.

I say happiest, not happy, because no matter what I know I'm not going to like working. However, I'm good with math and logic, and I do have programming experience. I enjoy solving math problems and programming, I just prefer doing them on my own terms. I can deal with it, though. One of my internal debates is deciding if I want to just program wherever I find a job, doing nothing really interesting and really just enjoying the programming aspect of my job - not WHAT I'm programming, or if I want to go into research (I'm really interested in AI and robotics).

A big concern I have is reading a lot online about how common losing jobs to new graduates who will work for less or outsourcing are. Are these issues true?

Is it possible/easy to be able to work from home or on one's own schedule working as a programmer/software engineer?

I'm sure I'll think of more questions, but if anybody can answer these for me and just give me some general info I'd really appreciate it.

Related STEM Career Guidance News on Phys.org
I'm really interested in AI and robotics
Wanna program for me? I have such a hard time recruiting programmers for my various robotics projects 'cause they all get disillusioned by the time they take CS101.

Seriously though, there are jobs for this kind of thing, though you may need a phd. And, depending on the school you go to, you may need to make friends with the people in ME or EE. Robotics programs are flexible that way.

A big concern I have is reading a lot online about how common losing jobs to new graduates who will work for less or outsourcing are. Are these issues true?
Yes and no. A really good new grad will usually find a job, there are jobs in the field that won't/can't be outsourced, and a lot of (smaller) companies are slowing down their outsourcing 'cause they've found it doesn't work. Don't go into the field expecting a job, but don't get discouraged by the lack of them.

Is it possible/easy to be able to work from home or on one's own schedule working as a programmer/software engineer?
My mom does 3 days a week, but her company sets her schedule. It varies a ton by company and specific job responsibilities.

Last edited:
Yes and no. A really good new grad will usually find a job, but there are jobs in the field that won't/can't be outsourced and a lot of (smaller) companies are slowing down their outsourcing 'cause they've found it doesn't work. Don't go into the field expecting a job, but don't get discouraged by the lack of them.
The question of outsourcing is on my mind too. Surprisingly, none of my computer science undergrad professors like to discuss it. Yes, I'm in love with the subject, but employment prospects matter. Here is my skill set: excellent Java and OO, C/C++, SQL, VBA, R. The real question is: who needs it? Who will recognize my potential? Internet is flooded with jobs requiring astronomical years of experience. I really wonder how (and if) newly minted computer science majors (undergraduate or graduate) find their niche in this economy.

Surprisingly, none of my computer science undergrad professors like to discuss it.
That's likely cause most of them either have no industry experience or have been out industry so long that they don't know it so well.

Here is my skill set: excellent Java and OO, C/C++, SQL, VBA, R. The real question is: who needs it? Who will recognize my potential?
I have a friend who just graduated and is working for a trading firm and he has similar skills. But, he was one of the best guys in school and it took him six months to find it. The market is tough right now, but patience and tenacity will probably help you as much as anything else. Also, if your stats background is strong (you mention R), have you looked at math/data analyst jobs?

I'm currently a computer science undergrad, and one thing that you need to know before going into computer science is that it entails more than just simple programming. You’ll need to learn algorithms, formal logic, data structures, and theory. Not saying this to scare you, but if you like it and can excel in the field, there is absolutely no worries in getting outsourced, just as in another other field.

Hey everyone, I'm finishing up my senior year in high school, so I'm going through the common problem of trying to figure out what I want to do with the rest of my life.
Don't spend too much time doing that. You are going to be spending the rest of your life trying to figure out what to do with the rest of your life. The job that I am now working on just didn't exist when I graduated high school, and there is a good chance that you will be doing something involving technologies that don't exist right now.

One mental experiment that you can try is to imagine someone living in 1930 trying to plan their life out to 1980, and then consider that the difference between 2010 and 2060 is likely to be more than between 1930 and 1980.

A big concern I have is reading a lot online about how common losing jobs to new graduates who will work for less or outsourcing are. Are these issues true?
Absolutely. That's why you need to study some basic economics and history to figure out what to do about it.

Is it possible/easy to be able to work from home or on one's own schedule working as a programmer/software engineer?
In 2010, people are starting to work from home, but what's interesting is how that impacts social dynamics. I think a better way of asking the questions is, "what influences the ability for people to work from home or their own schedule?" because if you understand this, then you are in a better position to deal with the situation in 2020 when things might be different than 2010.

My current situation is that I can work from home, but I try to avoid it as much as possible.

Here is my skill set: excellent Java and OO, C/C++, SQL, VBA, R. The real question is: who needs it? Who will recognize my potential? Internet is flooded with jobs requiring astronomical years of experience. I really wonder how (and if) newly minted computer science majors (undergraduate or graduate) find their niche in this economy.
There are two issues here. One is outsourcing and the other is the general lousy economy. Outsourcing I'm not too worried about because, what has been outsourced to China and India already has been outsourced. and people have learned some painful and expensive lessons that some things just can't be outsourced easily. The other issue is that people are finding that China and India are getting more expensive so they aren't quite as attractive as they once were.

The type of jobs that simply cannot be outsourced are what I call "emergency plumbing" jobs. There are some times when things break and you need to call a plumber to fix it, and this is hard when the plumber is in India.

The other issue is the bad economy, but fortunately, the economy seems to be improving. It's slow, but it's getting better. At this point it becomes useful to read about what people did when they were faced with a recession or a full scale depression.

I'm currently a computer science undergrad, and one thing that you need to know before going into computer science is that it entails more than just simple programming. You’ll need to learn algorithms, formal logic, data structures, and theory. Not saying this to scare you, but if you like it and can excel in the field, there is absolutely no worries in getting outsourced, just as in another other field.
That's not true. There is always a chance that technology or the world will change and what you are doing may become totally obsolete. This is one thing to remember is that it's not like it was in the past when you could just go to school and get a job. To survive in the modern global economy, you are going to be learning new things and always thinking ahead.

If it becomes obvious that you that your job is going to be obsolete, and you have a few years warning, this gives you the chance to learn something new and different.

That's not true. There is always a chance that technology or the world will change and what you are doing may become totally obsolete. This is one thing to remember is that it's not like it was in the past when you could just go to school and get a job. To survive in the modern global economy, you are going to be learning new things and always thinking ahead.

If it becomes obvious that you that your job is going to be obsolete, and you have a few years warning, this gives you the chance to learn something new and different.
So a degree really is just to prove that you're intelligent enough to get it and to get your foot in the door, then?

"Regardless of everything I've said above, be it right or wrong, you have one serious disadvantage. You're looking for a job at the worst possible time. For the last 10-12 years schools have been pumping out 'developers' who are just random people that signed up for CS because they thought they could get rich quick. Now you're coming into the job market, 15 years too late, with an education that was out of date before you graduated from highschool, during an economy were all the other mediocre but far more experienced 'developers' out there are looking for jobs as well."

From that /. post. This is what scares me, but to be honest, tinfoil hat stuff like this always scares me, I always feel like I'm getting in on everything too late :p

I feel like I don't have to worry about connections or anything, because of the school I'll be going to, but my brain is still in "assume the worst case" mode.

There are two issues here. One is outsourcing and the other is the general lousy economy. Outsourcing I'm not too worried about because, what has been outsourced to China and India already has been outsourced. and people have learned some painful and expensive lessons that some things just can't be outsourced easily. The other issue is that people are finding that China and India are getting more expensive so they aren't quite as attractive as they once were.

The type of jobs that simply cannot be outsourced are what I call "emergency plumbing" jobs. There are some times when things break and you need to call a plumber to fix it, and this is hard when the plumber is in India.

The other issue is the bad economy, but fortunately, the economy seems to be improving. It's slow, but it's getting better. At this point it becomes useful to read about what people did when they were faced with a recession or a full scale depression.

Quant,

Thanks for replying, I noticed you're very active throughout the forum. I believe the economy will rebound and outsourcing will be stemmed, like a bleeding. What I have a real problem with is adequate assessment of my skillset.

I'm an analyst: I work whole day with Access/SQL and Excel. I program on Java for the past 5 years, C/C++ for three years. This programming is not directly work related, although I can easily apply it in the work setting. VBA programming is something I've done quite a few times on the job: helps with data transformation and other neat tricks. I found R to be a very intuitive, easy-to-learn language. I'm certain with appropriate literature, I can pick up any imperative language in no time. C#, VB.NET, ASP - they all look somewhat similar to me. Sounds like I believe in myself. So what am I fretting about?

Let's suppose I interview at a hedge-fund for a programmer-analyst position. Here I am, with my SQL and VBA coding experience, knowledge of Access, MySQL, Excel, and even R. I assume anyone can put these buzzwords on the resume and interviewers will be eager to probe the strength of my expertise in the area critical to the enterprise. However, I lack any direct experience with hedge-funds, hence I have no idea what particulars will be looked for. No matter how much I read about quantitative finance, data structures and the like, it won't address lack of relevant real world experience with the programming.

Take C++: many learn it in school. I learned it on my own and coded solutions to numerical problems, RC4 stream xor encryptor, Monte Carlo simulations, 3d world using quaternion rotations, and many other things. Given a week, I'll adjust my C++ to meet finance industry needs, absorb the lingo, etc.

But how do I convey this to the interviewer? How do I make them think: "Gee, this guy has university education and works as analyst, hmmm... may be we should give him a chance!". I think my question can be generalized to fit the profile of an average computer science graduate.

This is my issue.

I feel like I don't have to worry about connections or anything, because of the school I'll be going to, but my brain is still in "assume the worst case" mode.
I went to this conference once where most of the people there said that part of the reason they went to grad school was 'cause the economy was bad when they graduated. I see lots of graduates enrolled in our masters program, guys who thought they'd never willingly take on more school. Basically, just keep in mind plan Bs in case the whole job thing falls through.

Let's suppose I interview at a hedge-fund for a programmer-analyst position. Here I am, with my SQL and VBA coding experience, knowledge of Access, MySQL, Excel, and even R.
There are a lot of different jobs in finance, but what there is a huge demand for is not people that can program *in* Excel, but people that can program Excel and MySQL. Financial firms have *huge* amounts of internal software, and they have internal equivalents of Access, MySQL, Excel, and R which need to be babysat. If someone gave you access to MySQL source code, could you add some new functionality to MySQL?

I assume anyone can put these buzzwords on the resume and interviewers will be eager to probe the strength of my expertise in the area critical to the enterprise.
There are some things that are easy to add to the resume. There are some things that are harder to add. For example, if you write on your resume that you worked at Microsoft and were part of the development team that added graphing functionality to Excel, that gets noticed, because it's not a series of buzzwords.

Take C++: many learn it in school. I learned it on my own and coded solutions to numerical problems, RC4 stream xor encryptor, Monte Carlo simulations, 3d world using quaternion rotations, and many other things. Given a week, I'll adjust my C++ to meet finance industry needs, absorb the lingo, etc.
It might help if you work on an open source project. Work on SWIG, Quantlib, postgresql, openoffice, numpy, scipy, boost, mesa get your code submitted to the code repository.

How do I make them think: "Gee, this guy has university education and works as analyst, hmmm... may be we should give him a chance!". I think my question can be generalized to fit the profile of an average computer science graduate.
You have to kiss lots of frogs to find a prince or princess.

There are very, very strong odds that if you send your resume to someone, that they'll immediately toss your resume in the trash. You want to minimize those odds so if you can decrease the chances that someone will toss your resume from 90% to 70% that's a big, big deal.

But ultimately, you'll find out that most people just ***won't*** give you a chance. But that doesn't matter. You don't need everyone to like you. You don't even need most people to like you. You just need one person to like you, and the more frogs you kiss they more likely it is you'll find that one person.

downwithsocks,

I'd consider doing math or physics and loading up on as many programming intensive courses as possible. It's been my experience that the better programmers are found in those disciplines (e.g., I programmed everyday last summer for 8 hrs doing math research and learned more than I would have taking every CS course available). Computer science programs generally need to design the curriculum under the assumption the students will not be programming much on their own time. Meaning you'll get to 3rd or 4th year and be working on projects aimed at people whose depth of programming experience is a 500 line program in Java. On the other hand, with math or physics, you could develop much more general skills and still have grad school in comp sci as an option (just take the few core CS courses, algorithms, discrete math, and something involving assembly language). Going the opposite (comp sci -> math/physics) is generally much harder.

Slashdot has a post on landing entry level jobs that has a few interesting/useful nuggets buried in.
lol, slashdot is for geeks!

Computer science programs generally need to design the curriculum under the assumption the students will not be programming much on their own time. Meaning you'll get to 3rd or 4th year and be working on projects aimed at people whose depth of programming experience is a 500 line program in Java.
If this is the case, you or your department is doing it wrong. I know at my school it was certainly the case that the CS majors programmed on their own time, were expected to do this, and were the best at it. The CS majors were the ones designing raytracing programs for fun and getting offers from companies to buy their Facebook apps etc.

Don't underestimate what you can learn in CS either. Someone programming Fortran in an engineering course or using Matlab for physics won't be designing sorting algorithms for file systems and databases, or work on practical encryption for secure systems, or be optimizing filtering code for high speed routers, etc. There is a lot more to CS than learning programming languages.

If this is the case, you or your department is doing it wrong. I know at my school it was certainly the case that the CS majors programmed on their own time, were expected to do this, and were the best at it. The CS majors were the ones designing raytracing programs for fun and getting offers from companies to buy their Facebook apps etc.

Don't underestimate what you can learn in CS either. Someone programming Fortran in an engineering course or using Matlab for physics won't be designing sorting algorithms for file systems and databases, or work on practical encryption for secure systems, or be optimizing filtering code for high speed routers, etc. There is a lot more to CS than learning programming languages.
It's not hard to believe there's schools counter to what I said. But, in general, the problem with computer science is the difference between the top of the class and the bottom is greater than in any other subject. You just don't have kids playing around with biology or french literature in their parent's basement since they were with 11. You do with computers. But then there are way more morons who want to do comp sci because they love "youtube", "social media", "facebook", and all that other garbage. The departments know this, and so they cater to this by pandering with courses on things like "web programming", using Java as the default language instead, and taking out all the math (abstract algebra used to be a required course at my school for comp sci - if they tried reinstating that there would be a rebellion).

Of course, similar pressures exist in physics and math. And to some extent those departments will bend to them, only it's more difficult due to the high objectivity of those subjects. (Then you've got entire departments where the courses are nothing but nonsense, yet they exist because people are welling to shell out  for the piece of paper.)

I'm sure there are places like that, but it's unfortunate. Where I went to school, none of those kids became CS majors. They didn't make it past calculus, nevermind compiler theory or analysis of algorithms - an econ BA was usually more their style.

I guess the moral is to look at the department where you are applying. I can certainly see how there might be a wider range of quality in CS education compared to say, physics. It's also up to the student to take those extra courses and to stand out, even if it isn't required.

lol, slashdot is for geeks!
And actually, it's news for nerds, thank you very much, and only stuff that matters.

And actually, it's news for nerds, thank you very much, and only stuff that matters.
haha, yeah, my poor attempt at ironic humor (make fun of geeks on a physics forum).

Over a twenty year period, I moved computing jobs five times, each time competing with new graduates. I generally got the job, even if they had to pay me a lot more than a new graduate. Experience counts for a lot!

Hi downwithsocks,

I am currently a second year student studying Computer Engineering here in Sydney, Australia. It is pretty similar to Computer Science, but with more Math and Electrical aspects involved. As to computer science is concerned, the IT industry is booming worldwide, so jobs won't be a major issue (I might be wrong here, I don't know about where you are coming from).

If you want a challenge, go for the engineering aspect of the course, since you already enjoy Math. I think for comp science, the only Math you'll ever do is during first year.

The type of jobs that simply cannot be outsourced are what I call "emergency plumbing" jobs. There are some times when things break and you need to call a plumber to fix it, and this is hard when the plumber is in India.
Yes and yes.

I just got hired in at a local hospital as a network specialist (while in the middle of my program no less). I spend the vast amount of my day troubleshooting VPN connections and internet settings for local clinics. This happens more often than I'd like because a lot of clinics have no technical staff to rely on themselves.

Because there's such a wide and varied amounts of technology out there, it's 99% of the time going to be easier to troubleshoot when you can visit a computer in person (especially when you consider the technical skill level of most users).

Last edited: