Advice on Computer Science as a Career

Dude, it’s the dope, and it’s not General Questions. Tangents are our lives. :smiley:

Preach it!

I got a B.S. in computer science in college. Then I went on to study math in grad school and that’s what I’m doing now. I never worked in computer science other than during my college years. With that said…

A degree in computer science, by itself, says that you’re ready to be a code monkey. To set yourself up for an actual career with good chances at advancement, you need to be prepared for more specialized work. You could choose robotics, networks, security, or something else. Your program may not offer very many courses in these specialties, but look for opportunities from internships or anything else you can get.

After working for several decades at a big three-letter computer company, I was laid off and took a job teaching computer programming at a community college. One of the challenges we currently are facing is working towards an articulation agreement with a nearby state college. As stated earlier, we could go two ways - as a IS focus from their college of business, requiring lots of project management and accounting and business focus, OR as a computer engineering focus with a focus on operating systems and algorithms. Regardless, they require a course in calculus and a follow-up course in discrete mathematics. Of those two, discrete math are much more computer related and can be really fun to learn.

Our graduates, with AS or AAS degrees, face a similar dilemma as the OP, but the biggest things I’ve heard from recent graduates is their employers really looked at projects they did, either as coursework or by themselves. For example, Android smartphone development really gets employers interested. If you can look at some of Android’s tutorials and get excited about doing that, that might be a big indicator on how well you would do.

As far as BS or BA, they would both be acceptable at my previous company, although a BA would need to explain “why” in an interview. Once in the door, both would be equivalent except for the most esoteric scientific programs.

As a person with both a BS and an MS in CS… the above is not remotely true. You can easily make a senior position at a small company, or a mid-level at a large company, in under 5 years without the kind of specialization you’re talking about.

Would it help? Only if there’s a specific job you’re looking for that wants that. If you specialize in, say, Robotics, and all the jobs in the city you want to work in are in finance, then your specialization means squat.

Absolutely. I am a “mere” BS-holder, and my job title became “Senior Engineer” just as fast as my company’s byzantine HR rules would allow, three years, and my boss has me leading things on my team. And I’m only 24. Your passion and willingness to put in the time to better yourself is so much more important than the degree you hold as to make you wonder why companies require the things at all. (Perhaps because most companies’ hiring practices are shit at figuring out the former.)

If your brain is wired for it, programming is a wonderful job, with many opportunities. The job market may or may not be competitive, depending on your point of view. My company and many others in my area are downright starved for talent. Yet at the same time, I know a number of people who call themselves programmers who say they can’t find a job anywhere. The thing is, there are a lot of folks out there who stumbled their way through a computer science degree because somebody told them that it is a good career, but they aren’t really programmers. They have no passion for programming or for learning new technologies. These people struggle while those who’ve “got it” regularly have their choice of multiple job opportunities. And when I say “got it”, I’m not even talking about top talent - just those who meet a minimum level of passion for the craft of programming and are interesting in learning and persuing new technology and practices.

As far as which degree you should go for - I can tell you that we barely even look. It’s just too easy to get a computer science degree without being a real programmer. We look a lot more at experience. Do get your CS degree, because it does help, but don’t worry too much about the specifics of the degree or what school it came from - except for certain specific fields, most folks reading your resume won’t care.

My biggest advice to you is to get out there and start working - don’t wait until you’ve got your degree. Software development is a career of continuous learning, so if you’re not the type of person who can be motivated to go out and learn on your own, you’re barking up the wrong tree anyways. As soon as you have some skill, find someplace to apply it. Build an IPad app for the ITunes store. Create a website. Better yet, contribute to an open source project or donate some time at a Give Camp, so you can learn current team development practices. That will let you know if this is the type of career you want before investing a full four years of education, as well as give you a big leg up on your resume over others who are coming fresh out of college, since the folks hiring you will be more interested in experience over education anyways.

Oh, and one other thing…join some user groups. .Net user groups, Java user groups - whatever seems important in your area. They are great networking opportunities and a huge flag on your resume that says “I’m a real programmer who cares about building my skills.”

Studying Computer Science may involve some number work but in general writing software is not very math intensive. It is more important to be able to think clearly and logically.

I concur.

Computer Science is a great idea if you plan on working with large data sets. CS is all about theory, and you’ll find that outside of high-profile stuff in the valley, real-world application development intersects it at painfully few points.

If you want to be a good programmer, you’ve gotta put in the time writing software. Several talented authors have uttered something to the effect of: “Your first million words don’t count.”

I take umbrage with the idea that “the ability to think clearly and logically” is somehow not math. In fact, that’s pretty much all math is. Some people have this funny idea that being good at math means being able to add or multiply numbers well without making mistakes, ie, arithmetic. When you actually study mathematics, you quickly get to a point where you don’t work with numbers at all anymore. I remember a linear algebra professor who turned to us one day in frustration with our confusion and said, “are you all still under the impression that mathematics involves NUMBERS???” :smiley:

Programming, scripting, etc pretty much is all mathematics. If you disagree, you need to expand/revise your definition of math.

One thing to consider is that typically a career as a programmer or software engineer is a constant rat-race to stay relevant as you age; the prevailing attitude is that the young guys fresh out of school are the most technically current people, and that guys in their mid-30s and older aren’t as up to date on the latest stuff.

It’s easy if you’re not relentless about learning stuff (often on your own dime), to get pigeonholed into one language or one platform or something like that.

I realize that “There are no dangerous weapons; there are only dangerous men” applies even more in programming/IT than other fields (i.e. what makes an effective programmer isn’t the language, but the experience and mindset), but not all hiring managers or even other technology people realize this, and it’s something you’ll have to fight through your career.

It’s why I got out of programming and into the analysis and management side of things.

No. The ability to think logically and clearly is programming. Mathematics is pretty much all programming. But that’s ok, we understand you mathists are limited by your point of view.

I don’t think the B.A. vs B.S. degree is an issue. But I do think that some statistics classes would be very helpful, also some courses in machine learning. A lot of the “big data” stuff that is fashionable right now uses it.

Thanks to everyone that took the time out to offer their humble opinions on the computer science field. I went ahead and submitted my application for admission today. :smiley:

I did have one follow up question. I’ve read a lot about many computer programming jobs being outsourced from the United States. How big of a threat is outsourcing to the software development field? Thanks again!

Didn’t get that vibe at all. I took it as an objective comparison of the two- fewer math classes for more humanities- and was wondering which employers would prefer.

Or… what Kimmy_Gibbler said.

I don’t think whether or not you like math is any big hurdle. It’s very common for people who “don’t like math” to enjoy computer science and theoretical math. They’re completely, utterly different. If you can muddle through the calculus and be okay with probability, you’ll find that doing proofs is completely different. I’ve known high school “math” people that go “this isn’t math!”, have their brain go on tilt, and completely quit at abstract math. They’re not completely different skills, but they feel different enough that enjoyment of one is frequently different from enjoyment of the other.

Automata Theory and Algorithmic Analysis are pretty much strict theoretical math. We can argue about whether it’s “as theoretical” as abstract algebra or making up new exciting number systems, but it’s nowhere near what the average person would think of as “math”. Graphics straddles the line a bit more, but it’s largely a balance of theoretical math and linear algebra (as is its related field: computational geometry). Things like computer vision do use a lot of calculatory math – just implementing standard probability calculations and such is a large part of it, but it can open into more theoretical structures if you let it.

“AI” in general is probably one of the biggest balances. Pathfinding? Discrete math, that’s where you get your A*, Dijkstra’s algorithm, dealing with graphs and trees. But you also have your probability-heavy Bayes nets, support vector machines, etc.

Hey Jragon! You’re wrecking a good CS versus math fight with that kind of rational talk.

Re: the outsourcing question – It depends on the company. I don’t have any statistics on it but in my experience, certain large corporations are notorious for it. On the other hand, newer and more moderately sized companies will not see any benefit from significant outsourcing, unless they are running on a shoestring and think it will save them money (often it does not).

As far as the field in general, I think if you keep your skills current then you should not have to be overly concerned about it, unless you end up at one of the notorious outsourcers.

Regardless of whether or not companies are outsourcing, the market for software people continues to be really good. I just recently did a job search for the first time in 15 years, and I can honestly say there seems to be more jobs out there than even in the 90s when the huge boom was happening. I’m only one person, so therefore anecdotal evidence, but man… I had to stop sending out resumes because I was getting too many interview requests and I didn’t have time for them all. Took me 3 weeks from the day I sent out the first resume to 2 job offers, and I’m working remotely from the middle of nowhere.

If outsourcing is hurting the jobs, I sure can’t tell.

I’ve been in the software industry for the past 15 years or so. I manually test software and write software to test other software. It’s been interesting, to say the least.

As far as outsourcing, I’ve been a victim of it a couple times. It was rather funny. My last job got outsourced to a large Indian outsourcing company, but every single interview I got was because the company was pulling back on its outsourcing. I even interviewed with a different Indian company that was looking for American natives because their clients were requesting people that spoke English as a first language.

From what I’ve seen, the outsourcing market in India boomed over the last 10 years or so. So much so that the companies were having problems filling all the positions they were contracting for. The result was a lot of kids pulled right out of college and thrown into large enterprise software projects. The software that came out of this situation was cheap and functional. It worked, but tended to be slow, buggy and a nightmare to maintain.

The managers that hired the outsourcing companies realized they didn’t get to pick the quality or the experience level of the people that worked on their projects unless they were a huge client of the outsourcing company. For instance, if your company with 50 programers outsourced to an outsourcing company that also had Microsoft as a client, Microsoft would get their best programmers and your company had to cross its fingers and hope for the best.

I see the pros and the cons of outsourcing and I think it will even out eventually. I can see a company that has its own stable of programmers but has to outsource every so often to keep tight schedules.

Where I am now, we have less than 10 developers and our project load isn’t excessively heavy. There’s no need for us to outsource. However, we had a developer leave recently and we are having problems finding people qualified to fill the position. We may look into one of the companies for a developer or two temporarily. But that would be a local outsourcing, not international.