How should I finish my BS in Computer Science to improve income potential/stability?
April 9, 2007 9:27 AM   Subscribe

ComputerScienceCarreerFilter, CrystalBallFilter: I'm shortly going to transition from a Community college to a four-year university - Hopefully in pursuit of a BS degree in Computer Science. Which specializations are good for job security and income potential?

Background: I'm a 'Alternative' (39) student looking to start a good career - My math performance so far is B-range average, but I've done well with the CS related materials to date(Two classes at the CC, one at the four year I'm planning on attending). I think I could gain interest in a pretty wide range across the field, from what I've been exposed to (Online, reading through ACM abstracts(When I understand them!), etc ). The guidance counselors here are helpful but clueless, and the CS faculty seem to answer with hobby horse specializations (Geolocation technology? Really?). Should I just 'Punt' by keeping things generalized and narrowing in later?
posted by Orb2069 to Work & Money (14 answers total) 8 users marked this as a favorite
According to a recent store I read in the paper, companies are trying to get CS people as much as possible. It looks like the largest demand is in networking.
posted by drezdn at 9:38 AM on April 9, 2007

I might suggest sotware engineering, security, networking, information retreival, computational finance, or databases. You will probably do better financially with concrete skills that apply to business more than academic things like theory or algorithms (though those have their uses as well).

I would recommend following the general curriculum initially while taking electives that interest you. Specialize when you find something you like.
posted by procrastination at 9:42 AM on April 9, 2007 [1 favorite]

I agree with procrastination: You don't really need to worry about specializing right away, take your time and see what you enjoy. In fact, unless you're going to go into grad school you don't even need to worry about specializing.

If I were in your position, I would make sure to keep up with technology trends and learn specific popular technologies. Right now that would be things like Java, Hibernate, etc, etc. Just look on and see what things are required in a lot of job postings. It will be a little different four years from now, but make sure you learn Java, persistence frameworks, and web based stuff. AJAX will probably still be popular in 4 years.
posted by delmoi at 9:46 AM on April 9, 2007

I'd worry most about getting a depth of understanding about operating systems, algorithms, data structures, computational theory, the different programming paradigms, databases (and all the sticky locking issues), security issues, and software project lifecycle paradigms.

Do real programming; get involved in an open source project.

I predict concurrency and network security will be growth fields, but betting on specifics is a bad idea. Yeah, there will be jobs to be had in Java and C#; there will also be some jobs to be had in COBOL and FORTRAN.

Get real understanding and some real experience and the specifics will follow.
posted by Zed_Lopez at 10:01 AM on April 9, 2007

I'm in the midst of finishing up Masters CS right after completing Bachelors CS. I am also interviewing for positions, and was an alternative (36) student like yourself making a career change. Most of the positions I am seeing in my area are networking/systems engineering, database programming, or project-based software development (web-related mostly).

Zed is right that you just want to get the basics down. You will be able to apply them in any entry-level interview, and if you can show that you have clarity of thought, a firm grasp of the fundamentals, the ability to apply logic, and a willingness to learn new technologies, you will make a good impression.

The most helpful classes to me were the database theory classes, object-oriented programming and software development, and e-commerce/web programming. I also got a lot out of some artificial intelligence classes, as the projects gave me a lot of programming experience and required some creative thought.

Look for internships or volunteer opportunities to put some of your skills to use while you are still in school and before you actually start looking for work.
posted by Roger Dodger at 10:31 AM on April 9, 2007 [1 favorite]

To echo what is said above: get a good foundation, try to do real work somewhere (internship, open source project, help out in the department), keep up to date on trends (but don't slavish follow them because for everything that pans out (Java/C#), there are hundreds if not thousands of other things that died for whatever reason. You'll eventually find something that you really enjoy and then devout your energies there.

Be flexible and learn how to learn and master new things. With how fast technology changes, you are assured that the ability to take on new knowledge will be very important
posted by mmascolino at 10:36 AM on April 9, 2007

internships = networking = future job
posted by noloveforned at 10:52 AM on April 9, 2007

Income potential is more closely linked to the industry you decide to work in rather than the coursework you choose. If you have any interest in finance I'd suggest focusing on getting an internship in the financial services sector and seeing what you think. I graduated with a BS in CS about 4 years ago and am making significantly more doing IT for an investment bank than my friends who went to technology companies (Apple, MS, etc.)

In terms of technologies all the interesting work is in Java and C++. Get a software engineering course and a databases course under your belt and you'll be golden.
posted by rsk at 12:15 PM on April 9, 2007

I'll add a small vote for concentrating on software engineering process - if you have courses available which focus on Software Development Life Cycle (SDLC) and especially software testing they will help you stand way out when interviewing.

As noted above, technology areas important now may not be important in the same way down the line. Strong OO software design and development with good knowledge of modern testing methodologies are the assets I look for when hiring -- languages and frameworks only matter as much as their markets, but writing for testability and being able to prove your work are universally applicable.

With some stand-out exceptions (Apache, Mozilla, Mono, Ant, Junit, Nunit), open source projects are great for getting experience with a technology but aren't always great for learning how to participate in a professional software project. I'm just saying that an internship with deadlines and business cases may be as valuable or more valuable than contributing in an open-source project when you're starting out. YMMV, of course.
posted by abulafa at 12:40 PM on April 9, 2007

Simple economics -- higher wages are paid to people with unusual skills, but if you specialise strongly in something unusual you run the risk of not having the right skills if a change of field is forced on you by a change in technology or fashion or family circumstances.

Long-term job security is likely to come from first getting broad understanding the basics, and then concentrating on in-demand subjects that interest you -- if you find them interesting you will find it easier to put in the hours to gain mastery.

The degree of future offshoring of jobs is hard to judge, but big-team programming in a mainstream language is probably a poor bet for job security and good wages.
posted by Idcoytco at 1:42 PM on April 9, 2007

Try to not specialise.

The biggest difference between a CS graduate and someone who did a 4 month Java class is that the CS person knows the fundamentals. Concentrate on the basics and on figuring out what you find interesting and fun. The "fun" part is important.

Just like learning to play an instrument -- if it's not fun for you, you'll never put in the hours of practice required to be a master of the art.
posted by phliar at 1:52 PM on April 9, 2007 [1 favorite]

Security is huge these days-but you have to have something else too. If you're looking to be a sysadmin: se a Sys admin but focus on security -or something like that. ALso, if you know UNIX and Windows, you're in better shape for getting jobs.
posted by aacheson at 2:12 PM on April 9, 2007

By the way, make sure to network a lot in school. Very useful to have friends with connections to help get you jobs. Dealing with recruiters is a pain.
posted by delmoi at 2:32 PM on April 9, 2007

To summarize what I picked up so far:
  • Be a locksmith, not a key.
  • Network, network, network.
  • C++ probably isn't going to go away anytime soon.
  • How much you make has more to do with who you're working for than what you're doing.
  • Participate in an open-source project this summer, then a 'real'(paying?) internship next summer, once my chops are up to it.
Thanks, everybody, for your input!
posted by Orb2069 at 9:20 AM on April 22, 2007

« Older What to do in Santiago   |   Tips for getting a mortgage with bad credit Newer »
This thread is closed to new comments.