Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

As a relatively new computer science student, I am trying to find my niche within this broader field. My main goal is not academia but, well, a job. As such, I want to choose a specialization or two that will provide two benefits: 1. Interests me. I will find the work to be engaging and enjoyable. 2. I can actually get a job doing it.

My more rational brain is encouraging me to do something like database work or web development, seeing as there will likely be an ongoing need for that type of work. On the other hand, I am finding myself attracted to things like artificial intelligence and machine learning, as they both seem really fascinating. I could see myself doing some really exciting things in that area. However, I often get the impression that it's more of an academic thing than something with actual industry demand. (Though that's just my immediate perception.)

Do you think an AI specialization is likely to open up sufficient job prospects. Although it seems interesting, I'm the kinda person who is fine with doing work that isn't necessarily that interesting, and I'm more concerned with job availability and security, at this point in time.

Your thoughts are appreciated...thank you!

share|improve this question

closed as off-topic by MichaelT, gnat, GlenH7, Dan Pichelman, k3b Oct 1 '13 at 19:46

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – MichaelT, gnat, GlenH7, Dan Pichelman, k3b
If this question can be reworded to fit the rules in the help center, please edit the question.

1  
This question will probably get killed. Try rewording it to something along the lines of "which commercial domains and products are currently using some flavor or subset of AI", and mention within how it relates to your career choices. As to your actual question, "I try to never skate to where the puck is, but to where it is going to be" - Wayne Gretzky. –  kylben Oct 23 '11 at 4:48
add comment

4 Answers

I hate to be the bearer of bad news, but as a recent computer science graduate specializing in A.I. and machine learning (ML) I figure I'm in a decent position to weigh in.

So, as the other answers mentioned, there are indeed a great deal of industry applications for AI/ML and focusing your coursework around these subjects won't impair your ability to land a great corporate job as any computer science degree is good enough.

However, if your planning on just getting a B.S., then don't expect to actually do anything remotely related to AI/ML in industry. While its true nearly all large tech firms (Google, Microsoft, facebook, etc.) do a great deal of work on AI/ML applications, that work is nearly universally done by people with PhD's. Even if your on a team specializing in AI/ML (e.g. Google's search engine performance team), your day-to-day workload will be very similar to that of another, non AI/ML, team.

The reasoning behind this is quite sound; AI and ML are extremely bleeding edge disciplines involving an overwhelming amount of different technologies and mathematics. Unlike programming a database, designing a new machine learning algorithm isn't a skill one can pick up on the job, and an undergraduate specialization simply isn't enough preparation for robust algorithm design.

So, I present to you three alternatives:

  1. Take all of the AI/ML course you want in college, with the assurance that it won't hurt your job options, but then prepare to transition to AI/ML as a hobby once you enter the workforce.
  2. Specialize in AI/ML and go on to get your PhD in it (or at least a Masters) before heading out into the corporate workforce.
  3. Find an 'alternative' job that allows you to utilize your AI/ML skills. Big companies don't like giving AI/ML work to those with just a BS, but tech startups don't care.

I sincerely hope this helps and doesn't dissuade you from pursuing AI/ML to its utmost. There are fascinating subjects, and I wish someone had informed me about the difficulties in working within them not so that I could choose different subjects, but so I could better prepare myself for the long journey ahead.

share|improve this answer
2  
A fourth alternative: Many companies offer educational programs, which includes paying for some (if not all) of further education. Depending on your financial situation, it might be best to enter the workforce (preferably in a job you actually enjoy), then go after a Masters and/or PhD program with assistance from your employer. Especially good if your employer needs/wants people with graduate-level education in your area of interest. –  Thomas Owens Nov 9 '11 at 20:45
    
If I were in the asker's shoes, I think I'd rather try writing my own AI-based application to either bring to the market or distribute open-source for street cred than the time/money sync of getting a PhD in today's academia. –  Erik Reppen Jun 22 '13 at 18:45
add comment

There are tons of real-world AI applications, just a few examples:

  • Autonomous vehicles (Robotics)
  • Industrial quality inspection (Computer vision)
  • Face recognition (Computer vision)
  • Medical computer vision
  • Search engines (Natural language processing, computer vision)
  • Computer games (Planning, Path searching etc.)
  • Computer algebra systems (Symbolic computation)
  • Algorithmic trading
  • "Smart" weapons
  • Customer service chatterbots

Of course, there are far fewer positions for experts in those fields, than e.g. for database administrators, but there are also far fewer experts in those fields. I'm convinced the people inventing all these things can make higher salaries than Average-Joe Database Programmer.

share|improve this answer
add comment

Netflix, Amazon, Google and a number of other companies depend on clustering and classification algorithms, Markov and Bayesian models, and other machine learning techniques for search, recommendations, and mining their customer base. A large number of companies will eventually benefit from applications of these technologies, if they aren't already directly or indirectly using them.

Even if you were to pick an area with even more remote job prospects, it never hurts to study what you're most passionate about. Figuring out how databases work or how to do web development isn't hard (up to a certain level of expertise) and isn't really something you need to focus on in an undergraduate program; no matter what you do in a 4 year degree, you're only going to have what amounts to a basic survey of the field when you're done, and you'll be more valuable for your ability to dig into problems and solve them than for the specifics of your knowledge.

I'm one of the quiet majority of software developers that never even flirted the computer science program during my undergraduate degree. Chances are that what you end up studying will have only a little bit to do with what you do for work, anyway, unless you are the sort of person that can't advance beyond what you've been "trained" to do. If you're after "training", an undergraduate degree isn't what you need anyway, and if you're expecting to be successful in the software industry, you'll need to be able to think and solve a lot of different kinds of problems. Focus on developing your problem-solving skills with something you're excited about now, and you'll be fine.

share|improve this answer
add comment

Specialty is Less Important Than Mastering the Craft of Code

It sounds like what you care about is job prospects in general. For that, you want to focus on what the comp. sci doesn't teach you, which is the craft of writing code well. Having subject matter to focus on that interests you as you self-teach is the most important thing, IMO. That said, choosing AI will suggest you enjoy a challenging problem which is something most of us like to see in a prospect so I'd say you can't go wrong with AI if the ultimate goal is just to establish a career as a programmer.

Self-Teach What They Can't

So don't sweat the specialization. Most general application developers only care about your ability to generally handle any problem and whether you can write lean, mean, maintainable code. Just be prepared to self-teach on those more pragmatic aspects as you go.

On that front I would focus on learning to appreciate more general principles first and to always put them first when evaluating what sorts of methodologies/patterns/etc. you want to use. For instance a lot of devs glom on to complex design patterns before they understand the value of basic fundamentals OOP first which leads to them doing silly things like implementing complex stuff that could have been much more elegantly handled by language features.

Take What They Teach About the Craft With a Grain of Salt

Profs teaching comp sci might have a lot of valuable skills to impart but still aren't necessarily exemplars when it comes to learning how to write code professionally so learn to develop your own opinions even if you have to accommodate their style preferences for the A. For instance, KISS and DRY are typically the first casualty of over-solving the problem but they NEVER should be. It's almost always easier to go back to a simple solution and expand on it to accommodate new, more complex needs, than it is to solve a problem you don't have yet and then maintain and build on that needless complexity often at a geometric-ish rate moving forward. I've seen countless Java and C# code that doesn't understand this. Write code like a good martial artist uses strength. No more and no less than exactly what was needed. (I'm not a martial artist so maybe that's some BS I heard somewhere but hopefully the point is clear)

Languages

Try to come out of school with at least three at-least somewhat popular but dissimilar languages in your pocket and advanced knowledge of at least the one that you like working with the most. Make sure at least one doesn't have c-based syntax. Understanding languages as a series of design tradeoffs is invaluable and only having functional literacy in one language tends to be a stigma, at least to web developers.

Consider Demand AND Supply

Don't fall into the trap of assuming the highest demand languages will make it easier for you to find work. Java devs for instance have to deal with a lot more arbitrary filtering because their resumes are always just one in a pile of 10,000. Whereas I'm fond of being primarily a JavaScript dev, because all I really have to do is focus on honing my skills and not worry as much about minutiae in my resume that will get my resume tossed into the trash by some HR gatekeeper before an engineer even looks at it. A huge supply can make getting your foot in the door much more difficult than lower-demand yet still reasonably popular technologies can. Ultimately you're better off focusing on things you're enthusiastic about learning because developers who don't continue to self-teach after school are basically taking a slow slide into a failed career as a developer if they can't fast-track to management quickly enough.

Shameless Prod Towards Own Language Preference/Hint: Since you like AI, it seems likely to me that you'll be picking up some lisp-variant. (I'd be dubious of a school that stuck with Java or C# for AI). JS is much-inspired by Scheme and strong JS devs aren't easy to find. Not to mention JS has its hands in just about everything short of embedded apps nowadays.

There's Only One Way to do it Right

People fond of saying this tend to dislike considering every way before they decide on a preference. It should always smell like snake-oil when expressed in this manner. That said, we're all guilty of it from time to time. I just got my chops rightfully busted for such a statement on SO today in fact.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.