Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: CS Researchers, why did you choose your subfield and niche?
56 points by Brazilian-Sigma on July 19, 2020 | hide | past | favorite | 21 comments
My background:

CS rising junior, indecisive about choosing a sub field.

I want to pursue CS research before I graduate for its own sake and partly to compensate for my lackluster GPA for grad school. But each field seems to have a pet peeve:

1) AI/machine learning: too saturated, fear of an AI winter

2) Networks/security: boring, reading a research paper seems torturous

3) Bioinformatic/quantum computing: may never find their place in real world and die out

Etc.

It continues to amaze me how some people know exactly what they want to do in their freshman year or even earlier. My question is: what motivated you to pursue what you're doing right now and at what stage in your academic career?




My advice: don't worry too much about picking a field (and definitely don't focus too much about what people who happen to be the same age as you are up to -- it's a big world).

'elonmollusc's advice is really sound: at least at the beginning, choose the advisor or collaborators, not the subfield. You can probably get yourself interested in any problem if you put effort into it and enjoy the work or the people you're working with. And even if you don't enjoy it, you'll learn something about your own preferences and what kind of environment and style of work you want to build around yourself. Is there a class you've taken where you really enjoyed the material or the professor's style? Go to their office hours and talk to them about research. It's even better if you bring some of your own ideas for what you might be excited to work on (perhaps keying off some of the professor's own recent work; do you have an idea for a way to extend it or a new place to try it?) -- faculty love it when students are a source of new ideas.

If you want to do grad school in CS, here is some stock advice:

- Read some of the essays that people have written about "what grad school in CS is like." I did an interview on this with my friend Eugene Wu (http://www.pgbovine.net/PhD-interview-eugene-wu-keith-winste...), and our friend Adam Marcus (http://marcua.net/writing/gradschool-guide/) also wrote a guide after finishing his PhD. Our other friend Phil Guo also wrote a depressing book about his (not-so-good, but also not horrible) time in grad school at Stanford (http://pgbovine.net/PhD-memoir.htm), and he ultimately ended up in a great job where he seems happy and productive (and now tenured) too.

- Read some of the advice for grad-school applicants, e.g. Michael Ernst's (https://homes.cs.washington.edu/~mernst/advice/) and Jennifer Rexford's (https://www.cs.princeton.edu/~jrex/advice.html) and Justine Sherry's (http://www.eecs.berkeley.edu/~justine/advice.pdf)

- Think real carefully about "Why do you want to go to grad school?" Do you want to use computational thinking to help people in a tangible way? Or do you want to learn about computer science for its own sake, as a quest for knowledge? Do you think you would enjoy a teaching-focused job, or an industrial research job, and these require a Ph.D.? All of these can be great answers, but they are different. What projects or independent activities have you done (things nobody told you to do) that you enjoyed or found satisfying? How can you aim to best continue that? (By contrast, "I did well in undergrad and would like to continue my education" is not a good reason to start a Ph.D. in computer science!)

- Consider taking time off between undergrad and grad school, or at least deferring for a year after you are accepted. Depending on the subfield, the people that do this often have a real leg up, because they can bring a nontraditional perspective to the table. There's little benefit in being "smarter" than everybody else in the group if all that means is that you are saying something first that somebody else was going to say anyway 90 seconds later. It's better to be the one contributing ideas (about new problems worthy of attack OR ways to solve them) or a point of view that wasn't going to get contributed at all. And the people who have exposed themselves to more diverse environments often have had more time to understand themselves and what kind of environment they need to build around themselves (advising, style of work) to be happy and productive. Depending on your advisor's style and the culture of the department, grad school can be almost a totally unstructured and self-directed environment (quite different from undergrad) so you really don't want to go into it as a sort of default. (If you are saying to yourself, "but I don't know what I would do during that year off," that is not a good reason to make grad school become your default! By contrast, if you are saying, "but I am in theory or another mathematically inclined subfield and literally the only way to get better at it is to keep doing it; there is nothing the outside world has to offer me," then maybe you are right -- theorists often do seem to adhere to this kind of thinking.)

- Start thinking about how to demonstrate (by December of the year when you plan to apply) to your letter writers that you have the initiative/resourcefulness/creativity/grit and can see a project through to completion even over obstacles. (Ideally, by participating in a research project that submits a paper for publication.) The letters of recommendation do matter a lot, probably more than anything else in the application, and the letters will ideally be from people that the readers can trust are well-calibrated to speak to your promise at doing CS research.


One more small piece of advice: try to get on whatever mailing lists you need to to start attending the research talks at your college or university. (Some of this might be harder in the age of Zoom/economic collapse, but still...) This can vary based on what type of college you are attending, but if you are at a research university, there can be a lot of these: departments or research groups may have seminar series/colloquia, and then every doctoral student is going to have a public defense, and every job candidate who wants to be a professor is going to do a public "job talk," and at some places, every junior-faculty member who wants to get tenure has to do a "tenure talk," etc. These are almost always just open to anybody who wants to come.

So there may be a lot of opportunities for you to see a diverse range of talks (many of which will be intended for a general CS audience, at least for most of the talk) and get a sense of what people find exciting/interesting/achievable on various frontiers of CS research in different subfields. For the job talks at least, the candidate is sometimes giving the best talk they will ever give in their life, so it's possible to see something compelling in a subfield that you might not otherwise glimpse just by taking a course or something. And (this is more applicable to real-life talks) if you like you can usually go up to the speaker afterwards to ask them something privately and usually presenters are flattered to have somebody interested. Or if somebody in the audience asks a question that you find interesting, same thing. This might seem awkward and I know it might not seem this way, but it's hard to truly embarrass yourself by showing interest or enthusiasm -- you're in college! (As a student, I once found myself in a conversation with some random dude about the Gamow/Stern/Knuth elevator results after we both waited for the elevator for a long time after attending a talk at MIT, and when we were done I was like, "By the way, who are you?" and he looked a little surprised and was like, "Uh, I'm Butler Lampson.")

If you're not at a research university, that may decrease the number of random research talks you can show up to, but it also suggests the faculty will be much more eager to collaborate with undergraduates and involve you in a material way in their research projects.


I'm a CS professor at a primarily-undergraduate U.S. college. I supervise two to four independent research projects or honors theses every year and have published papers and posters based on undergraduate research with my students as co-authors.

If you're going to pursue undergrad research, I don't recommend choosing based on field, but based on potential supervisors. Who are your favorite professors? What subjects have you really enjoyed and would like to explore further? A good project is at the intersection of what you're interested in, what your faculty mentor can realistically supervise, and what you can complete and bring to a good result in 1-2 years. You're going to get the best experience if you're able to work with a faculty mentor you like that can teach you about the research process and devote time to mentoring you. Those skills, more so than any specific project you complete, are what will help you be successful in grad school.

There are probably examples of successful researchers who started in one area as undergrads and stayed with it for decades, but it's more common to switch as your interests change and you get more exposure to different subareas of CS, particularly once you get into a grad program and get more exposure to the open problems in different fields. Grad schools will not require you to stick with the area or theme of research that you may have been pursuing when they accepted you.

To give you a concrete example: my first undergrad research project was writing a simulator for acoustic reverb. I continued working with the same advisor, but we switched to projects related to imaging and remote sensing, which led to experimenting with weird neural network architectures (before the current boom in deep learning really took off) and their applications to multispectral imaging. When I started my Ph.D. program, I was originally working on nonlinear optimization and its applications to sensors, but ended up switching to performance modeling and queueing theory, which became the subject of my dissertation. My research has evolved even more since I became a faculty member and shifted to working with real undergrads; I've recently been doing a lot of qualitative research with community organizations about their uses of data and analytics, which is only tangentially related to traditional disciplinary CS research.


I am a PhD as well. Solid advice picking the right supervisor. That is one of the most critical factors to your success (be it publishing, having a career as an academic or getting into grad school in your situation). Don't ask me how to pick the right advisor because I think it is partly fortune, and partly the fit for you. Key thing is to find something you are excited about (and so is the advisor).

Btw .. three pieces of random advice:

- Go to the best grad school possible. Below a certain threshold, it is pointless.

- Learn to write well, and learn to read research papers in your field of interest.

- Get good taste in your problem to solve. When I was starting out my post-PhD life, a very senior Director/VP-level scientist at IBM Research asked me if I had a good taste in picking problems. I gave a BS answer since this was during my job search/interview loop. But I have thought back to that question a lot as I hit mid-career. I suggest you watch the first keynote at MobiSys 2020 (free on youtube). I think you need to pick problems that are within your capability and then build on the skills you have picked up to work on the next better problem, and so on ... all perhaps in sight of a worthy problem at the very end or on the road. I wish I gave this deep thought early in my career .. maybe I'd be more satisfied in my career (but hey .. I still have time .. maybe I'll figure it out one day!).


Not a CS researcher but I would say that advisor is extremely important, but also within the field you are interested in. A good advisor can win you over only so much - there are people who switch advisors because of research topic reasons too (not just because they feel abused). Though if you are in the topic you want to continue in, a good advisor can make a huge, huge difference in terms of getting the most out of you and also promoting you among his /her peers.

To some extent I would not choose based on current market trends - if you want to go to grad school, you're looking at a job market many years down the road (esp. if you do a PhD). However, "saturation" is an issue and this could be demotivating. You definitely don't want to choose a boring topic. If "Bioinformatic/quantum computing" is interesting to you but you're not sure of its applicability/potential but you find it interesting enough to study, I would say this is the perfect field for you to study. Maybe a "deep learning" type revolution is around the corner - or maybe you're going to be part of making it happen.

Not to say market trends are unimportant, but as elonmollusc says, you can end up changing your field of research later - so you should some extent study what interests you most at each moment in time.


Great advice. My undergrad thesis had nothing to do with my master’s thesis, which had nothing to do with my PhD thesis, and now my current job is straying farther and farther away from my grad school work. But the skills I learned by doing semi-independent research, coming up with ideas, solving new problems and what I learned from my advisors are what go me through all of that.


I'd be a little careful with your one-line dismissals of fields. Each field has hundreds of people dedicating their entire lives into it. It'd be offensive to them that someone who hasn't even done any research to think they can judge an entire field like that. Imagine a high school student who took a community college course and saying "University juniors don't know anything. I discovered that they just copy from Wikipedia." The advice in this thread is a great starting point.


Actually that is his genuine opinion which reflects his interest. I also happen to point to you that I would also be more careful to judge community college courses. There are people doing great things over there too - dedicating their entire life.


I'm a lecturer (assistant professor) in computer science at University of Kent in the UK. I did my undergraduate degree and Masters at Charles University in Czechia and later a PhD in Cambridge. Most of my work has been on programming languages.

How did I choose? Mostly by accident and I definitely did not plan this much in advance. I enjoyed web programming during my undergrad. I got interested in how to make web programming easier (and if you could write both client-side and server-side code in the same language - in the pre-Node.js and pre-transpiler days :-)) and I stared working on a project to translate .NET code to JavaScript. Through a few random lucky accidents, I ended up working with F# and met Don Syme from Microsoft Research. This got me the idea that I could actually do PhD! Through working with Don, I got interested in functional programming and PL research more generally and then applied for PhD with some ideas about reactive programming.

I have no idea how to choose a field or plan a career (I only have one data point!) In my case, it was a mix of doing things I found interesting (without thinking about why this might be useful) and meeting a fantastic mentor at the right moment.

In any case, good luck, no matter what field you end up choosing!


It’s ok to change. It’ll evolve as you get more experience and exposure. It’s not that uncommon to change areas/advisors even a few years into a PhD.

I wanted to go into PL and compilers until I met the prof who later became my PhD advisor. He introduced me to HCI, which still let me dive into some PL topics too!


The research field chooses you. Who do you have access to that influences your perspective on the world. I had professors in undergrad who focused on cryptography and security. I did several independent studies in cryptography. That led me to work at a company that worked in cryptography, and programming language design. the job I was put on at that company had me working on programming language design for machine learning. My friend started working in physical oceanography, and gained access to large amounts of acoustic ocean monitoring data. at the same time my dad started asking questions about how to measure light pollution from photographs, pushing me into image processing. I decided to go back to school for machine learning in order to sort out that data. I focused on identifying whale songs and measuring light pollution, pushing me into machine learning for signal processing. Now I work in machine learning research for identifying security vulnerabilities in compiled binaries. My side projects research now is in natural language processing and information retrieval on medical texts. This is because the graduate school I chose happened to be a medical University.


Because I liked the people in my department doing research in my niche! Unfortunately federal funding in the US disappeared almost overnight for my slice of CS, so I'm currently operating and publishing in a cross-disciplinary fashion in an industry research scientist position. I'm considering leaving the US for a faculty position to get back to the research I really enjoy... so don't do what I did. :)


I chose to focus on computational biology because I had an amazing professor that I wanted to work with. That being said, an amazing professor != amazing advisor... something I discovered when trying to finish my PhD and he decided to take a sabbatical to Kenya to do missionary work :(.

I got enough statistics and machine learning experience in graduate school to be doing machine learning research now as part of the defense industry. Even if machine learning seems like it might be too hot to touch, it will aid you in any number of jobs you could have in the future: automation, data science, etc. It really is perhaps the easiest sub field to cross disciplines. I've always been a PC gamer and the TD-Gammon paper really pushed me forward in my desire to do machine learning -- check it out, its a classic (https://www.bkgm.com/articles/tesauro/tdl.html).


Oh wow TD Gammon was also partially responsible for inspiring me into a machine learning -> data science direction :) My dad brought me up playing backgammon so I had a fair understanding of all the heuristics involved - it was amazing to see a computer could learn them fairly well by itself.

True about switching fields with ml, after a while in evolvable hardware I did a joint PhD in geography + computer science, and have been making socioeconomic simulations of various kinds for the last 10 years. Nowadays I'm trying to reacquaint myself with core cs research, as looking for a lectureship I realized I'm always going to be stronger teaching cs than geography.


Echoing what a lot of other posters are saying, I would strongly recommend considering advisor/group fit. Of course, research field also matters; it seems like you don't really like networking/security that much, so feel free to steer clear of those disciplines. However, let's say you meet an awesome AI prof, and their work is of moderate interest - that seems like a recipe for a good time, even if the field is saturated/there's an AI winter in our future.

Anecdotally, my first research position was the result of getting my last-choice internship for that summer. I thought I would hate it and was planning to quit after the summer. My advisor was incredible, and I ended up working in that lab for 3 years. That field (human-computer interaction) is now my primary discipline!


Not CS but I went to a lot of seminars and then picked the topic and advisor based on that.


>It continues to amaze me how some people know exactly what they want to do in their freshman year or even earlier.

It's pretty easy. People try things out and if they don't like it, they pick something else. When someone appears to know what they want it is because they did the experimentation phase before they chose their field. It looks like you have the "experimentation phase" still ahead of you and there is no shame in that.


I do security R&D. I chose security in uni because it sounded sexy. Honestly, you sound like a pessimist. I don't work with networking often and only read papers I'm interested in.

Same for neural nets, I could rattle off 3 idea that no one is working on. I don't think the field is saturated.

Just look at what you enjoy doing and specialize in that. You don't need to mixmax the decision and try to predict the future.


Don't be pessimistic you will always find your spot no matter what. Just follow your interest. Review again the papers and research your seniors do and see which one interests you most. Choose something that you like to do all day.


Unified Communications security. I needed to work in a project for multi vendor interoperability. Security in Unified communications was a novel field back in 2010, now is taking off again.


Pick what you can read and enjoy.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: