Which areas can I specialize in with a degree in computer science?
November 21, 2017 11:15 AM   Subscribe

I find myself at a cross roads, I have just finished my internship and with it my time in college. My time as an intern was spent in web development specifically in C# and Javascript. I'm not sure how to feel about it, on the one hand I like UI work but web in general was not very exciting. One of my friends in this career is looking for jobs in the business analyst field, I asked if he was doing this to avoid programming, he told me he was very interested in the large volume of data that is handled in that position. In a way he opened my mind, I don't know which area I want to go in anymore.

First let me start by saying I don't dislike web development, it has its things but I would prefer to be solving complex problems. The sort of thing I was doing in my internship wasn't complex it was rather mundane. I'm also interested in mobile development but like web it seems too simple for me.

My advantage, or what I think is my advantage is that I'm a very social person but I'm also very good in the technical area of my career.

However, I like UI work as well and it seems to me that things like big data, machine learning and cloud computing don't have a lot emphasis on UIs. I think those are the areas I like the most and what suits me best but like I said I don't want to focus just on the back end of things.

I love my career, but as a new graduate without a job and a whole lot of areas to choose from, I'm not exactly sure where to go.
posted by Braxis to Work & Money (10 answers total) 4 users marked this as a favorite
I think this is incredibly hard to answer for someone else, especially given the amount of information here. There is a world of possibilities of paths you can take with a CS degree, each with its own pros and cons. The good thing, and I think the most important thing to remember, is that a decision you make now doesn't have to be permanent. I know MANY software folks (myself included) who have had careers involving a broad variety of skills, companies, roles, and projects. So don't stress too much about finding the perfect thing right away.

I will make a few suggestions.
  1. You might be better off going with a large tech company (NOT a large non-tech company) because it will generally be easier to move around and try different things within a single company than it is to hop between companies and change focuses at the same time. If you can get into a Facebook, Google, etc. you will have many options available, a lot of people and material to learn from, and it will open doors for other things down the road.
  2. I don't think that complex problems and doing UI work is inherently incompatible, but it's going to depend on your definition of "complex problem" and the company/project. I've worked on some UI-heavy projects in both web and mobile that were incredibly complex, especially when building frameworks and foundations for multiple products that millions of people around the world will be using. But you have to accept that all roles will involve some stuff that seems mundane, and often you'll have to pay some dues and prove yourself before you can tackle the most challenging things.
  3. You said you don't want to do mobile development, but some of the most interesting and complex UI stuff I've done has been on mobile. I don't find it particularly similar to web development, so I wouldn't lump them together.
  4. Anecdotally (and with some admitted bias), projects involving C# seem to be more often mudane "line of business" software than the cutting edge, exciting, complex stuff. I'm sure there are many counterexamples, but that's what I've observed in my career. So it might serve you well to spend some time bolstering your skills in technologies outside of the Microsoft ecosystem to open up more possibilities.
Anyway, I don't know how much help any of that is. I think my advice boils down to:

Find a job that you can get now (or with a bit of skill brush-up) in a company where technology is the main focus, and where there are enough different projects that you'll be able to move around and try different things. Then don't stress about it. As you work, you will find your path.
posted by primethyme at 11:33 AM on November 21, 2017 [3 favorites]

Browse through some of the big career sites like Monster.com, Airbus, Microsoft, Boeing, Disney etc., and pay attention to what peaks your interest.

Look for companies and roles where you use your computer science degree to build things and avoid companies that simply buy IT solutions you get to support.

Best of luck!
posted by hh1000 at 12:14 PM on November 21, 2017

Don't discount non-tech companies. I work for a HUUGE (like, Fortune-single-digit) company that is not primarily a tech company. I work with a small team of engineers in a larger R&D department, and we're working with big data, machine learning, and natural language processing. However, my team is also responsible for writing the tools the rest of the department needs to function day-to-day (plenty of UI work there), and the integration points between our software and the environments it runs in (which is a big , complex architectural challenge).

So, also look for R&D groups mainly staffed with scientists doing the kind of data science you're interested in who also need the engineering support you can provide. The role has its quirks (I also spend a lot of time doing help desk type support for our non-techy coworkers), but I'm definitely not pigeonholed into one type of software development.
posted by natabat at 12:20 PM on November 21, 2017 [2 favorites]

Another way to think about this is to think about what problem domains you'd like to work in. Health, finance, government (and lots of others) have unique, interesting problems that require technology to solve, and pretty much all of them are going to be using machine learning, big data, mobile etc because that's where the technology opportunities are for them.
If you feel drawn to working in a particular area you can learn more about its unique challenges and it will give you a way to apply your skills in a way that will feel meaningful to you. It may also help you with finding a job because you will have some focus beyond "work with cool technology" (which of course all CS grads want to do).
posted by crocomancer at 12:21 PM on November 21, 2017

One direction you might consider is embedded systems development. Its very different from UI work but (I think) very challenging and fun. I also mention this because all the embedded guys who seem to be actually useful, are all nearing retirement age.
posted by Dr. Twist at 3:58 PM on November 21, 2017 [1 favorite]

Domain-specific data knowledge & applied subject matter expertise when paired with data analytic and programming savvy are very valuable -- by comparison with generic programming/platform skills.
posted by lathrop at 5:18 PM on November 21, 2017

Here's my advice: Interview a bunch of places, find one that pays well and where you like the people, and go there.
You have all the time in the world to try things out. No one expects you to specialize in your first job out of school. I have worked in many different types of companies in my time in tech, and I definitely did not guess right about what I would enjoy the first couple of times I tried. I really do think that for your first job (or even first couple jobs), you should be going somewhere you feel that you can learn a lot, where there are people who can teach you a lot, that is paying you well enough (so don't feel like you must maximize on pay but don't completely ignore it), and where you like the people you'll have to see every day. Go out there and talk to companies. We can't tell you what you'll click with, and I promise you have plenty of time to change your mind if you don't like the first one you try.
posted by ch1x0r at 7:06 PM on November 21, 2017 [3 favorites]

My experience matches ch1x0r's advice.

Go to a city that has enough tech jobs so you can easily switch jobs when you want, or at least, a company large enough that you can try many things -- a great question to ask your interviewers is how well the company facilitates changing teams within the company.

I did not think I would be working in my current field when I graduated (you would not have guessed it based on my coursework), but here I am. You would not have guessed it based on my first job out of college, either, and you would not have guessed my first job out of college based on my college internships. I've learned a lot on each of these teams and am still learning.

Finally, I point you to this talk by the excellent Tanya Reilly: when you say that you might not get to do UI work, have you considered that UIs may not necessarily be graphical? I don't mean command line tools, either -- rather, any useful system has interactions. API design is still UI design, e.g. Per the talk, every system is a frontend, every system is a backend, and at all these seams, there is an interaction to be designed, and a user for whom to design.
posted by batter_my_heart at 9:59 PM on November 21, 2017 [1 favorite]

Nthing everything said above.

I'll also note that the intersection of large data volumes + UI work is data visualization / reporting - for example something like Tableau but there are loads of other things like that, and a lot of demand for it.
posted by Xany at 10:10 PM on November 21, 2017

(This isn't quite about which job to get but)

I've seen a lot of people fall into the trap of trying to work on complex or impressive problems. People who had some grounding in CS, or wanted to get more, and would flock to anything labeled 'algorithms' as a result. Beware of this path. Algorithms are excellent and complex problems are engaging and recommended, but seeking them by pushing away things you perceive as simple or rote is a potential mistake. Picture it as developing your skills as a scientist: there's a portion of brilliance, but there's also a whole lot of cleaning glass bottles and making sure that your papers are readable - and if you skip the grunt work, you'll never get those fundamentals. You don't want to be that person who can get it right in theory but doesn't know the C++ class syntax to build it.

ch1x0r has it pretty much right: interview a lot, find a team you like, join that team. And to refine that: when you're interviewing, if you can learn who would be your boss and that person is capable, that's vital. If you see someone on the team who knows what you want to know and does what you want to do, take that job and work hard to learn from them.
posted by tmcw at 12:06 AM on November 22, 2017

« Older Searching for the best resources for information...   |   Record digital video without distortion? Newer »
This thread is closed to new comments.