
Ask HN: CS Researchers, why did you choose your subfield and niche? - Brazilian-Sigma
My background:<p>CS rising junior, indecisive about choosing a sub field.<p>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:<p>1) AI&#x2F;machine learning: too saturated, fear of an AI winter<p>2) Networks&#x2F;security: boring, reading a research paper seems torturous<p>3) Bioinformatic&#x2F;quantum computing: may never find their place in real world and die out<p>Etc.<p>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&#x27;re doing right now and at what stage in your academic career?
======
keithwinstein
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...](http://www.pgbovine.net/PhD-interview-eugene-wu-keith-
winstein.htm)), and our friend Adam Marcus
([http://marcua.net/writing/gradschool-
guide/](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](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/](https://homes.cs.washington.edu/~mernst/advice/))
and Jennifer Rexford's
([https://www.cs.princeton.edu/~jrex/advice.html](https://www.cs.princeton.edu/~jrex/advice.html))
and Justine Sherry's
([http://www.eecs.berkeley.edu/~justine/advice.pdf](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.

~~~
keithwinstein
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.

------
elonmollusc
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.

~~~
brutus1213
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!).

------
flowerbeater
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.

~~~
scared2
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.

------
tpetricek
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!

------
azhenley
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!

------
probinso
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.

------
electricslpnsld
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. :)

------
gnujosh
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](https://www.bkgm.com/articles/tesauro/tdl.html)).

~~~
sideshowb
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.

------
nikeshm
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!

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

------
imtringued
>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.

------
TACIXAT
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.

------
scared2
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.

------
spicyramen
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.

------
DSingularity
Pick what you can read and enjoy.

